# 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 = Andora pesetası||0|1
AED = Birləşmiş ərəb emiratlar dirhamı
AFA = Əfgəni (AFA)|||1
AFN = Əfgəni|Af|0
ALL = Alban leki||0
AMD = Erməni dramı||0
ANG = Hollandiya antila gilderi|NAf.
AOA = Anqola kvanzası|Kz
AOK = Anqola kvanzasi (1977-1990)|||1
AON = Anqola yeni kvanzası (1990-2000)|||1
AOR = Anqola kvanzası (1995-1999)|||1
ARA = Argentina avstralı|₳||1
ARP = Argentina pesosu (1983-1985)|||1
ARS = Argentina pesosu|AR$
ATS = Avstriya şilingi|||1
AUD = Avstraliya dolları|AU$
AWG = Aruba qilderi|Afl.
AZM = Manat|||1
AZN = Azərbaycan manatı|man.
BAD = Bosniya-Herzeqovina dinarı|||1
BAM = Bosniya-Herzeqovina markası|KM
BBD = Barbados dolları|Bds$
BDT = Banqladeş takası|Tk
BEC = Belçika frankı (deyşirik)|||1
BEF = Belçika frankı|BF||1
BEL = Belçika frankı (finans)|||1
BGL = Bolqariya levası|||1
BGN = Bolqariya yeni levası
BHD = Bahreyn dinarı|BD|3
BIF = Burundi frankası|FBu|0
BMD = Bermuda dolları|BD$
BND = Bruney dolları|BN$
BOB = Boliviano|Bs
BOP = Boliviya pesosu|$b.||1
BOV = Boliviya mvdolı|||1
BRB = Braziliya kruzeyro novası|||1
BRC = Braziliya kruzadosu|||1
BRE = Braziliya kruzeyrosu (1990-1993)|||1
BRL = Braziliya realı|R$
BRN = Braziliya kruzado novası|||1
BRR = Braziliya kruzeyrosu|||1
BSD = Bahama dolları|BS$
BTN = Butan ngultrumu|Nu.
BUK = Burmis kyatı|||1
BWP = Botsvana pulası
BYB = Belarusiya yeni rublu|||1
BYR = Belarusiya rublu||0
BZD = Beliz dolları|BZ$
CAD = Kanadiya dolları|CA$
CDF = Konqoliz frank konqolaysı
CHE = WIR Yevrosu|||1
CHF = İsveçriya frankası
CHW = WIR frankası|||1
CLP = Çili pesosu|CL$|0
CNY = Çin yuan renminbi|CN¥
COP = Kolombiya pesosu|CO$|0
CRC = Kosta rika kolonu|₡|0
CSD = Qədimi Serb dinarı|||1
CSK = Çexoslavakiya korunası|||1
CUP = Kuba pesosu|CU$
CVE = Kape Verde eskudosu|CV$
CYP = Kipr paundu|CY£||1
CZK = Çex respublikası korunası|Kč
DDM = şərq almaniya ostmarkı|||1
DEM = alman markası|DM||1
DJF = jibouti frankası|Fdj|0
DKK = Danemarka kronası|Dkr
DOP = dominika pesosu|RD$
DZD = Alcəzir dinarı|DA
ECS = ekvador sukresi|||1
EEK = Estoniya krunu|Ekr
EGP = misir paundu|EG£
ERN = Eirtreya nakfası|Nfk
ESA = İspan pesetası (A)|||1
ESB = İspan pesetası (dəyşirik)|||1
ESP = İspan pesetası|Pts|0|1
ETB = Efiopiya birası|Br
EUR = Yevro|€
FIM = Fin markası|mk||1
FJD = Fici dolları|FJ$
FKP = Folkland Adası paundu|FK£
FRF = Fransız markası|₣||1
GBP = Britaniya paund sterlingi|UK£
GEK = Gürcüstan kupon lariti|||1
GEL = Gürcüstan larisi
GHC = Qana sedisi (1979-2007)|₵||1
GHS = Qana sedisi|GH₵
GIP = Gibraltar paundu|GI£
GMD = Qambiya dalasi
GNF = Qvineya frankası|FG|0
GNS = Qvineya sulisi|||1
GQE = Ekvatoriya Gvineya ekvele quneanası|||1
GRD = Yunan draçması|₯||1
GTQ = Qvatemala küetzalı
GWE = Portugal Qvineya eskudosu|||1
GWP = Qvineya-Bisau pesosu|||1
GYD = Quyana dolları|GY$|0
HKD = Honk Konq dolları|HK$
HNL = Honduras lempirası
HRD = Xorvatiya dinarı|||1
HRK = Xorvatiya kunu|kn
HTG = Haiti qourdu
HUF = Macarıstan forinti|Ft|0
IDR = İndoneziya rupisi|Rp|0
IEP = İrlandiya paundu|IR£||1
ILP = İzrail paundu|I£||1
ILS = İzrail yeni şekeli|₪
INR = Hindistan rupisi|Rs.
IQD = İraq dinarı||0
IRR = İran rialı||0
ISK = Aysland kronası|Ikr|0
ITL = İtaliya lirası|IT₤|0|1
JMD = Yamayka dolları|J$
JOD = İordaniya dinarı|JD|3
JPY = Yapon yeni|JP¥|0
KES = Kenya şillingi|Ksh
KGS = Kırğızstan somu
KHR = Kambodiya riyeli
KMF = Komoro frankı|CF|0
KPW = Şimal koreya vonu||0
KRW = Cənub koreya vonu|₩|0
KWD = Kuveyt dinarı|KD|3
KYD = Keyman Adaları dolları|KY$
KZT = Kazaxstan tenqesi
LAK = Laotiya kipi|₭|0
LBP = Lebanon paundu|LB£|0
LKR = Şri Lanka rupisi|SLRs
LRD = Liberiya dolları|L$
LSL = Lesoto lotisi
LTL = Litva litası|Lt
LTT = Litva talonası|||1
LUC = Luksemburq frankası (dəyişik)|||1
LUF = Luksemburq frankası||0|1
LUL = Luksemburq frankası (finans)|||1
LVL = Latviya latsı|Ls
LVR = Latviya rublu|||1
LYD = Liviya dinarı|LD|3
MAD = Morokko dirhamı
MAF = Morokko frankası|||1
MDL = Moldova leyusu
MGA = Madaqaskar ariarisi||0
MGF = Madaqaskar frankası||0|1
MKD = Masedoniya denarı
MLF = Mali frankı|||1
MMK = Myanmar kiyatı||0
MNT = Monqoliya tuqriki|₮|0
MOP = Makao patakası|MOP$
MRO = Mavritaniya oyuquyası|UM|0
MTP = Maltiz paundu|MT£||1
MUR = Mavritis rupiyi|MURs|0
MVR = Maldiv Adaları rufiyi
MWK = Malavi kvaçası
MXN = Meksika pesosu|MX$
MXP = Meksika gümüş pesosu|||1
MYR = Malaysiya rinqiti|RM
MZE = Mozambik eskudosu|||1
MZM = Qədim Mozambik metikalı|Mt||1
MZN = Mozambik metikalı|MTn
NAD = Namibiya dolları|N$
NGN = Nigeriya nairi|₦
NIC = Nikaraqua kordobu|||1
NLG = Hollandiya gilderi|fl||1
NOK = Norveç kronu|Nkr
NPR = Nepal rupiyi|NPRs
NZD = Yeni Zelandiya dolları|NZ$
OMR = Mman rialı||3
PAB = Panamaniya balboa|B/.
PEI = Peru inti|I/.||1
PEN = Peru sol nuyevosu|S/.
PES = Peru solu|||1
PGK = Papua Yeni Qvineya kini
PHP = Filipin pesosu|Php
PKR = Pakistan rupiyi|PKRs|0
PLN = Polsha zlotisi|zł
PLZ = Polsha zlotisi (1950-1995)|||1
PTE = Portuqal eskudosu|Esc||1
PYG = Paraqvay quarani|₲|0
QAR = Qatar rialı|QR
RHD = Rodezian dolları|RH$||1
ROL = Qədim Roman leyu|||1
RON = Roman leyu
RSD = Serbiya dinarı|din.|0
RUB = Rusiya rublu
RUR = Rusiya rublu (1991-1998)|||1
RWF = Rvanda frankı||0
SAR = Saudi riyalı|SR
SBD = Solomon Adaları dolları|SI$
SCR = Seyçel rupiyi|SRe
SDG = Sudan paundu
SEK = İsveç kronu|Skr
SGD = Sinqapur dolları|S$
SIT = Sloveniya toları|||1
SKK = Slovak korunası|Sk||1
SOS = Somaliya şillingi|Ssh|0
SRD = Surinam dolları|SR$
SUR = Sovet rublu|||1
SVC = el salvador kolonu|SV₡||1
SYP = Siriya paundu|SY£|0
SZL = Svazilənd lilangeni
THB = tay bahtı|฿
TJR = Tacikistan rublu|||1
TJS = Tacikistan somoni
TMM = Türkmənistan manatı||0|1
TND = Tunis dinarı|DT|3
TOP = Tonqa panqası|T$
TPE = Timor eskudu|||1
TRL = Türk köhnə lirası||0|1
TRY = Türk lirası|TL
TWD = Tayvan yeni dolları|NT$
TZS = Tanzaniya şilingi|TSh|0
UAH = Ukraina hrivnyası
UAK = Ukraina karbovenesası|||1
UGS = Uqanda şelingi (1966-1987)|||1
UGX = Uqanda şelingi|USh|0
USD = ABŞ dolları|US$
USN = ABŞ dolları (yeni gün)|||1
USS = ABŞ dolları (həmin gün)|||1
UYI = Uruqvay pesosu Unidades Indexadas|||1
UYP = Uruqvay pesosu (1975-1993)|||1
UYU = Uruqvay pesosu (Uruguayo)|$U
UZS = özbəkistan sumu||0
VEB = venesuela bolivarı|||1
VEF = venesuela bolivar fuerti|Bs.F.
VND = vyetnam donqu|₫|0
WST = qərb samoa talası|WS$
XAG = gümüş|||1
XAU = qızıl|||1
XCD = şərq karib dolları|EC$
XFO = Fransız gızıl frankı|||1
XFU = Fransız UİC frankı|||1
XOF = CFA franka BCEAO|CFA|0
XPD = Palladium|||1
XPF = CFP frankı|CFPF|0
XPT = platinum|||1
XXX = bilinməyən vəya gəcərsiz|||1
YDD = yemen dinarı|||1
YER = yemen rialı|YR|0
YUD = Yuqoslaviya dinarı (hard)|||1
YUM = Yuqoslaviya yeni dinarı (hard)|||1
YUN = Yuqoslaviya dinarı (dəyişik)|||1
ZAL = Cənub afrika randı (finans)|||1
ZAR = Cənub afrika randı|R
ZMK = Zambiya kvaçı|ZK|0
ZRN = Zair yeni zairi|NZ||1
ZRZ = Zair zairi|||1
ZWD = Zimbabve dolları|Z$|0|1
