# © 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html#License
LANG_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:
#    _____________________________________________________
#    |  LANG_SOURCE_LOCAL =   myLocale.txt ...
#
#  * To REPLACE the default list and only build with a few
#    locales:
#    _____________________________________________________
#    |  LANG_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)
LANG_SYNTHETIC_ALIAS = az_AZ.txt az_Latn_AZ.txt bs_BA.txt bs_Latn_BA.txt\
 en_NH.txt en_RH.txt fil_PH.txt he_IL.txt id_ID.txt\
 in.txt in_ID.txt iw.txt iw_IL.txt ja_JP.txt\
 ja_JP_TRADITIONAL.txt mo.txt nb_NO.txt nn_NO.txt no.txt\
 no_NO.txt no_NO_NY.txt pa_Arab_PK.txt pa_Guru_IN.txt pa_IN.txt\
 pa_PK.txt sh.txt sh_BA.txt sh_CS.txt sh_YU.txt\
 shi_MA.txt shi_Tfng_MA.txt sr_BA.txt sr_CS.txt sr_Cyrl_CS.txt\
 sr_Cyrl_RS.txt sr_Cyrl_YU.txt sr_Latn_CS.txt sr_Latn_RS.txt sr_Latn_YU.txt\
 sr_ME.txt sr_RS.txt sr_XK.txt sr_YU.txt th_TH.txt\
 th_TH_TRADITIONAL.txt tl.txt tl_PH.txt uz_AF.txt uz_Arab_AF.txt\
 uz_Latn_UZ.txt uz_UZ.txt vai_LR.txt vai_Vaii_LR.txt zh_CN.txt\
 zh_HK.txt zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_TW.txt zh_MO.txt\
 zh_SG.txt zh_TW.txt


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


