# 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=Abchasisch
ae=Avestisch
af=Afrikaans
ak=Akan
am=Amharisch
an=Aragonisch
ar=Arabisch
as=Assamesisch
av=Avarisch
ay=Aymara
az=Aserbaidschanisch
ba=Baschkirisch
be=Belorussisch
bg=Bulgarisch
bh=Biharisch
bi=Bislamisch
bm=Bambara
bn=Bengalisch
bo=Tibetanisch
br=Bretonisch
bs=Bosnisch
ca=Katalanisch
ce=Chechen
ch=Chamorro
co=Korsisch
cr=Cree
cs=Tschechisch
cu=Church Slavic
cv=Chuvash
cy=Walisisch
da=D\u00e4nisch
de=Deutsch
dv=Divehi
dz=Bhutani
ee=Ewe
el=Griechisch
en=Englisch
eo=Esperanto
es=Spanisch
et=Estnisch
eu=Baskisch
fa=Persisch
ff=Fulah
fi=Finnisch
fj=Fidschi
fo=Far\u00f6isch
fr=Franz\u00f6sisch
fy=Friesisch
ga=Irisch
gd=Schottisches G\u00e4lisch
gl=Galizisch
gn=Guarani
gu=Gujaratisch
gv=Manx
ha=Haussa
he=Hebr\u00e4isch
hi=Hindi
ho=Hiri Motu
hr=Kroatisch
ht=Haitisch
hu=Ungarisch
hy=Armenisch
hz=Herero
ia=Interlingua
id=Indonesisch
ie=Interlingue
ig=Igbo
ii=Sichuan Yi
ik=Inupiak
in=Indonesisch
io=Ido
is=Isl\u00e4ndisch
it=Italienisch
iu=Inuktitut
iw=Hebr\u00e4isch
ja=Japanisch
ji=Jiddish
jv=Javanisch
ka=Georgisch
kg=Kongo
ki=Kikuyu
kj=Kwanyama
kk=Kasachisch
kl=Gr\u00f6nl\u00e4ndisch
km=Kambodschanisch
kn=Kannada
ko=Koreanisch
kr=Kanuri
ks=Kaschmirisch
ku=Kurdisch
kv=Komi
kw=Cornish
ky=Kirgisisch
la=Lateinisch
lb=Letzeburgisch
lg=Ganda
li=Limburgisch
ln=Lingalisch
lo=Laotisch
lt=Litauisch
lu=Luba-Katanga
lv=Lettisch
mg=Malagasisch
mh=Marshall
mi=Maorisch
mk=Mazedonisch
ml=Malaysisch
mn=Mongolisch
mo=Moldavisch
mr=Marathi
ms=Malay
mt=Maltesisch
my=Burmesisch
na=Nauruisch
nb=Norwegisch, Bokm\u00e5l
nd=Nord-Ndebele
ne=Nepalisch
ng=Ndonga
nl=Niederl\u00e4ndisch
nn=Norwegisch, Nynorsk
no=Norwegisch
nr=S\u00fcd-Ndebele
nv=Navajo
ny=Nyanja
oc=Okzitanisch
oj=Ojibwa
om=Oromo (Afan)
or=Orija
os=Ossetisch
pa=Pundjabisch
pi=Pali
pl=Polnisch
ps=Paschtu (Pushto)
pt=Portugiesisch
qu=Quechua
rm=R\u00e4toromanisch
rn=Kirundisch
ro=Rum\u00e4nisch
ru=Russisch
rw=Ruanda
sa=Sanskrit
sc=Sardisch
sd=Zinti
se=Nord-Sami
sg=Sango
si=Singhalesisch
sk=Slowakisch
sl=Slowenisch
sm=Samoanisch
sn=Schonisch
so=Somalisch
sq=Albanisch
sr=Serbisch
ss=Swasil\u00e4ndisch
st=Sesothisch
su=Sudanesisch
sv=Schwedisch
sw=Suaheli
ta=Tamilisch
te=Telugu
tg=Tadschikisch
th=Thai
ti=Tigrinja
tk=Turkmenisch
tl=Tagalog
tn=Sezuan
to=Tongaisch
tr=T\u00fcrkisch
ts=Tsongaisch
tt=Tatarisch
tw=Twi
ty=Tahitisch
ug=Uigurisch
uk=Ukrainisch
ur=Urdu
uz=Usbekisch
ve=Venda
vi=Vietnamesisch
vo=Volap\u00fck
wa=Wallonisch
wo=Wolof
xh=Xhosa
yi=Jiddish
yo=Joruba
za=Zhuang
zh=Chinesisch
zu=Zulu

# country names
# key is ISO 3166 country code

