# Copyright (c) 2005, 2007, Oracle and/or its affiliates. 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.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.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

aa=afar
ab=abhaso
ae=avestano
af=afrikaans
ak=akan
am=amarico
an=aragonese
ar=arabo
as=assamese
av=avarico
ay=aymar\u00e1
az=azero
ba=baschiro
be=bielorusso
bg=bulgaro
bh=bihari
bi=bislama
bm=bambara
bn=bengalese
bo=tibetano
br=bretone
bs=bosniaco
ca=catalano
ce=ceceno
ch=chamorro
co=corso
cr=cree
cs=ceco
cu=slavo ecclesiastico
cv=chuvash
cy=gallese
da=danese
de=tedesco
dv=divehi
dz=dzongkha
ee=ewe
el=greco
en=inglese
eo=esperanto
es=spagnolo
et=estone
eu=basco
fa=persiano
ff=fulah
fi=finlandese
fj=figiano
fo=faeroese
fr=francese
fy=frisone
ga=irlandese
gd=gaelico scozzese
gl=galiziano
gn=guaran\u00ec
gu=gujarati
gv=manx
ha=haussa
he=ebraico
hi=hindi
ho=hiri motu
hr=croato
ht=haitiano
hu=ungherese
hy=armeno
hz=herero
ia=interlingua
id=indonesiano
ie=interlingue
ig=igbo
ii=sichuan yi
ik=inupiak
in=indonesiano
io=ido
is=islandese
it=italiano
iu=inuktitut
iw=ebraico
ja=giapponese
ji=yiddish
jv=giavanese
ka=georgiano
kg=kongo
ki=kikuyu
kj=kwanyama
kk=kazako
kl=groenlandese
km=cambogiano (khmer)
kn=kannada
ko=coreano
kr=kanuri
ks=kashmiri
ku=curdo
kv=komi
kw=cornico
ky=kirghiso
la=latino
lb=lussemburghese
lg=ganda
li=limburghese
ln=lingala
lo=lao
lt=lituano
lu=luba-katanga
lv=lettone
mg=malgascio
mh=marshallese
mi=maori
mk=macedone
ml=malayalam
mn=mongolo
mo=moldavo
mr=marathi
ms=malese
mt=maltese
my=birmano
na=nauruano
nb=norvegese bokm\u00e5l
nd=ndebele settentrionale
ne=nepalese
ng=ndonga
nl=neerlandese
nn=norvegese nynorsk
no=norvegese
nr=ndebele meridionale
nv=navajo
ny=nyanja
oc=occitano
oj=ojibwa
om=oromo (afan)
or=oriya
os=ossetiano
pa=punjabi
pi=pali
pl=polacco
ps=pashto
pt=portoghese
qu=quechua
rm=retoromanzo
rn=kirundi
ro=rumeno
ru=russo
rw=kinyarwanda
sa=sanscrito
sc=sardo
sd=sindhi
se=sami settentrionale
sg=sangho
si=singalese
sk=slovacco
sl=sloveno
sm=samoano
sn=shona
so=somalo
sq=albanese
sr=serbo
ss=siswati
st=sesotho
su=sudanese
sv=svedese
sw=swahili
ta=tamil
te=telugu
tg=tagiko
th=thai
ti=tigrinya
tk=turkmeno
tl=tagalog
tn=setswana
to=tongano
tr=turco
ts=tsonga
tt=tataro
tw=twi
ty=tahitiano
ug=uiguro
uk=ucraino
ur=urdu
uz=uzbeko
ve=venda
vi=vietnamita
vo=volapuk
wa=vallone
wo=wolof
xh=xhosa
yi=yiddish
yo=yoruba
za=zhuang
zh=cinese
zu=zulu

# country names
# key is ISO 3166 country code

