# Portions Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#

# (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
# (C) Copyright IBM Corp. 1996 - 1999 - All Rights Reserved
#
# The original version of this source code and documentation
# is copyrighted and owned by Taligent, Inc., a wholly-owned
# subsidiary of IBM. These materials are provided under terms
# of a License Agreement between Taligent and Sun. This technology
# is protected by multiple US and International patents.
#
# This notice and attribution to Taligent may not be removed.
# Taligent is a registered trademark of Taligent, Inc.


# language names
# key is ISO 639 language code

ab=abkhaz
aa=\u00e0far
af=afrikaans
sq=alban\u00e8s
am=amh\u00e0ric
ar=\u00e2rab
hy=armeni
as=assam\u00e8s
ay=aimara
az=\u00e0zeri
ba=baixkir
eu=basc
bn=bengal\u00ed
dz=bhutan\u00e8s
bh=bihari
bi=bislama
br=bret\u00f3
bg=b\u00falgar
my=birm\u00e0
be=bielor\u00fas
km=cambodj\u00e0
ca=catal\u00e0
zh=xin\u00e9s
co=cors
hr=croat
cs=txec
da=dan\u00e8s
nl=neerland\u00e8s
en=angl\u00e8s
eo=esperanto
et=estoni\u00e0
fo=fero\u00e8s
fj=fiji\u00e0
fi=fin\u00e8s
fr=franc\u00e8s
fy=fris\u00f3
gl=gallec
ka=georgi\u00e0
de=alemany
el=grec
kl=greenland\u00e8s
gn=guaran\u00ed
gu=gujarati
ha=hausa
he=hebreu
iw=hebreu
hi=hindi
hu=hongar\u00e8s
is=island\u00e8s
id=indonesi
in=indonesi
ia=interlingua
ie=interlingue
iu=inuktitut
ik=inupiak
ga=irland\u00e8s
it=itali\u00e0
ja=japon\u00e8s
jw=javan\u00e8s
kn=kannada
ks=caixmiri
kk=kazakh
rw=kinyarwanda
ky=kirgu\u00eds
rn=kirundi
ko=core\u00e0
ku=kurd
lo=laosi\u00e0
la=llat\u00ed
lv=let\u00f3)
ln=lingala
lt=litu\u00e0
mk=macedoni
mg=malgaix
ms=malai
ml=malaialam
mt=malt\u00e8s
mi=maori
mr=marathi
mo=moldau
mn=mongol
na=nauru\u00e0
ne=nepal\u00e8s
no=noruec
oc=occit\u00e0
or=oriya
om=oromo (afan)
ps=paixto
fa=persa
pl=polon\u00e8s
pt=portugu\u00e8s
pa=panjabi
qu=qu\u00e8txua
rm=retorom\u00e0nic
ro=roman\u00e8s
ru=rus
sm=samo\u00e0
sg=sango
sa=s\u00e0nscrit
gd=escoc\u00e8s
sr=serbi
st=sotho
tn=tswana
sn=shona
sd=sindhi
si=sinhal\u00e8s
ss=siswati
sk=eslovac
sl=eslov\u00e8
so=somali
es=espanyol
su=sundan\u00e8s
sw=swahili
sv=suec
tl=tag\u00e0log
tg=tadjik
ta=t\u00e0mil
tt=t\u00e0tar
te=telugu
th=thai
bo=tibet\u00e0
ti=tigrinya
to=tonga
ts=tsonga
tr=turc
tk=turcman
tw=twi
ug=uigur
uk=ucra\u00efn\u00e8s
ur=urd\u00fa
uz=uzbek
vi=vietnamita
vo=volapuk
cy=gal\u00b7l\u00e8s
wo=w\u00f2lof
xh=xosa
ji=jiddish
yi=jiddish
yo=ioruba
za=zhuang
zu=zulu

# country names
# key is ISO 3166 country code

