# 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 = Iropiyianí  ɔ́ɔ̄ lmarabu
AOA = Iropiyianí e Angola|Kz
AUD = Iropiyianí e Austria|AU$
BHD = Iropiyianí e Bahareini|BD|3
BIF = Iropiyianí e Burundi|FBu|0
BWP = Iropiyianí e Botswana
CAD = Iropiyianí e Kanada|CA$
CDF = Iropiyianí e Kongo
CHF = Iropiyianí e Uswisi
CNY = Iropiyianí e China|CN¥
CVE = Iropiyianí e Kepuvede|CV$
DJF = Iropiyianí e Jibuti|Fdj|0
DZD = Iropiyianí e Algeria|DA
EGP = Iropiyianí e Misri|EG£
ERN = Iropiyianí e Eritrea|Nfk
ETB = Iropiyianí e Uhabeshi|Br
EUR = Iropiyianí e yuro|€
GBP = Iropiyianí e Nkɨ́resa|UK£
GHC = Iropiyianí e Ghana|₵||1
GMD = Iropiyianí e Gambia
GNS = Iropiyianí e Gine|||1
INR = Iropiyianí e India|Rs.
JPY = Iropiyianí e Japani|JP¥|0
KES = Iropiyianí e Kenya|Ksh
KMF = Iropiyianí e Komoro|CF|0
LRD = Iropiyianí e Liberia|L$
LSL = Iropiyianí e Lesoto
LYD = Iropiyianí e Libya|LD|3
MAD = Iropiyianí e Moroko
MGA = Iropiyianí e Bukini||0
MRO = Iropiyianí e Moritania|UM|0
MUR = Iropiyianí e Morisi|MURs|0
MWK = Iropiyianí e Malawi
MZM = Iropiyianí e Msumbiji|Mt||1
NAD = Iropiyianí e Namibia|N$
NGN = Iropiyianí e Nijeria|₦
RWF = Iropiyianí e Rwanda||0
SAR = Iropiyianí e Saudi|SR
SCR = Iropiyianí e Shelisheli|SRe
SDG = Iropiyianí e Sudani
SHP = Iropiyianí e Santahelena|SH£
SLL = Iropiyianí e leoni|Le|0
SOS = Iropiyianí e Somalia|Ssh|0
STD = Iropiyianí e Saotome|Db|0
SZL = Iropiyianí e lilangeni
TND = Iropiyianí e Tunisia|DT|3
TZS = Iropiyianí e Tanzania|TSh|0
UGX = Iropiyianí e Uganda|USh|0
USD = Iropiyianí  ɔ́ɔ̄ lamarekani|US$
XAF = Iropiyianí e CFA BEAC|FCFA|0
XOF = Iropiyianí e CFA BCEAO|CFA|0
ZAR = Iropiyianí e Afrika Kusini|R
ZMK = Iropiyianí e Sambia|ZK|0
ZWD = Iropiyianí e Simbabwe|Z$|0|1
