#
# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
#

#
# COPYRIGHT AND PERMISSION NOTICE
#
# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
# Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of the Unicode data files and any associated documentation (the "Data
# Files") or Unicode software and any associated documentation (the
# "Software") to deal in the Data Files or Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, and/or sell copies of the Data Files or Software, and
# to permit persons to whom the Data Files or Software are furnished to do
# so, provided that (a) the above copyright notice(s) and this permission
# notice appear with all copies of the Data Files or Software, (b) both the
# above copyright notice(s) and this permission notice appear in associated
# documentation, and (c) there is clear notice in each modified Data File or
# in the Software as well as in the documentation associated with the Data
# File(s) or Software that the data or software has been modified.
#
# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
#
# Except as contained in this notice, the name of a copyright holder shall not
# be used in advertising or otherwise to promote the sale, use or other
# dealings in these Data Files or Software without prior written
# authorization of the copyright holder.
#
 
# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!

ab=Abka\u017cjan
af=Afrikans
am=Am\u0127ariku
ar=G\u0127arbi
av=Avarik
ay=Ajmara
az=A\u017cerbaj\u0121ani
ba=Baxkir
be=Belarussu
bg=Bulgaru
bh=Bi\u0127ari
bo=Tibetjan
br=Brenton
bs=Bosnijan
ca=Katalan
ce=\u010ae\u010ben
ch=\u010aamorro
co=Korsiku
cr=Krij
cs=\u010aek
cu=Slaviku tal-Knisja
cv=\u010auvax
cy=Welx
da=Dani\u017c
de=\u0120ermani\u017c
dv=Dive\u0127i
dz=D\u017congka
el=Grieg
en=Ingli\u017c
es=Spanjol
et=Estonjan
eu=Bask
fa=Persjan
ff=Fula\u0127
fi=Finlandi\u017c
fj=Fi\u0121i
fo=Fawri\u017c
fr=Fran\u010bi\u017c
fy=Fri\u017cjan
ga=Irlandi\u017c
gd=Galliku Sko\u010b\u010bi\u017c
gl=Gallegjan
gn=Gwarani
gu=Gu\u0121arati
gv=Manks
ha=\u0126awsa
he=Ebrajk
hi=\u0126indi
ho=\u0126iri Motu
hr=Kroat
hu=Ungeri\u017c
hy=Armenjan
hz=\u0126erero
id=Indone\u017cjan
ik=Inupjak
in=Indone\u017cjan
is=I\u017clandi\u017c
it=Taljan
iu=Inukitut
iw=Ebrajk
ja=\u0120appuni\u017c
ji=Jiddix
jv=\u0120avani\u017c
ka=\u0120or\u0121jan
ki=Kikuju
kj=Kuanyama
kk=Ka\u017cak
kl=Kalallisut
km=Kmer
ko=Korejan
ks=Kaxmiri
ku=Kurdi\u017c
kw=Korniku
ky=Kirgi\u017c
lb=Let\u017cburgi\u017c
ln=Lingaljan
lt=Litwanjan
lv=Latvjan (Lettix)
mg=Malaga\u017ci
mh=Marxall
mk=Ma\u010bedonjan
ml=Malajalam
mn=Mongoljan
mo=Moldavjan
mr=Marati
ms=Malajan
mt=Malti
my=Burmi\u017c
na=Nawuru
nb=Bokmahal Norve\u0121i\u017c
nd=Ndebele, ta\u2019 Fuq
ne=Nepali\u017c
nl=Olandi\u017c
nn=Ninorsk Norve\u0121i\u017c
no=Norve\u0121i\u017c
nr=Ndebele, t\u2019Isfel
nv=Nava\u0127o
ny=\u010ai\u010bewa; Njan\u0121a
oc=Provenzal (wara 1500)
oj=O\u0121ibwa
om=Oromo (Afan)
or=Orija
os=Ossettiku
pa=Pun\u0121abi
pl=Pollakk
ps=Paxtun
pt=Portugi\u017c
qu=Ke\u010bwa
rm=Reto-Romanz
ro=Rumen
ru=Russu
rw=Kinjarwanda
sc=Sardinjan
sd=Sindi
se=Sami ta\u2019 Fuq
si=Sin\u0127ali\u017c
sk=Slovakk
sl=Sloven
sm=Samojan
sn=Xona
sq=Albani\u017c
sr=Serb
st=Soto, t\u2019Isfel
su=Sundani\u017c
sv=Svedi\u017c
sw=Swa\u0127ili
tg=Ta\u0121ik
th=Tajlandi\u017c
ti=Tigrinja
tk=Turkmeni
tn=Zwana
to=Tongan (G\u017cejjer ta\u2019 Tonga)
tr=Tork
ty=Ta\u0127itjan
ug=Wigur
uk=Ukranjan
uz=U\u017cbek
vi=Vjetnami\u017c
vo=Volapuk
xh=\u0126o\u017ca
yi=Jiddix
yo=Joruba
za=\u017bwang
zh=\u010aini\u017c
zu=\u017bulu
AE=Emirati G\u0127arab Maqg\u0127uda
AF=Afganistan
AI=Angwilla
AL=Albanija
AM=Armenja
AN=Antilles Olandi\u017ci
AQ=Antartika
AR=Ar\u0121entina
AS=Samoa Amerikana
AT=Awstrija
AU=Awstralja
AZ=A\u017cerbaj\u0121an
BA=Bo\u017cnija \u0126er\u017cegovina
BD=Bangladexx
BE=Bel\u0121ju
BG=Bulgarija
BH=Ba\u0127rajn
BN=Brunej
BO=Bolivja
BR=Bra\u017cil
BS=Ba\u0127amas
BT=Butan
BY=Bjelorussja
BZ=Beli\u017ce
CA=Kanada
CC=Cocos (Keeling) Islands
CD=Democratic Republic of the Congo
CF=Repubblika Afrikana \u010aentrali
CG=Kongo
CH=Svizzera
CI=Kosta ta\u2019 l-Avorju
CL=\u010aili
CM=Kamerun
CN=\u010aina
CO=Kolumbja
CR=Kosta Rika
CS=Serbja u Montenegro
CU=Kuba
CV=Kape Verde
CY=\u010aipru
CZ=Repubblika \u010aeka
DE=\u0120ermanja
DJ=\u0120ibuti
DK=Danimarka
DM=Dominika
DO=Republikka Domenikana
DZ=Al\u0121erija
EC=Ekwador
EE=Estonja
EG=E\u0121ittu
EH=Sahara tal-Punent
ER=Eritreja
ES=Spanja
ET=Etijopja
FI=Finlandja
FJ=Fi\u0121i
FM=Mikronesja
FO=G\u017cejjer Faroe
FR=Franza
GB=Ingilterra
GE=\u0120or\u0121ja
GF=Gujana Fran\u010bi\u017ca
GH=Gana
GL=Grinlandja
GM=Gambja
GN=Gineja
GP=Gwadelupe
GQ=Ginea Ekwatorjali
GR=Gre\u010bja
GS=South Georgia and the South Sandwich Islands
GT=Gwatemala
GU=Gwam
GW=Ginea-Bissaw
GY=Gujana
HK=\u0126ong Kong S.A.R., \u010aina
HM=Heard Island and McDonald Islands
HN=\u0126onduras
HR=Kroazja
HT=\u0126aiti
HU=Ungerija
ID=Indone\u017cja
IE=Irlanda
IL=I\u017crael
IN=Indja
IS=Islanda
IT=Italja
JM=\u0120amajka
JO=\u0120ordan
JP=\u0120appun
KE=Kenja
KG=Kirgistan
KH=Kambodja
KM=Komoros
KN=Saint Kitts and Nevis
KP=Koreja ta\u2019 Fuq
KR=Koreja t\u2019Isfel
KW=Kuwajt
KZ=Ka\u017cakstan
LB=Libanu
LC=Santa Lu\u010bija
LR=Liberja
LS=Lesoto
LT=Litwanja
LU=Lussemburgu
LV=Latvja
LY=Libja
MA=Marokk
MC=Monako
MD=Maldova
MG=Madagaskar
MH=G\u017cejjer ta\u2019 Marshall
MK=Ma\u010bedonja
MM=Mjanmar
MN=Mongolja
MO=Macao S.A.R., China
MP=G\u017cejjer Marjana ta\u2019 Fuq
MQ=Martinik
MR=Mawritanja
MU=Mawrizju
MX=Messiku
MY=Malasja
MZ=Mo\u017cambik
NA=Namibja
NE=Ni\u0121er
NG=Ni\u0121erja
NI=Nikaragwa
NL=Olanda
NO=Norve\u0121ja
PF=Polinesja Fran\u010bi\u017ca
PG=Papwa-Ginea \u0120dida
PH=Filippini
PL=Polonja
PM=Saint Pierre and Miquelon
PS=Palestinian Territory
PT=Portugall
PY=Paragwaj
RE=R\u00e9union
RO=Rumanija
RU=Russja
SA=G\u0127arabja Sawdita
SE=\u017bvezja
SG=Singapor
SI=Slovenja
SJ=Svalbard and Jan Mayen
SK=Slovakkja
SO=Somalja
SR=Surinam
ST=Sao Tome and Principe
SY=Sirja
SZ=Swa\u017ciland
TC=Turks and Caicos Islands
TD=\u010aad
TF=Territorji Fran\u010bi\u017ci ta\u2019 Nofsinhar
TH=Tajlandja
TJ=Ta\u0121ikistan
TK=Tokelaw
TL=Timor tal-Lvant
TN=Tune\u017c
TR=Turkija
TT=Trinidad u Tobago
TW=Tajwan
TZ=Tan\u017canija
UA=Ukraina
US=Stati Uniti
UY=Urugwaj
UZ=U\u017cbekistan
VA=Vatikan
VC=Saint Vincent and the Grenadines
VE=Venezwela
VN=Vjetnam
VU=Vanwatu
WF=Wallis and Futuna
YE=Jemen
YT=Majotte
ZA=Afrika t\u2019Isfel
ZM=\u017bambja
ZW=\u017bimbabwe
