# 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

AED = Diren di Emiradus Arabi Unidu
AOA = Kuanza|Kz
AUD = Dola australianu|AU$
BHD = Dinar di Barain|BD|3
BIF = Franku borundes|FBu|0
BWP = Pula di Botsuana
CAD = Dola kanadianu|CA$
CDF = Franku kongoles
CHF = Franku suisu
CNY = Iuan xines|CN¥
CVE = Skudu Kabuverdianu|CV$
DJF = Franku di Djibuti|Fdj|0
DZD = Dinar arjelinu|DA
EGP = Libra ejipsiu|EG£
ERN = Nafka di Eritreia|Nfk
ETB = Bir etiopi|Br
EUR = Euro|€
GBP = Libra sterlina britaniku|UK£
GHC = Sedi di Gana|₵||1
GMD = Dalasi
GNS = Sili|||1
INR = Rupia indianu|Rs.
JPY = Ieni japones|JP¥|0
KES = Xelin kenianu|Ksh
KMF = Franku di Komoris|CF|0
LRD = Dola liberianu|L$
LSL = Loti di Lezotu
LYD = Dinar libiu|LD|3
MAD = Diren marokinu
MGA = Ariari di Madagaskar||0
MRO = Ougia|UM|0
MUR = Rupia di Maurisias|MURs|0
MWK = Kuaxa di Malaui
MZM = Metikal|Mt||1
NAD = Dola namibianu|N$
NGN = Naira|₦
RWF = Franku ruandes||0
SAR = Rial saudita|SR
SCR = Rupia di Seixelis|SRe
SDG = Libra sudanes
SDP = Libra sudanes antigu|||1
SHP = Libra di Santa Ilena|SH£
SLL = Leone di Sera Leoa|Le|0
SOS = Xelin somalianu|Ssh|0
STD = Dobra di Sãu Tume i Prinsipi|Db|0
SZL = Lilanjeni
TND = Dinar tunizianu|DT|3
TZS = Xelin di Tanzania|TSh|0
UGX = Xelin ugandensi|USh|0
USD = Dola merkanu|US$
XAF = Franku CFA BEAC|FCFA|0
XOF = Franku CFA BCEAO|CFA|0
ZAR = Rand sulafrikanu|R
ZMK = Kuaxa zambianu|ZK|0
ZWD = Dola di Zimbabue|Z$|0|1
