# 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 = Adirham n Tgeldunin Taɛrabin Yedduklen
AOA = Akwanza n Ungula|Kz
AUD = Adular n Lusṭrali|AU$
BHD = Adinar Abaḥrini|BD|3
BIF = Afrank Aburandi|FBu|0
BWP = Apula Abusṭwanan
CAD = Adular Akanadi|CA$
CDF = Afrank Akunguli
CHF = Afrank Aswis
CNY = Ayuwan Renminbi Acinwa|CN¥
CVE = Akabuviradinu Askudi|CV$
DJF = Afrank Ajibuti|Fdj|0
DZD = Adinar Azzayri|DA
EGP = Apund Amaṣri|EG£
ERN = Anakfa Iritiri|Nfk
ETB = Abir Utyupi|Br
EUR = Uru|€
GBP = Apund Sterling Aglizi|UK£
GHC = Asidi Aɣani|₵||1
GMD = Adalasi Agambi
GNS = Afrank Aɣini|||1
INR = Arupi Ahendi|Rs.
JPY = Ayen Ajappuni|JP¥|0
KES = Aciling Akini|Ksh
KMF = Afrank Akamiruni|CF|0
LRD = Adular Alibiri|L$
LSL = Aluṭi Alizuṭi
LYD = Adinar Alibi|LD|3
MAD = Adirham Amerruki
MGA = Aryari Amalgac||0
MRO = Agiya Amuriṭani|UM|0
MUR = Arupi Amurisi|MURs|0
MWK = Akwaca Amalawi
MZM = Amitikal Amuzembiqi|Mt||1
NAD = Adular Anamibi|N$
NGN = Anayra Anijiri|₦
RWF = Afrank Aruwandi||0
SAR = Aryal Asuɛudi|SR
SCR = Arupi Aseycili|SRe
SDG = Apund Asudani
SHP = Apund Asant Ilini|SH£
SLL = Alyun|Le|0
SOS = Aciling Aṣumali|Ssh|0
STD = Asw Ṭum d Udubra Amenzay|Db|0
SZL = Alilangini
TND = Adinar Atunsi|DT|3
TZS = Aciling Aṭanẓani|TSh|0
UGX = Aciling Awgandi|USh|0
USD = Adular WD|US$
XAF = Afrank BCEA CFA|FCFA|0
XOF = Afrank BCEAO CFA|CFA|0
ZAR = Arand Afriqi n Wadda|R
ZMK = Akwaca Azambi|ZK|0
ZWD = Adular Azimbabwi|Z$|0|1
