# Do not edit - generated from Unicode CLDR data
#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# Trailing empty fields can be omitted

ADP = Andorranischi Peseete||0|1
AED = UAE Dirham
AFA = Afghani (1927-2002)|||1
AFN = Afghani|Af|0
ALL = Lek||0
AMD = Dram||0
ANG = Niderländischi-Antille-Gulde|NAf.
AOA = Kwanza|Kz
AOK = Angolanische Kwanza (1977-1990)|||1
AON = Nöie Kwanza|||1
AOR = Kwanza Reajustado|||1
ARA = Argentinische Auschtral|₳||1
ARP = Argentinische Peso (1983-1985)|||1
ARS = Argentinische Peso|AR$
ATS = Öschtriichische Schilling|öS||1
AUD = Auschtralische Dollar|AU$
AWG = Aruba Florin|Afl.
AZM = Aserbeidschanische Manat (1993-2006)|||1
AZN = Aserbeidschanische Manat|man.
BAD = Bosnie-und-Herzegowina-Dinar|||1
BAM = Konvertierbari Mark vo Bosnie und Herzegowina|KM
BBD = Barbados-Dollar|Bds$
BDT = Taka|Tk
BEC = Belgische Franc (konvertibel)|||1
BEF = Belgische Franc|BF||1
BEL = Belgische Finanz-Franc|||1
BGL = Lew (1962-1999)|||1
BGN = Bulgarische Lew
BHD = Bahrain-Dinar|BD|3
BIF = Burundi-Franc|FBu|0
BMD = Bermuda-Dollar|BD$
BND = Brunei-Dollar|BN$
BOB = Boliviano|Bs
BOP = Bolivianische Peso|$b.||1
BOV = Bolivianische Mvdol|||1
BRB = Brasilianische Cruzeiro Novo (1967-1986)|||1
BRC = Brasilianische Cruzado|||1
BRE = Brasilianische Cruzeiro (1990-1993)|||1
BRL = Brasilianische Real|R$
BRN = Brasilianische Cruzado Novo|||1
BRR = Brasilianische Cruzeiro|||1
BSD = Bahama-Dollar|BS$
BTN = Bhutanische Ngultrum|Nu.
BUK = Birmanische Kyat|||1
BWP = Botswanische Pula
BYB = Belarus-Rubel (alt)|||1
BYR = Belarus Rubel (nöi)||0
BZD = Belize-Dollar|BZ$
CAD = Kanadische Dollar|CA$
CDF = Franc congolais
CHE = WIR-Euro|||1
CHF = Schwiizer Franke
CHW = WIR-Franke|||1
CLF = Tschileenische Unidad de Fomento||0|1
CLP = Tschileenische Peso|CL$|0
CNY = Renminbi Yuan|CN¥
COP = Kolumbianische Peso|CO$|0
COU = Unidad de Valor Real|||1
CRC = Costa Rica Colon|₡|0
CSD = Alte Serbische Dinar|||1
CSK = Tschechoslowakischi Chroone|||1
CUP = Kubanische Peso|CU$
CVE = Kap Verde Escudo|CV$
CYP = Zypere-Pfund|CY£||1
CZK = Tschechischi Chroone|Kč
DDM = DDR-Mark|||1
DEM = Tüütschi Mark|DM||1
DJF = Dschibuti-Franc|Fdj|0
DKK = Tänischi Chroone|Dkr
DOP = Tominikanische Peso|RD$
DZD = Algeerischi Dinar|DA
ECS = Ecuadorianische Sucre|||1
ECV = Verrächnigsäiheit für EC|||1
EEK = Eestnischi Chroone|Ekr
EGP = Ägüptischs Pfund|EG£
ERN = Eritreische Nakfa|Nfk
ESA = Schpanischi Peseeta (A-Kontene)|||1
ESB = Schpanischi Peseeta (konvertibel)|||1
ESP = Schpanischi Peseeta|Pts|0|1
ETB = Äthiopische Birr|Br
EUR = Euro|€
FIM = Finnischi Mark|mk||1
FJD = Fidschi Dollar|FJ$
FKP = Falkland-Pfund|FK£
FRF = Französische Franc|₣||1
GBP = Pfund Schtörling|UK£
GEK = Georgische Kupon Larit|||1
GEL = Georgische Lari
GHC = Ghanaische Cedi (GHC)|₵||1
GHS = Ghanaische Cedi (GHS)|GH₵
GIP = Gibraltar-Pfund|GI£
GMD = Gambische Dalasi
GNF = Guinea-Franc|FG|0
GNS = Guineische Syli|||1
GQE = Äquatorialguinea-Ekwele|||1
GRD = Griechische Trachme|₯||1
GTQ = Quetzal
GWE = Portugiisische Guinea Escudo|||1
GWP = Guinea-Bissau-Peso|||1
GYD = Guyana-Dollar|GY$|0
HKD = Hongkong-Dollar|HK$
HNL = Lempira
HRD = Kroazische Dinar|||1
HRK = Kuna|kn
HTG = Gourde
HUF = Forint|Ft|0
IDR = Rupie|Rp|0
IEP = Iirischs Pfund|IR£||1
ILP = Israelischs Pfund|I£||1
ILS = Schekel|₪
INR = Indischi Rupie|Rs.
IQD = Irak-Dinar||0
IRR = Rial||0
ISK = Iisländischi Chroone|Ikr|0
ITL = Italiänischi Lira|IT₤|0|1
JMD = Jamaika-Dollar|J$
JOD = Jordaanische Dinar|JD|3
JPY = Yen|¥|0
KES = Kenia-Schilling|Ksh
KGS = Som
KHR = Riel
KMF = Komore-Franc|CF|0
KPW = Nordkoreanische Won||0
KRW = Süüdkoreanische Won|₩|0
KWD = Kuwait-Dinar|KD|3
KYD = Kaiman-Dollar|KY$
KZT = Tenge
LAK = Kip|₭|0
LBP = Libaneesischs Pfund|LB£|0
LKR = Sri-Lanka-Rupie|SLRs
LRD = Liberiaanische Dollar|L$
LSL = Loti
LTL = Litauische Litas|Lt
LTT = Litauische Talonas|||1
LUC = Luxemburgische Franc (konvertibel)|||1
LUF = Luxemburgische Franc||0|1
LUL = Luxemburgischer Finanz-Franc|||1
LVL = Lettische Lats|Ls
LVR = Lettische Rubel|||1
LYD = Lüübische Dinar|LD|3
MAD = Marokkanische Dirham
MAF = Marokkanischer Franc|||1
MDL = Moldau-Löi
MGA = Madagaschkar-Ariary||0
MGF = Madagaschkar-Franc||0|1
MKD = Denar
MLF = Malische Franc|||1
MMK = Kyat||0
MNT = Tugrik|₮|0
MOP = Pataca|MOP$
MRO = Ouguiya|UM|0
MTL = Malteesischi Lira|Lm||1
MTP = Malteesischs Pfund|MT£||1
MUR = Maurizius-Rupie|MURs|0
MVR = Rufiyaa
MWK = Malawi-Kwacha
MXN = Mexikanische Peso|MX$
MXP = Mexikanische Silber-Peso (1861-1992)|||1
MXV = Mexikanische Unidad de Inversion (UDI)|||1
MYR = Malaysische Ringgit|RM
MZE = Mosambikanische Escudo|||1
MZM = Alte Metical|Mt||1
MZN = Metical|MTn
NAD = Namibia-Dollar|N$
NGN = Naira|₦
NIC = Cordoba|||1
NIO = Gold-Cordoba|C$
NLG = Holländische Gulde|fl||1
NOK = Norweegischi Chroone|Nkr
NPR = Nepaleesischi Rupie|NPRs
NZD = Neuseeland-Dollar|NZ$
OMR = Rial Omani||3
PAB = Balboa|B/.
PEI = Peruanische Inti|I/.||1
PEN = Nöie Sol|S/.
PES = Sol|||1
PGK = Kina
PHP = Philippiinische Peso|Php
PKR = Pakischtanischi Rupie|PKRs|0
PLN = Zloty|zł
PLZ = Zloty (1950-1995)|||1
PTE = Portugiisische Escudo|Esc||1
PYG = Guarani|₲|0
QAR = Katar-Riyal|QR
RHD = Rhodesische Dollar|RH$||1
ROL = Löi|||1
RON = Rumäänische Löi
RSD = Serbische Dinar|din.|0
RUB = Russische Rubel (nöi)
RUR = Russische Rubel (alt)|||1
RWF = Ruanda-Franc||0
SAR = Saudi-Riyal|SR
SBD = Salomone-Dollar|SI$
SCR = Seyschelle-Rupie|SRe
SDD = Sudaneesische Dinar|LSd||1
SDG = Sudaneesischs Pfund
SDP = Sudaneesischs Pfund (alt)|||1
SEK = Schweedischi Chroone|Skr
SGD = Singapur-Dollar|S$
SHP = St.-Helena-Pfund|SH£
SIT = Tolar|||1
SKK = Slowakischi Chroone|Sk||1
SLL = Leone|Le|0
SOS = Somalia-Schilling|Ssh|0
SRD = Surinamische Dollar|SR$
SRG = Surinamische Gulde|Sf||1
STD = Dobra|Db|0
SUR = Sowjetische Rubel|||1
SVC = El-Salvador-Colon|SV₡||1
SYP = Süürischs Pfund|SY£|0
SZL = Lilangeni
THB = Baht|฿
TJR = Tadschikischtan-Rubel|||1
TJS = Tadschikischtan-Somoni
TMM = Turkmeenischtan-Manat||0|1
TND = Tuneesische Dinar|DT|3
TOP = Paʻanga|T$
TPE = Timor-Escudo|||1
TRL = Türkischi Liire||0|1
TRY = Nöii Türkischi Liire|TL
TTD = Trinidad-und-Tobago-Dollar|TT$
TWD = Nöii Taiwan-Dollar|NT$
TZS = Tansania-Schilling|TSh|0
UAH = Hryvnia
UAK = Ukraiinische Karbovanetz|||1
UGS = Uganda-Schilling (1966-1987)|||1
UGX = Uganda-Schilling|USh|0
USD = US-Dollar|$
USN = US Dollar (Nöchschte Taag)|||1
USS = US Dollar (Gliiche Taag)|||1
UYP = Uruguayische Nöie Peso (1975-1993)|||1
UYU = Uruguayische Peso|$U
UZS = Usbeekischtan-Sum||0
VEB = Bolivar|||1
VEF = Bolívar Fuerte|Bs.F.
VND = Dong|₫|0
VUV = Vatu|VT|0
WST = Tala|WS$
XAF = CFA-Franc (Äquatoriaal)|FCFA|0
XAG = Silber|||1
XAU = Gold|||1
XBA = Europääischi Rächnigseinheit|||1
XBB = Europääischi Währigseinheit (XBB)|||1
XBC = Europääischi Rächnigseinheit (XBC)|||1
XBD = Europääischi Rächnigseinheit (XBD)|||1
XCD = Oschtkaribische Dollar|EC$
XDR = Sunderziäigsrächt|||1
XEU = Europääischi Währigseinheit (XEU)|||1
XFO = Französische Gold-Franc|||1
XFU = Französische UIC-Franc|||1
XOF = CFA-Franc (Wescht)|CFA|0
XPD = Palladium|||1
XPF = CFP-Franc|CFPF|0
XPT = Platin|||1
XRE = RINET-Funds|||1
XTS = Teschtwährig|||1
XXX = Unbekannti Währig|||1
YDD = Jeme-Dinar|||1
YER = Jeme-Rial|YR|0
YUD = Jugoslawische Dinar (1966-1990)|||1
YUM = Nöii Dinar|||1
YUN = Jugoslawische Dinar (konvertibel)|||1
ZAR = Rand|R
ZMK = Kwacha|ZK|0
ZRN = Nöie Zaire|NZ||1
ZRZ = Zaire|||1
ZWD = Simbabwe-Dollar|Z$|0|1