AD=Andorra
AE=Vereinigte Arabische Emirate
AF=Afghanistan
AG=Antigua und Barbuda
AI=Anguilla
AL=Albanien
AM=Armenien
AN=Niederl\u00e4ndische Antillen
AO=Angola
AQ=Antarktis
AR=Argentinien
AS=Amerikanisch-Samoa
AT=\u00d6sterreich
AU=Australien
AW=Aruba
AX=Aaland-Inseln
AZ=Aserbaidschan
BA=Bosnien und Herzegowina
BB=Barbados
BD=Bangladesch
BE=Belgien
BF=Burkina Faso
BG=Bulgarien
BH=Bahrain
BI=Burundi
BJ=Benin
BM=Bermuda
BN=Brunei
BO=Bolivien
BR=Brasilien
BS=Bahamas
BT=Bhutan
BV=Bouvet-Insel
BW=Botsuana
BY=Belarus
BZ=Belize
CA=Kanada
CC=Kokos-Inseln
CD=Demokratische Republik Kongo
CF=Zentralafrikanische Republik
CG=Kongo
CH=Schweiz
CI=Elfenbeink\u00fcste
CK=Cook-Inseln
CL=Chile
CM=Kamerun
CN=China
CO=Kolumbien
CR=Costa Rica
CS=Serbien und Montenegro
CU=Kuba
CV=Kap Verde
CX=Weihnachtsinsel
CY=Zypern
CZ=Tschechische Republik
DE=Deutschland
DJ=Dschibuti
DK=D\u00e4nemark
DM=Dominica
DO=Dominikanische Republik
DZ=Algerien
EC=Ecuador
EE=Estland
EG=\u00c4gypten
EH=Westsahara
ER=Eritrea
ES=Spanien
ET=\u00c4thiopien
FI=Finnland
FJ=Fidschi
FK=Falkland-Inseln
FM=Mikronesien
FO=F\u00e4r\u00f6er-Inseln
FR=Frankreich
GA=Gabun
GB=Vereinigtes K\u00f6nigreich
GD=Grenada
GE=Georgien
GF=Franz\u00f6sisch-Guayana
GH=Ghana
GI=Gibraltar
GL=Gr\u00f6nland
GM=Gambia
GN=Guinea
GP=Guadeloupe
GQ=\u00c4quatorial-Guinea
GR=Griechenland
GS=S\u00fcd-Georgia und die s\u00fcdlichen Sandwich-Inseln
GT=Guatemala
GU=Guam
GW=Guinea-Bissau
GY=Guyana
HK=Hongkong
HM=Heard- und McDonald-Inseln
HN=Honduras
HR=Kroatien
HT=Haiti
HU=Ungarn
ID=Indonesien
IE=Irland
IL=Israel
IN=Indien
IO=Britische Territorien im Indischen Ozean
IQ=Irak
IR=Iran
IS=Island
IT=Italien
JM=Jamaika
JO=Jordanien
JP=Japan
KE=Kenia
KG=Kirgistan
KH=Kambodscha
KI=Kiribati
KM=Komoren
KN=Saint Kitts und Nevis
KP=Nordkorea
KR=S\u00fcdkorea
KW=Kuwait
KY=Kaiman-Inseln
KZ=Kasachstan
LA=Laos
LB=Libanon
LC=St. Lucia
LI=Liechtenstein
LK=Sri Lanka
LR=Liberia
LS=Lesotho
LT=Litauen
LU=Luxemburg
LV=Lettland
LY=Libyen
MA=Marokko
MC=Monaco
MD=Moldau
ME=Montenegro
MG=Madagaskar
MH=Marshall-Inseln
MK=Mazedonien
ML=Mali
MM=Myanmar
MN=Mongolei
MO=Macao
MP=N\u00f6rdliche Mariannen-Inseln
MQ=Martinique
MR=Mauretanien
MS=Montserrat
MT=Malta
MU=Mauritius
MV=Maldiven
MW=Malawi
MX=Mexiko
MY=Malaysia
MZ=Mosambik
NA=Namibia
NC=Neukaledonien
NE=Niger
NF=Norfolk-Insel
NG=Nigeria
NI=Nicaragua
NL=Niederlande
NO=Norwegen
NP=Nepal
NR=Nauru
NU=Niue
NZ=Neuseeland
OM=Oman
PA=Panama
PE=Peru
PF=Franz\u00f6sisch-Polynesien
PG=Papua-Neuguinea
PH=Philippinen
PK=Pakistan
PL=Polen
PM=St. Pierre und Miquelon
PN=Pitcairn
PR=Puerto Rico
PS=Pal\u00e4stina
PT=Portugal
PW=Palau
PY=Paraguay
QA=Katar
RE=Reunion
RO=Rum\u00e4nien
RS=Serbien
RU=Russland
RW=Ruanda
SA=Saudi-Arabien
SB=Solomon-Inseln
SC=Seychellen
SD=Sudan
SE=Schweden
SG=Singapur
SH=St. Helena
SI=Slowenien
SJ=Svalbard und Jan Mayen
SK=Slowakei
SL=Sierra Leone
SM=San Marino
SN=Senegal
SO=Somalia
SR=Suriname
ST=Sao Tome und Principe
SV=El Salvador
SY=Syrien
SZ=Swasiland
TC=Turks- und Caicos-Inseln
TD=Tschad
TF=Franz\u00f6sische S\u00fcdgebiete
TG=Togo
TH=Thailand
TJ=Tadschikistan
TK=Tokelau
TL=Timor-Leste
TM=Turkmenistan
TN=Tunesien
TO=Tonga
TR=T\u00fcrkei
TT=Trinidad und Tobago
TV=Tuvalu
TW=Taiwan
TZ=Tansania
UA=Ukraine
UG=Uganda
UM=\u00dcbrige Inseln im Pazifik der USA
US=Vereinigte Staaten von Amerika
UY=Uruguay
UZ=Usbekistan
VA=Vatikanstadt
VC=St. Vincent und die Grenadinen
VE=Venezuela
VG=Britische Jungferninseln
VI=Amerikanische Jungferninseln
VN=Vietnam
VU=Vanuatu
WF=Wallis und Futuna
WS=Samoa
YE=Jemen
YT=Mayotte
ZA=S\u00fcdafrika
ZM=Sambia
ZW=Simbabwe