AD=Andorra
AE=Emirati Arabi Uniti
AF=Afghanistan
AG=Antigua e Barbuda
AI=Anguilla
AL=Albania
AM=Armenia
AN=Antille Olandesi
AO=Angola
AQ=Antartide
AR=Argentina
AS=Samoa americane
AT=Austria
AU=Australia
AW=Aruba
AX=Isole Aland
AZ=Azerbaigian
BA=Bosnia-Erzegovina
BB=Barbados
BD=Bangladesh
BE=Belgio
BF=Burkina Faso
BG=Bulgaria
BH=Bahrain
BI=Burundi
BJ=Benin
BM=Bermuda
BN=Brunei
BO=Bolivia
BR=Brasile
BS=Bahamas
BT=Bhutan
BV=Isola di Bouvet
BW=Botswana
BY=Bielorussia
BZ=Belize
CA=Canada
CC=Isole Cocos
CD=Repubblica democratica del Congo
CF=Repubblica Centrafricana
CG=Congo
CH=Svizzera
CI=Costa d'Avorio
CK=Isole Cook
CL=Cile
CM=Camerun
CN=Cina
CO=Colombia
CR=Costa Rica
CS=Serbia e Montenegro
CU=Cuba
CV=Capo Verde
CX=Isola di Natale
CY=Cipro
CZ=Repubblica Ceca
DE=Germania
DJ=Gibuti
DK=Danimarca
DM=Dominica
DO=Repubblica Dominicana
DZ=Algeria
EC=Ecuador
EE=Estonia
EG=Egitto
EH=Sahara Occidentale
ER=Eritrea
ES=Spagna
ET=Etiopia
FI=Finlandia
FJ=Figi
FK=Isole Falkland
FM=Micronesia
FO=Isole F\u00e6roer
FR=Francia
GA=Gabon
GB=Regno Unito
GD=Grenada
GE=Georgia
GF=Guayana Francese
GH=Ghana
GI=Gibilterra
GL=Groenlandia
GM=Gambia
GN=Guinea
GP=Guadalupa
GQ=Guinea Equatoriale
GR=Grecia
GS=Georgia del sud e isole Sandwich meridionali
GT=Guatemala
GU=Guam
GW=Guinea Bissau
GY=Guyana
HK=Hong Kong
HM=Isole Heard e McDonald
HN=Honduras
HR=Croazia
HT=Haiti
HU=Ungheria
ID=Indonesia
IE=Irlanda
IL=Israele
IN=India
IO=Territorio britannico dell'Oceano Indiano
IQ=Iraq
IR=Iran
IS=Islanda
IT=Italia
JM=Giamaica
JO=Giordania
JP=Giappone
KE=Kenya
KG=Kirghizistan
KH=Cambogia
KI=Kiribati
KM=Comore
KN=Saint Kitts e Nevis
KP=Corea del Nord
KR=Corea del Sud
KW=Kuwait
KY=Isole Cayman
KZ=Kazakhstan
LA=Laos
LB=Libano
LC=Sainte Lucia
LI=Liechtenstein
LK=Sri Lanka
LR=Liberia
LS=Lesotho
LT=Lituania
LU=Lussemburgo
LV=Lettonia
LY=Libia
MA=Marocco
MC=Monaco
MD=Moldavia
ME=Montenegro
MG=Madagascar
MH=Isole Marshall
MK=Macedonia
ML=Mali
MM=Myanmar
MN=Mongolia
MO=Macao
MP=Isole Marianne settentrionali
MQ=Martinica
MR=Mauritania
MS=Montserrat
MT=Malta
MU=Maurizio
MV=Maldive
MW=Malawi
MX=Messico
MY=Malaysia
MZ=Mozambico
NA=Namibia
NC=Nuova Caledonia
NE=Niger
NF=Isola Norfolk
NG=Nigeria
NI=Nicaragua
NL=Paesi Bassi
NO=Norvegia
NP=Nepal
NR=Nauru
NU=Niue
NZ=Nuova Zelanda
OM=Oman
PA=Panama
PE=Per\u00f9
PF=Polinesia Francese
PG=Papua Nuova Guinea
PH=Filippine
PK=Pakistan
PL=Polonia
PM=Saint Pierre e Miquelon
PN=Pitcairn
PR=Puerto Rico
PS=Palestina
PT=Portogallo
PW=Palau
PY=Paraguay
QA=Qatar
RE=Reunion
RO=Romania
RS=Serbia
RU=Russia
RW=Ruanda
SA=Arabia Saudita
SB=Isole Solomon
SC=Seychelles
SD=Sudan
SE=Svezia
SG=Singapore
SH=Sant'Elena
SI=Slovenia
SJ=Svalbard e Jan Mayen
SK=Slovacchia
SL=Sierra Leone
SM=San Marino
SN=Senegal
SO=Somalia
SR=Suriname
ST=S\u00e3o Tom\u00e9 e Principe
SV=El Salvador
SY=Siria
SZ=Swaziland
TC=Isole Turks e Caicos
TD=Ciad
TF=Territori Francesi d'Oltremare
TG=Togo
TH=Thailandia
TJ=Tagikistan
TK=Tokelau
TL=Timor Leste
TM=Turkmenistan
TN=Tunisia
TO=Tonga
TR=Turchia
TT=Trinidad e Tobago
TV=Tuvalu
TW=Taiwan
TZ=Tanzania
UA=Ucraina
UG=Uganda
UM=Isole minori lontane degli Stati Uniti
US=Stati Uniti
UY=Uruguay
UZ=Uzbekistan
VA=Citt\u00e0 del Vaticano
VC=Saint Vincent e Grenadine
VE=Venezuela
VG=Isole Vergini (GB)
VI=Isole Vergini (USA)
VN=Vietnam
VU=Vanuatu
WF=Wallis e Futuna
WS=Samoa
YE=Yemen
YT=Mayotta
ZA=Sudafrica
ZM=Zambia
ZW=Zimbabwe
