# coverageLevels.txt		
# Copyright © 2023 Unicode, Inc.		
# CLDR data files are interpreted according to the		
# LDML specification: http://unicode.org/reports/tr35/		
# For terms of use, see http://www.unicode.org/copyright.html		
#		
# For format and usage information, see:		
# https://cldr.unicode.org/index/cldr-spec/coverage-levels.		
		
		
af ;	modern ;	Afrikaans
am ;	modern ;	Amharic
ar ;	modern ;	Arabic
as ;	modern ;	Assamese
ast ;	basic ;	Asturian
az ;	modern ;	Azerbaijani
be ;	modern ;	Belarusian
bg ;	modern ;	Bulgarian
bgc ;	basic ;	Haryanvi
bho ;	basic ;	Bhojpuri
blo ;	moderate ;	Anii
bn ;	modern ;	Bangla
br ;	moderate ;	Breton
brx ;	basic ;	Bodo
bs ;	modern ;	Bosnian
bs_Cyrl ;	basic ;	Bosnian (Cyrillic)
ca ;	modern ;	Catalan
ceb ;	moderate ;	Cebuano
chr ;	modern ;	Cherokee
cs ;	modern ;	Czech
csw ;	basic ;	Swampy Cree
cv ;	moderate ;	Chuvash
cy ;	modern ;	Welsh
da ;	modern ;	Danish
de ;	modern ;	German
doi ;	basic ;	Dogri
dsb ;	modern ;	Lower Sorbian
el ;	modern ;	Greek
en ;	modern ;	English
eo ;	basic ;	Esperanto
es ;	modern ;	Spanish
et ;	modern ;	Estonian
eu ;	modern ;	Basque
fa ;	modern ;	Persian
ff_Adlm ;	basic ;	Fula (Adlam)
fi ;	modern ;	Finnish
fil ;	modern ;	Filipino
fo ;	moderate ;	Faroese
fr ;	modern ;	French
fy ;	basic ;	Western Frisian
ga ;	modern ;	Irish
gd ;	modern ;	Scottish Gaelic
gl ;	modern ;	Galician
gu ;	modern ;	Gujarati
ha ;	modern ;	Hausa
he ;	modern ;	Hebrew
hi ;	modern ;	Hindi
hi_Latn ;	modern ;	Hindi [Latin]
hr ;	modern ;	Croatian
hsb ;	modern ;	Upper Sorbian
hu ;	modern ;	Hungarian
hy ;	modern ;	Armenian
ia ;	moderate ;	Interlingua
id ;	modern ;	Indonesian
ie ;	basic ;	Interlingue
ig ;	modern ;	Igbo
is ;	modern ;	Icelandic
it ;	modern ;	Italian
ja ;	modern ;	Japanese
jv ;	modern ;	Javanese
ka ;	modern ;	Georgian
kea ;	basic ;	Kabuverdianu
kgp ;	basic ;	Kaingang
kk ;	modern ;	Kazakh
km ;	modern ;	Khmer
kn ;	modern ;	Kannada
ko ;	modern ;	Korean
kok ;	modern ;	Konkani
ks ;	basic ;	Kashmiri
ks_Deva ;	basic ;	Kashmiri (Devanagari)
ku ;	moderate ;	Kurdish
kxv ;	basic ;	Kuvi
kxv_Deva ;	basic ;	Kuvi (Devanagari)
kxv_Orya ;	basic ;	Kuvi (Odia)
kxv_Telu ;	basic ;	Kuvi (Telugu)
ky ;	modern ;	Kyrgyz
lb ;	basic ;	Luxembourgish
lij ;	basic ;	Ligurian
lmo ;	basic ;	Lombard
lo ;	modern ;	Lao
lt ;	modern ;	Lithuanian
lv ;	modern ;	Latvian
mai ;	basic ;	Maithili
mi ;	moderate ;	Māori
mk ;	modern ;	Macedonian
ml ;	modern ;	Malayalam
mn ;	modern ;	Mongolian
mni ;	basic ;	Manipuri
mr ;	modern ;	Marathi
ms ;	modern ;	Malay
mt ;	basic ;	Maltese
my ;	modern ;	Burmese
nds ;	basic ;	Low German
ne ;	modern ;	Nepali
nl ;	modern ;	Dutch
nn ;	modern ;	Norwegian Nynorsk
no ;	modern ;	Norwegian
nqo ;	basic ;	N’Ko
oc ;	basic ;	Occitan
or ;	modern ;	Odia
pa ;	modern ;	Punjabi
pcm ;	moderate ;	Nigerian Pidgin
pl ;	modern ;	Polish
prg ;	basic ;	Prussian
ps ;	modern ;	Pashto
pt ;	modern ;	Portuguese
qu ;	moderate ;	Quechua
raj ;	basic ;	Rajasthani
rm ;	basic ;	Romansh
ro ;	modern ;	Romanian
ru ;	modern ;	Russian
sa ;	basic ;	Sanskrit
sah ;	basic ;	Yakut
sat ;	basic ;	Santali
sc ;	moderate ;	Sardinian
sd ;	modern ;	Sindhi
sd_Deva ;	basic ;	Sindhi (Devanagari)
si ;	modern ;	Sinhala
sk ;	modern ;	Slovak
sl ;	modern ;	Slovenian
so ;	modern ;	Somali
sq ;	modern ;	Albanian
sr ;	modern ;	Serbian
sr_Latn ;	modern ;	Serbian (Latin)
su ;	basic ;	Sundanese
sv ;	modern ;	Swedish
sw ;	modern ;	Swahili
syr ;	basic ;	Syriac
szl ;	basic ;	Silesian
ta ;	modern ;	Tamil
te ;	modern ;	Telugu
tg ;	basic ;	Tajik
th ;	modern ;	Thai
ti ;	basic ;	Tigrinya
tk ;	modern ;	Turkmen
to ;	basic ;	Tongan
tr ;	modern ;	Turkish
tt ;	basic ;	Tatar
ug ;	basic ;	Uyghur
uk ;	modern ;	Ukrainian
ur ;	modern ;	Urdu
uz ;	modern ;	Uzbek
uz_Cyrl ;	basic ;	Uzbek (Cyrillic)
vec ;	moderate ;	Venetian
vi ;	modern ;	Vietnamese
vmw ;	basic ;	Makhuwa
wo ;	basic ;	Wolof
xh ;	moderate ;	Xhosa
xnr ;	basic ;	Kangri
yo ;	modern ;	Yoruba
yrl ;	basic ;	Nheengatu
yue ;	modern ;	Cantonese
yue_Hans ;	modern ;	Cantonese (Simplified)
za ;	basic ;	Zhuang
zh ;	modern ;	Chinese
zh_Hant ;	modern ;	Traditional Chinese
zu ;	modern ;	Zulu
		
#EOF		
