# 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 = dirham ya Falme dha Kiarabu
AOA = kwandha ya Angola|Kz
AUD = dola ya Authtralia|AU$
BHD = dinari ya Bahareni|BD|3
BIF = faranga ya Burundi|FBu|0
BWP = pula ya Botthwana
CAD = dola ya Kanada|CA$
CDF = faranga ya Kongo
CHF = faranga ya Uthwithi
CNY = yuan renminbi ya China|CN¥
CVE = ethkudo ya Kepuvede|CV$
DJF = faranga ya Jibuti|Fdj|0
DZD = dinari ya Aljeria|DA
EGP = pauni ya Mithri|EG£
ERN = nakfa ya Eritrea|Nfk
ETB = bir ya Uhabeshi|Br
EUR = yuro|€
GBP = pauni ya Uingeredha|UK£
GHC = thedi ya Ghana|₵||1
GMD = dalathi ya Gambia
GNS = faranga ya Gine|||1
INR = rupia ya India|Rs.
JPY = tharafu ya Kijapani|JP¥|0
KES = shilingi ya Kenya|Ksh
KMF = faranga ya Komoro|CF|0
LRD = dola ya Liberia|L$
LSL = loti ya Lethoto
LYD = dinari ya Libya|LD|3
MAD = dirham ya Moroko
MGA = faranga ya Bukini||0
MRO = ugwiya ya Moritania|UM|0
MUR = rupia ya Morithi|MURs|0
MWK = kwacha ya Malawi
MZM = metikali ya Mthumbiji|Mt||1
NAD = dola ya Namibia|N$
NGN = naira ya Nijeria|₦
RWF = faranga ya Rwanda||0
SAR = riyal ya Thaudia|SR
SCR = rupia ya Shelisheli|SRe
SDG = dinari ya Thudani
SDP = pauni ya Thudani|||1
SHP = pauni ya Thantahelena|SH£
SLL = leoni|Le|0
SOS = shilingi ya Thomalia|Ssh|0
STD = dobra ya Thao Tome na Principe|Db|0
SZL = lilangeni
TND = dinari ya Tunithia|DT|3
TZS = shilingi ya Tandhania|TSh|0
UGX = shilingi ya Uganda|USh|0
USD = dola ya Marekani|US$
XAF = faranga CFA BEAC|FCFA|0
XOF = faranga CFA BCEAO|CFA|0
ZAR = randi ya Afrika Kuthini|R
ZMK = kwacha ya Dhambia|ZK|0
ZWD = dola ya Dhimbabwe|Z$|0|1
