# 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 = United Arab Emirates Dirham
AOA = Angolan Kwanzab|Kz
AUD = Australian Dollari|AU$
BHD = Bahrain Dinar|BD|3
BIF = Burundi Franc|FBu|0
BWP = Botswanan Pulab
CAD = Canadian Dollari|CA$
CDF = Congolese Franc
CHF = Swiss Franci
CNY = Chinese Yuan Renminbi|CN¥
CVE = Escudo Caboverdiano|CV$
DJF = Djibouti Franc|Fdj|0
DZD = Algerian Dinar|DA
EGP = Egytian Ponds|EG£
ERN = Eritreian Nakfa|Nfk
ETB = Ethiopian Birr|Br
EUR = Eurob|€
GBP = British Ponds|UK£
GHC = Ghana Cedi|₵||1
GMD = Gambia Dalasi
GNS = Guinea Franc|||1
INR = Indian Rupee|Rs.
JPY = Japanese Yenni|JP¥|0
KES = Kenyan Shilling|Ksh
KMF = Comorian Franc|CF|0
LRD = Liberian Dollar|L$
LSL = Lesotho Loti
LYD = Libyan Dinar|LD|3
MAD = Moroccan Dirham
MGA = Malagasy Franc||0
MRO = Mauritania Ouguiya|UM|0
MUR = Mauritius Rupeeb|MURs|0
MWK = Malawian Kwachab
MZM = Mozambique Metical|Mt||1
NAD = Namibia Dollari|N$
NGN = Nigerian Naira|₦
RWF = Rwanda Franci||0
SAR = Saudi Riyal|SR
SCR = Seychelles Rupee|SRe
SDG = Sudanese Dinar
SDP = Sudanese Ponds|||1
SHP = St Helena Ponds|SH£
SLL = Leone|Le|0
SOS = Somali Shillings|Ssh|0
STD = Sao Tome and Principe Dobra|Db|0
SZL = Lilangeni
TND = Tunisian Dinar|DT|3
TZS = Tanzanian Shillings|TSh|0
UGX = Ugandan Shillings|USh|0
USD = US Dollari|US$
XAF = CFA Franc BEAC|FCFA|0
XOF = CFA Franc BCEAO|CFA|0
ZAR = South African Randi|R
ZMK = Zambian Kwachab|ZK|0
ZWD = Zimbabwe Dollari|Z$|0|1
