#
# Copyright (c) 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!

adp=Peseta Andorrana
aed=Dirham degli Emirati Arabi Uniti
afa=Afgani (1927-2002)
afn=Afgani
all=Lek Albanese
amd=Dram Armeno
ang=Fiorino delle Antille Olandesi
aoa=Kwanza Angolano
ars=Peso Argentino
ats=Scellino Austriaco
aud=Dollaro Australiano
awg=Fiorino di Aruba
azm=Manat Azero
bam=Marco Conv. Bosnia-Erzegovina
bbd=Dollaro di Barbados
bdt=Taka Bangladese
bef=Franco Belga
bgl=Lev Bulgaro
bgn=Nuovo Lev Bulgaro
bhd=Dinaro del Bahraini
bif=Franco del Burundi
bmd=Dollaro delle Bermuda
bnd=Dollaro del Brunei
bob=Boliviano
bov=Mvdol Boliviano
brl=Real Brasiliano
bsd=Dollaro delle Bahamas
btn=Ngultrum Butanese
bwp=Pula del Botswana
byb=Nuovo Rublo Bielorussia (1994-1999)
byr=Rublo Bielorussia
bzd=Dollaro Belize
cad=Dollaro Canadese
cdf=Franco Congolese
chf=Franco Svizzero
clf=Unidades de Fomento Chilene
clp=Peso Cileno
cny=Renmimbi Cinese
cop=Peso Colombiano
crc=Col\u00f3n Costaricano
csd=Dinaro serbo
cup=Peso Cubano
cve=Escudo del Capo Verde
cyp=Sterlina Cipriota
czk=Corona Ceca
dem=Marco Tedesco
djf=Franco Gibutiano
dkk=Corona Danese
dop=Peso Dominicano
dzd=Dinaro Algerino
eek=Corona dell\u2019Estonia
egp=Sterlina Egiziana
ern=Nakfa Eritreo
esp=Peseta Spagnola
etb=Birr Etiopico
eur=Euro
fim=Markka Finlandese
fjd=Dollaro delle Figi
fkp=Sterlina delle Falkland
frf=Franco Francese
gbp=Sterlina Inglese
gel=Lari Georgiano
ghc=Cedi del Ghana
gip=Sterlina di Gibilterra
gmd=Dalasi del Gambia
gnf=Franco della Guinea
grd=Dracma Greca
gtq=Quetzal Guatemalteco
gwp=Peso della Guinea-Bissau
gyd=Dollaro della Guyana
hkd=Dollaro di Hong Kong
hnl=Lempira Hoduregno
hrk=Kuna Croata
htg=Gourde Haitiano
huf=Fiorino Ungherese
idr=Rupia Indonesiana
iep=Lira Irlandese
ils=Nuovo sheqel israeliano
inr=Rupia Indiana
iqd=Dinaro Iracheno
irr=Rial Iraniano
isk=Corona Islandese
itl=Lira Italiana
jmd=Dollaro Giamaicano
jod=Dinaro Giordano
jpy=Yen Giapponese
kes=Scellino Keniota
kgs=Som  Kirghiso
khr=Riel Cambogiano
kmf=Franco Comoriano
kpw=Won Nordcoreano
krw=Won Sudcoreano
kwd=Dinaro Kuwaitiano
kyd=Dollaro delle Isole Cayman
kzt=Tenge Kazaco
lak=Kip Laotiano
lbp=Sterlina Libanese
lkr=Rupia di Sri Lanka
lrd=Dollaro Liberiano
lsl=Loti del Lesotho
ltl=Lita Lituana
luf=Franco del Lussemburgo
lvl=Lat Lettone
lyd=Dinaro Libico
mad=Dirham Marocchino
mdl=Leu Moldavo
mga=Ariary Malgascio
mgf=Franco Malgascio
mkd=Dinaro Macedone
mmk=Kyat di Myanmar
mnt=Tugrik Mongolo
mop=Pataca di Macao
mro=Ouguiya della Mauritania
mtl=Lira Maltese
mur=Rupia Mauriziana
mvr=Rufiyaa delle Maldive
mwk=Kwacha Malawiano
mxn=Peso Messicano
mxv=Unidad de Inversion (UDI) Messicana
myr=Ringgit della Malesia
mzm=Metical del Mozambico
nad=Dollaro Namibiano
ngn=Naira Nigeriana
nio=C\u00f3rdoba oro nicaraguense
nlg=Fiorino Olandese
nok=Corona Norvegese
npr=Rupia Nepalese
nzd=Dollaro Neozelandese
omr=Rial Omanita
pab=Balboa di Panama
pen=Sol Nuevo Peruviano
pgk=Kina della Papua Nuova Guinea
php=Peso delle Filippine
pkr=Rupia del Pakistan
pln=Zloty Polacco
pte=Escudo Portoghese
pyg=Guarani del Paraguay
qar=Rial del Qatar
rol=Leu della Romania
rub=Rublo Russo
rur=Rublo della CSI
rwf=Franco Ruandese
sar=Ryal Saudita
sbd=Dollaro delle Isole Solomon
scr=Rupia delle Seychelles
sdd=Dinaro Sudanese
sek=Corona Svedese
sgd=Dollaro di Singapore
shp=Sterlina di Sant\u2019Elena
sit=Tallero Sloveno
skk=Corona Slovacca
sll=Leone della Sierra Leone
sos=Scellino Somalo
srg=Fiorino del Suriname
std=Dobra di Sao Tom\u00e9 e Principe
svc=Col\u00f3n Salvadoregno
syp=Sterlina Siriana
szl=Lilangeni dello Swaziland
thb=Baht Tailandese
tjs=Somoni del Tajikistan
tmm=Manat Turkmeno
tnd=Dinaro Tunisino
top=Pa\u02bbanga di Tonga
tpe=Escudo di Timor
trl=Lira Turca
ttd=Dollaro di Trinidad e Tobago
twd=Nuovo dollaro taiwanese
tzs=Scellino della Tanzania
uah=Hrivna Ucraina
ugx=Scellino Ugandese
usd=Dollaro Statunitense
usn=Dollaro Statunitense (Next day)
uss=Dollaro Statunitense (Same day)
uyu=Peso Uruguayo uruguaiano
uzs=Sum dell\u2019Uzbekistan
veb=Bolivar Venezuelano
vnd=Dong Vietnamita
vuv=Vatu di Vanuatu
wst=Tala della Samoa Occidentale
xaf=Franco CFA BEAC
xau=Oro
xba=Unit\u00e0 composita europea
xbb=Unit\u00e0 monetaria europea
xbc=Unit\u00e0 di acconto europea (XBC)
xbd=Unit\u00e0 di acconto europea (XBD)
xcd=Dollaro dei Caraibi Orientali
xdr=Diritti Speciali di Incasso
xfo=Franco Oro Francese
xfu=Franco UIC Francese
xof=Franco CFA BCEAO
xpf=Franco CFP
xxx=Nessuna valuta
yer=Rial dello Yemen
yum=Dinaro Noviy Yugoslavo
zar=Rand Sudafricano
zmk=Kwacha dello Zambia
zwd=Dollaro dello Zimbabwe
