# *   Copyright (C) 1998-2016, International Business Machines
# *   Corporation and others.  All Rights Reserved.
COLLATION_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:
#    _____________________________________________________
#    |  COLLATION_SOURCE_LOCAL =   myLocale.txt ...
#
#  * To REPLACE the default list and only build with a few
#    locales:
#    _____________________________________________________
#    |  COLLATION_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)
COLLATION_SYNTHETIC_ALIAS = de_.txt de__PHONEBOOK.txt es_.txt es__TRADITIONAL.txt\
 he_IL.txt id_ID.txt in.txt in_ID.txt iw.txt\
 iw_IL.txt mo.txt nb_NO.txt no.txt no_NO.txt\
 pa_Guru.txt pa_Guru_IN.txt pa_IN.txt ro_MD.txt sh.txt\
 sh_BA.txt sh_CS.txt sh_YU.txt sr_BA.txt sr_Cyrl.txt\
 sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Latn_BA.txt sr_Latn_RS.txt\
 sr_ME.txt sr_RS.txt zh_CN.txt zh_HK.txt zh_Hans.txt\
 zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_HK.txt zh_Hant_MO.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.
COLLATION_ALIAS_SOURCE = $(COLLATION_SYNTHETIC_ALIAS)


# Empty locales, used for validSubLocale fallback.
COLLATION_EMPTY_SOURCE =


# Ordinary resources
COLLATION_SOURCE = $(COLLATION_EMPTY_SOURCE) af.txt am.txt ar.txt\
 as.txt az.txt be.txt bg.txt bn.txt\
 bo.txt bs.txt bs_Cyrl.txt ca.txt chr.txt\
 cs.txt cy.txt da.txt de.txt de_AT.txt\
 dsb.txt dz.txt ee.txt el.txt en.txt\
 en_US.txt en_US_POSIX.txt eo.txt es.txt et.txt\
 fa.txt fa_AF.txt fi.txt fil.txt fo.txt\
 fr.txt fr_CA.txt ga.txt gl.txt gu.txt\
 ha.txt haw.txt he.txt hi.txt hr.txt\
 hsb.txt hu.txt hy.txt id.txt ig.txt\
 is.txt it.txt ja.txt ka.txt kk.txt\
 kl.txt km.txt kn.txt ko.txt kok.txt\
 ky.txt lb.txt lkt.txt ln.txt lo.txt\
 lt.txt lv.txt mk.txt ml.txt mn.txt\
 mr.txt ms.txt mt.txt my.txt nb.txt\
 ne.txt nl.txt nn.txt om.txt or.txt\
 pa.txt pl.txt ps.txt pt.txt ro.txt\
 ru.txt se.txt si.txt sk.txt sl.txt\
 smn.txt sq.txt sr.txt sr_Latn.txt sv.txt\
 sw.txt ta.txt te.txt th.txt to.txt\
 tr.txt ug.txt uk.txt ur.txt vi.txt\
 wae.txt yi.txt yo.txt zh.txt zh_Hant.txt\
 zu.txt

