# 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 = Drami armen||0
ANG = Gilderi antilian holandez
AOA = Kuanza angole
ARS = Peso argjentinase
AUD = Dollar australian|A$
AWG = Florin aruban
AZN = Manata azere
BAM = Marka e Bosnjë-Hercegovinës [e shkëmbyeshme]
BBD = Dollar barbadian
BDT = Takë e Bangladeshit
BGN = Levi bullgar
BHD = Dinar i Bahreinit||3
BIF = Franga burundiane||0
BMD = Dollar bermude
BND = Dollar i Bruneit
BOB = Boliviani bolivian
BRL = Real brazilian|R$
BSD = Dollar bahamasi
BTN = Ngultrum butanez
BWP = Pula botsvane
BYR = Rubla bjelloruse||0
BZD = Dollar Belize
CAD = Dollari kanadez|CA$
CDF = Franga kongole
CHF = Franga zvicerane
CLP = Peso kiliane||0
CNY = Juani kinez|CN¥
COP = Peso kolumbiane||0
CRC = Koloni kostarikan||0
CUC = Peso kubane e shkëmbyeshme
CUP = Peso kubane
CVE = Eskudo e Kepit të Gjelbër
CZK = Koruna e Republikës Çeke
DJF = Franga xhibutiane||0
DKK = Koronë daneze
DOP = Peso dominikane
DZD = Dinar algjerian
EGP = Stërlina egjiptiane
ERN = Nakfa e Eritresë
ETB = Bira etiopase
EUR = Euro|€
FJD = Dollar i Fixhit
FKP = Stërlina e Ishujve Folkland
GBP = Sterlina britanike|£
GEL = Lari gjeorgjian
GHS = Sejda ganeze
GIP = Sterlina e Gjibraltarit
GMD = Dalasi gambian
GNF = Franga guinease||0
GTQ = Kuecali i Guatemalës
GYD = Dollar guajanez||0
HKD = Dollar i Hong Kongut|HK$
HNL = Lempira hondurase
HRK = Kuna kroate
HTG = Gurd haitian
HUF = Forinta hungareze||0
IDR = Rupi indoneziane||0
ILS = Shekeli izrealit|₪
INR = Rupi indiane|₹
IQD = Dinar irakian||0
IRR = Rial iranian||0
ISK = Krona islandeze||0
JMD = Dollar xhamajkan
JOD = Dinar jordanez||3
JPY = Jen japonez|JP¥|0
KES = Shilinga keniane
KGS = Soma kirgize
KHR = Rial kamboxhian
KMF = Franga komore||0
KPW = Uoni i Koresë së Veriut||0
KRW = Uoni i Koresë së Jugut|₩|0
KWD = Dinar kuvajtian||3
KYD = Dollar i Ishujve Kajman
KZT = Tenga kazake
LAK = Kipa e Laosit||0
LBP = Sterlina libaneze||0
LKR = Rupi e Sri Lankës
LRD = Dollar liberian
LTL = Lita lituaneze
LVL = Lata letoneze|||1
LYD = Dinar libian||3
MAD = Dirham maroken
MDL = Leu moldav
MGA = Arieri malagas||0
MKD = Denar maqedonas
MMK = Kiatë e Mianmarit||0
MNT = Tugrika mongole||0
MOP = Patakë e Makaos
MRO = Ugija mauritane||0
MUR = Rupia mauritiane||0
MVR = Rufiu i Maldivit
MWK = Kuaça malaviane
MXN = Peso meksikane|MX$
MYR = Ringit malajzian
MZN = Metikali i Mozambikut
NAD = Dollar i Namibisë
NGN = Naira nigeriane
NIO = Kordoba nikaraguane
NOK = Krona norvegjeze
NPR = Rupi nepaleze
NZD = Dollar i Zelandës së Re|NZ$
OMR = Riali i Omanit||3
PAB = Balboa panameze
PEN = Sola nuevo-peruane
PGK = Kina e Papua-Guineas së Re
PHP = Peso filipinase
PKR = Rupi pakistaneze||0
PLN = Zllota polake
PYG = Guaran paraguaian||0
QAR = Rial i Katarit
RON = Leu rumun
RSD = Dinar serb||0
RUB = Rubla ruse
RWF = Franga ruandeze||0
SAR = Rial saudit
SBD = Dollar i Ishujve Solomon
SCR = Rupia e Sejshellzave
SDG = Stërlina sudaneze
SEK = Korona suedeze
SGD = Dollar i Singaporit
SHP = Stërlina e Ishullit të Shën Helenës
SLL = Leoni i Sierra Leones||0
SOS = Shilinga somaleze||0
SRD = Dollar surinamez
SSP = Stërlina e Sudanit të Jugut
STD = Dobra e Sao Tomes dhe Prinsipes||0
SYP = Sterlina siriane||0
SZL = Lilangeni i Svazilandit
THB = Bata tajlandeze|฿
TJS = Somona taxhike
TMT = Manata turkmene
TND = Dinar tunizian||3
TOP = Panga tongane
TRY = Lirë turke|TL
TTD = Dollar i Trinidadit dhe Tobagos
TWD = Dollar tajvanez|NT$
TZS = Shilinga e Tanzanisë||0
UAH = Rivnia ukrainase
UGX = Shilinga ugandeze||0
USD = Dollari amerikan|US$
UYU = Peso uruguaiane
UZS = Soma uzbeke||0
VEF = Bolivar venezuelian
VND = Dongë vietnameze|₫|0
VUV = Vatuja e Vanuatusë||0
WST = Tala samoane
XAF = Franga kamerunase|FCFA|0
XCD = Dollar 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 = Rial i Jemenit||0
ZAR = Randa e Afrikës së Jugut
ZMW = Kuaça e Zambikut