# Ordinary resources
LANG_SOURCE = af.txt agq.txt ak.txt am.txt\
 ar.txt ar_EG.txt ar_LY.txt ar_SA.txt as.txt\
 asa.txt ast.txt az.txt az_Cyrl.txt az_Latn.txt\
 bas.txt be.txt bem.txt bez.txt bg.txt\
 bm.txt bn.txt bn_IN.txt bo.txt br.txt\
 brx.txt bs.txt bs_Cyrl.txt bs_Latn.txt ca.txt\
 ce.txt cgg.txt chr.txt cs.txt cy.txt\
 da.txt dav.txt de.txt de_AT.txt de_CH.txt\
 de_LU.txt dje.txt dsb.txt dua.txt dyo.txt\
 dz.txt ebu.txt ee.txt el.txt en.txt\
 en_001.txt en_150.txt en_AG.txt en_AI.txt en_AT.txt\
 en_AU.txt en_BB.txt en_BE.txt en_BM.txt en_BS.txt\
 en_BW.txt en_BZ.txt en_CA.txt en_CC.txt en_CH.txt\
 en_CK.txt en_CM.txt en_CX.txt en_CY.txt en_DE.txt\
 en_DG.txt en_DK.txt en_DM.txt en_ER.txt en_FI.txt\
 en_FJ.txt en_FK.txt en_FM.txt en_GB.txt en_GD.txt\
 en_GG.txt en_GH.txt en_GI.txt en_GM.txt en_GY.txt\
 en_HK.txt en_IE.txt en_IL.txt en_IM.txt en_IN.txt\
 en_IO.txt en_JE.txt en_JM.txt en_KE.txt en_KI.txt\
 en_KN.txt en_KY.txt en_LC.txt en_LR.txt en_LS.txt\
 en_MG.txt en_MO.txt en_MS.txt en_MT.txt en_MU.txt\
 en_MW.txt en_MY.txt en_NA.txt en_NF.txt en_NG.txt\
 en_NL.txt en_NR.txt en_NU.txt en_NZ.txt en_PG.txt\
 en_PH.txt en_PK.txt en_PN.txt en_PW.txt en_RW.txt\
 en_SB.txt en_SC.txt en_SD.txt en_SE.txt en_SG.txt\
 en_SH.txt en_SI.txt en_SL.txt en_SS.txt en_SX.txt\
 en_SZ.txt en_TC.txt en_TK.txt en_TO.txt en_TT.txt\
 en_TV.txt en_TZ.txt en_UG.txt en_VC.txt en_VG.txt\
 en_VU.txt en_WS.txt en_ZA.txt en_ZM.txt en_ZW.txt\
 eo.txt es.txt es_419.txt es_AR.txt es_BO.txt\
 es_CL.txt es_CO.txt es_CR.txt es_CU.txt es_DO.txt\
 es_EC.txt es_GT.txt es_HN.txt es_MX.txt es_NI.txt\
 es_PA.txt es_PE.txt es_PR.txt es_PY.txt es_SV.txt\
 es_US.txt es_UY.txt es_VE.txt et.txt eu.txt\
 ewo.txt fa.txt fa_AF.txt ff.txt fi.txt\
 fil.txt fo.txt fr.txt fr_BE.txt fr_CA.txt\
 fr_CH.txt fur.txt fy.txt ga.txt gd.txt\
 gl.txt gsw.txt gu.txt guz.txt gv.txt\
 ha.txt haw.txt he.txt hi.txt hr.txt\
 hsb.txt hu.txt hy.txt id.txt ig.txt\
 ii.txt is.txt it.txt ja.txt jgo.txt\
 jmc.txt ka.txt kab.txt kam.txt kde.txt\
 kea.txt khq.txt ki.txt kk.txt kkj.txt\
 kl.txt kln.txt km.txt kn.txt ko.txt\
 kok.txt ks.txt ksb.txt ksf.txt ksh.txt\
 kw.txt ky.txt lag.txt lb.txt lg.txt\
 lkt.txt ln.txt lo.txt lrc.txt lt.txt\
 lu.txt luo.txt luy.txt lv.txt mas.txt\
 mer.txt mfe.txt mg.txt mgh.txt mgo.txt\
 mk.txt ml.txt mn.txt mr.txt ms.txt\
 mt.txt mua.txt my.txt mzn.txt naq.txt\
 nb.txt nd.txt ne.txt nl.txt nmg.txt\
 nn.txt nnh.txt nus.txt nyn.txt om.txt\
 or.txt os.txt pa.txt pa_Arab.txt pa_Guru.txt\
 pl.txt ps.txt pt.txt pt_AO.txt pt_CV.txt\
 pt_GW.txt pt_MO.txt pt_MZ.txt pt_PT.txt pt_ST.txt\
 pt_TL.txt qu.txt rm.txt rn.txt ro.txt\
 ro_MD.txt rof.txt ru.txt rw.txt rwk.txt\
 sah.txt saq.txt sbp.txt se.txt se_FI.txt\
 seh.txt ses.txt sg.txt shi.txt shi_Latn.txt\
 shi_Tfng.txt si.txt sk.txt sl.txt smn.txt\
 sn.txt so.txt sq.txt sr.txt sr_Cyrl.txt\
 sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_XK.txt sr_Latn.txt sr_Latn_BA.txt\
 sr_Latn_ME.txt sr_Latn_XK.txt sv.txt sv_FI.txt sw.txt\
 sw_CD.txt sw_KE.txt ta.txt te.txt teo.txt\
 th.txt ti.txt to.txt tr.txt twq.txt\
 tzm.txt ug.txt uk.txt ur.txt ur_IN.txt\
 uz.txt uz_Arab.txt uz_Cyrl.txt uz_Latn.txt vai.txt\
 vai_Latn.txt vai_Vaii.txt vi.txt vun.txt wae.txt\
 xog.txt yav.txt yi.txt yo.txt yo_BJ.txt\
 yue.txt zgh.txt zh.txt zh_Hans.txt zh_Hant.txt\
 zh_Hant_HK.txt zh_Hant_MO.txt zu.txt

