# Copyright 2012 Google Inc.
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# 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
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA
AED = Dirhami i Emirateve të Bashkuara Arabe
AFN = Afgani afgan||0
ALL = Leku shqiptar|Lekë|0
AMD = Dramia armene
ANG = Gilderi antilian holandez
AOA = Kuanza e Angolës
ARS = Pesoja argjentinase
AUD = Dollari australian|A$
AWG = Florini aruban
AZN = Manata azerbajxhanase
BAM = Marka e Bosnjë-Hercegovinës [e shkëmbyeshme]
BBD = Dollari barbadian
BDT = Taka e Bangladeshit
BGN = Leva bullgare
BHD = Dinari i Bahreinit||3
BIF = Franga burundiane||0
BMD = Dollari i Bermudeve
BND = Dollari i Bruneit
BOB = Boliviani i Bolivisë
BRL = Reali brazilian|R$
BSD = Dollari i Bahamasit
BTN = Ngultrumi butanez
BWP = Pula botsuane
BYN = Rubla bjelloruse
BYR = Rubla bjelloruse (2000–2016)||0|1
BZD = Dollari i Ishujve Belize
CAD = Dollari kanadez|CA$
CDF = Franga kongole
CHF = Franga zvicerane
CLP = Pesoja kiliane||0
CNH = Juani kinez (për treg të jashtëm)|||1
CNY = Juani kinez|CN¥
COP = Pesoja kolumbiane
CRC = Koloni kostarikan
CUC = Pesoja kubaneze e shkëmbyeshme
CUP = Pesoja kubaneze
CVE = Eskudoja e Kepit të Gjelbër
CZK = Koruna e Çekisë
DJF = Franga xhibutiane||0
DKK = Korona daneze
DOP = Pesoja dominikane
DZD = Dinari algjerian
EGP = Sterlina egjiptiane
ERN = Nakfa e Eritresë
ETB = Bira etiopiane
EUR = Euroja|€
FJD = Dollari i Fixhit
FKP = Stërlina e Ishujve Falkland
GBP = Sterlina britanike|£
GEL = Laria gjeorgjiane
GHS = Sejda ganeze
GIP = Sterlina e Gjibraltarit
GMD = Dalasi gambian
GNF = Franga guinease||0
GTQ = Kuecali i Guatemalës
GYD = Dollari guajanez
HKD = Dollari i Hong-Kongut|HK$
HNL = Lempira hondurase
HRK = Kuna kroate
HTG = Gurdi haitian
HUF = Forinta hungareze
IDR = Rupia indoneziane
ILS = Shekeli izrealit|₪
INR = Rupia indiane|₹
IQD = Dinari irakian||0
IRR = Riali iranian||0
ISK = Korona islandeze||0
JMD = Dollari xhamajkan
JOD = Dinari jordanez||3
JPY = Jeni japonez|JP¥|0
KES = Shilinga keniane
KGS = Soma kirgize
KHR = Riali kamboxhian
KMF = Franga komore||0
KPW = Uoni koreano-verior||0
KRW = Uoni koreano-jugor|₩|0
KWD = Dinari kuvajtian||3
KYD = Dollari i Ishujve Kajman
KZT = Tenga kazake
LAK = Kipa e Laosit||0
LBP = Sterlina libaneze||0
LKR = Rupia e Sri-Lankës
LRD = Dollari liberian
LTL = Lita lituaneze|||1
LVL = Lata letoneze|||1
LYD = Dinari libian||3
MAD = Dirhami maroken
MDL = Leuja moldave
MGA = Arieri malagez||0
MKD = Denari maqedonas
MMK = Kiata e Mianmarit||0
MNT = Tugrika mongole
MOP = Pataka e Makaos
MRO = Ugija mauritane (1973–2017)||0|1
MRU = Ugija mauritane
MUR = Rupia mauritiane
MVR = Rufiu i Maldivit
MWK = Kuaça malaviane
MXN = Pesoja meksikane|MX$
MYR = Ringiti malajzian
MZN = Metikali i Mozambikut
NAD = Dollari i Namibisë
NGN = Naira nigeriane
NIO = Kordoba nikaraguane
NOK = Korona norvegjeze
NPR = Rupia nepaleze
NZD = Dollari i Zelandës së Re|NZ$
OMR = Riali i Omanit||3
PAB = Balboa panameze
PEN = Sola peruane
PGK = Kina e Guinesë së Re-Papua
PHP = Pesoja filipinase
PKR = Rupia pakistaneze
PLN = Zllota polake
PYG = Guarani paraguaian||0
QAR = Riali i Katarit
RON = Leuja rumune
RSD = Dinari serb||0
RUB = Rubla ruse
RWF = Franga ruandeze||0
SAR = Riali saudit
SBD = Dollari i Ishujve Solomonë
SCR = Rupia e Ishujve Sishelë
SDG = Sterlina sudaneze
SEK = Korona suedeze
SGD = Dollari i Singaporit
SHP = Sterlina e Ishullit të Shën-Helenës
SLL = Leoni i Sierra-Leones||0
SOS = Shilinga somaleze||0
SRD = Dollari surinamez
SSP = Sterlina sudanezo-jugore
STD = Dobra e Sao-Tomes dhe Prinsipes (1977–2017)||0|1
STN = Dobra e Sao-Tomes dhe Prinsipes
SYP = Sterlina siriane||0
SZL = Lilangeni i Suazilandës
THB = Bata tajlandeze|฿
TJS = Somona taxhike
TMT = Manata turkmene
TND = Dinari tunizian||3
TOP = Panga tongane
TRY = Lira turke|TL
TTD = Dollari i Trinidadit dhe Tobagos
TWD = Dollari tajvanez|NT$
TZS = Shilinga e Tanzanisë
UAH = Rivnia ukrainase
UGX = Shilinga ugandeze||0
USD = Dollari amerikan|US$
UYU = Pesoja uruguaiane
UZS = Soma uzbeke
VEF = Bolivari venezuelian (2008–2018)|||1
VES = Bolivari venezuelas
VND = Donga vietnameze|₫|0
VUV = Vatuja e Vanuatusë||0
WST = Tala samoane
XAF = Franga kamerunase|FCFA|0
XCD = Dollari i Karaibeve Lindore|EC$
XOF = Franga e Bregut të Fildishtë|CFA|0
XPF = Franga franceze e Polinezisë|CFPF|0
XXX = Valutë e panjohur|¤||1
YER = Riali i Jemenit||0
ZAR = Randi afrikano-jugor
ZMW = Kuaça e Zambikut
