# © 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html#License
RBNF_CLDR_VERSION = %version%
# A list of txt's to build
# Note:
#
#   If you are thinking of modifying this file, READ THIS.
#
# Instead of changing this file [unless you want to check it back in],
# you should consider creating a '%local%' file in this same directory.
# Then, you can have your local changes remain even if you upgrade or
# reconfigure ICU.
#
# Example '%local%' files:
#
#  * To add an additional locale to the list:
#    _____________________________________________________
#    |  RBNF_SOURCE_LOCAL =   myLocale.txt ...
#
#  * To REPLACE the default list and only build with a few
#    locales:
#    _____________________________________________________
#    |  RBNF_SOURCE = ar.txt ar_AE.txt en.txt de.txt zh.txt
#
#
# Generated by LDML2ICUConverter, from LDML source files.

# Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)
RBNF_SYNTHETIC_ALIAS = es_DO.txt es_GT.txt es_HN.txt es_MX.txt\
 es_NI.txt es_PA.txt es_PR.txt es_SV.txt es_US.txt\
 in.txt iw.txt no.txt sh.txt zh_HK.txt\
 zh_Hant_HK.txt zh_MO.txt zh_TW.txt


# All aliases (to not be included under 'installed'), but not including root.
RBNF_ALIAS_SOURCE = $(RBNF_SYNTHETIC_ALIAS)


# Ordinary resources
RBNF_SOURCE = af.txt am.txt ar.txt az.txt\
 be.txt bg.txt bs.txt ca.txt cs.txt\
 cy.txt da.txt de.txt de_CH.txt ee.txt\
 el.txt en.txt eo.txt es.txt es_419.txt\
 et.txt fa.txt fa_AF.txt fi.txt fil.txt\
 fo.txt fr.txt fr_BE.txt fr_CH.txt ga.txt\
 he.txt hi.txt hr.txt hu.txt hy.txt\
 id.txt is.txt it.txt ja.txt ka.txt\
 kl.txt km.txt ko.txt ky.txt lo.txt\
 lt.txt lv.txt mk.txt ms.txt mt.txt\
 my.txt nb.txt nl.txt nn.txt pl.txt\
 pt.txt pt_PT.txt ro.txt ru.txt se.txt\
 sk.txt sl.txt sq.txt sr.txt sr_Latn.txt\
 sv.txt ta.txt th.txt tr.txt uk.txt\
 vi.txt yue.txt zh.txt zh_Hant.txt