AF=Afganistan
AL=Alb\u00e0nia
DZ=Alg\u00e8ria
AD=Andorra
AO=Angola
AI=Anguilla
AR=Argentina
AM=Arm\u00e8nia
AW=Aruba
AU=Austr\u00e0lia
AT=\u00c2ustria
AZ=Azerbaidjan
BS=Bahames
BH=Bahrain
BD=Bangla Desh
BB=Barbados
BY=Bielor\u00fassia
BE=B\u00e8lgica
BZ=Belize
BJ=Benin
BM=Bermudes
BT=Bhutan
BO=Bol\u00edvia
BA=B\u00f2snia i Hercegovina
BW=Botswana
BR=Brasil
BN=Brunei
BG=Bulg\u00e0ria
BF=Burkina Faso
BI=Burundi
KH=Cambodja
CM=Camerun
CA=Canad\u00e0
CV=Cap Verd
CF=Rep\u00fablica Centrafricana
TD=Txad
CL=Xile
CN=Xina
CO=Col\u00f2mbia
KM=Comores
CG=Congo
CR=Costa Rica
CI=Costa d'Ivori
HR=Cro\u00e0cia
CU=Cuba
CY=Xipre
CZ=Rep\u00fablica Txeca
DK=Dinamarca
DJ=Djibouti
DM=Dominica
DO=Rep\u00fablica Dominicana
TP=Timor Oriental
EC=Equador
EG=Egipte
SV=El Salvador
GQ=Guinea Equatorial
ER=Eritrea
EE=Est\u00f2nia
ET=Eti\u00f2pia
FJ=Fiji
FI=Finl\u00e0ndia
FR=Fran\u00e7a
GF=Guaiana Francesa
PF=Polin\u00e8sia Francesa
TF=Territoris Meridionals Francesos ??
GA=Gabon
GM=G\u00e0mbia
GE=Ge\u00f2rgia
DE=Alemanya
GH=Ghana
GR=Gr\u00e8cia
GP=Guadeloupe
GT=Guatemala
GN=Guinea
GW=Guinea Bissau
GY=Guyana
HT=Hait\u00ed
HN=Hondures
HK=Hong Kong
HU=Hongria
IS=Isl\u00e0ndia
IN=\u00cdndia
ID=Indon\u00e8sia
IR=Iran
IQ=Iraq
IE=Irlanda
IL=Israel
IT=It\u00e0lia
JM=Jamaica
JP=Jap\u00f3
JO=Jord\u00e0nia
KZ=Kazakhstan
KE=Kenya
KI=Kiribati
KP=Corea del Nord
KR=Corea del Sud
KW=Kuwait
KG=Kirgizistan
LA=Laos
LV=Let\u00f2nia
LB=L\u00edban
LS=Lesotho
LR=Lib\u00e8ria
LY=L\u00edbia
LI=Liechtenstein
LT=Litu\u00e0nia
LU=Luxemburg
MK=Maced\u00f2nia
MG=Madagascar
MY=Mal\u00e0isia
ML=Mali
MT=Malta
MQ=Martinica
MR=Maurit\u00e0nia
MU=Maurici
YT=Mayotte
MX=M\u00e8xic
FM=Micron\u00e8sia
MD=Mold\u00e0via
MC=M\u00f2naco
MN=Mong\u00f2lia
MS=Montserrat
MA=Marroc
MZ=Mo\u00e7ambic
MM=Myanmar
NA=Nam\u00edbia
NP=Nepal
NL=Pa\u00efsos Baixos
AN=Antilles Holandeses
NC=Nova Caled\u00f2nia
NZ=Nova Zelanda
NI=Nicaragua
NE=N\u00edger
NG=Nig\u00e8ria
NU=Niue
NO=Noruega
OM=Oman
PK=Pakistan
PA=Panam\u00e0
PG=Papua Nova Guinea
PY=Paraguai
PE=Per\u00fa
PH=Filipines
PL=Pol\u00f2nia
PT=Portugal
PR=Puerto Rico
QA=Qatar
RO=Romania
RU=R\u00fassia
RW=Rwanda
SA=Ar\u00e0bia Saud\u00ed
SN=Senegal
SP=S\u00e8rbia
SC=Seychelles
SL=Sierra Leone
SG=Singapur
SK=Eslov\u00e0quia
SI=Eslov\u00e8nia
SO=Som\u00e0lia
ZA=Sud-\u00e0frica
ES=Espanya
LK=Sri Lanka
SD=Sudan
SR=Surinam
SZ=Swazil\u00e0ndia
SE=Su\u00e8cia
CH=Switzerland
SY=S\u00edria
TW=Taiwan
TJ=Tadjikistan
TZ=Tanz\u00e0nia
TH=Tail\u00e0ndia
TG=Togo
TK=Tokelau
TO=Tonga
TT=Trinitat i Tobago
TN=Tun\u00edsia
TR=Turquia
TM=Turkmenistan
UG=Uganda
UA=Ucra\u00efna
AE=Uni\u00f3 dels Emirats \u00c0rabs
GB=Regne Unit
US=Estats Units
UY=Uruguai
UZ=Uzbekistan
VU=Vanuatu
VA=Vatic\u00e0
VE=Vene\u00e7uela
VN=Vietnam
VG=Illes Verges Brit\u00e0niques
VI=Illes Verges dels USA
EH=S\u00e0hara Occidental
YE=Iemen
ZR=Zaire
ZM=Z\u00e0mbia
ZW=Zimbabwe
