# 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 dos Emirados Árabes Unidos
AFA = Afeghani (1927-2002)|||1
AFN = Afeghani|Af|0
ANG = Florim das Antilhas Holandesas|NAf.
AWG = Florim de Aruba|Afl.
BAD = Dinar da Bósnia-Herzegóvina|||1
BAM = Marco bósnio-herzegóvino conversível|KM
BEC = Franco belga (convertível)|||1
BYB = Novo rublo bielorrusso (1994-1999)|||1
CYP = Libra de Chipre|CY£||1
CZK = Coroa da República Checa|Kč
ECV = Unidad de Valor Constante (UVC) do Equador|||1
FJD = Dólar das Fiji|FJ$
GHC = Cedi do Gana|₵||1
GMD = Dalasi da Gâmbia
GNF = Franco da Guiné|FG|0
GTQ = Quetzal da Guatemala
HNL = Lempira das Honduras
KWD = Dinar koweitiano|KD|3
KYD = Dólar das Ilhas Caimão|KY$
MKD = Dinar macedónio
MLF = Franco do Mali|||1
MWK = Kwacha do Malauí
MXP = Peso Plata mexicano (1861-1992)|||1
MXV = Unidad de Inversion (UDI) mexicana|||1
NIC = Córdoba nicaraguano|||1
NIO = Córdoba Ouro nicaraguano|C$
PLN = Zloti polaco|zł
PLZ = Zloti polaco (1950-1995)|||1
QAR = Rial do Qatar|QR
SGD = Dólar de Singapura|S$
TZS = Xelim de Tanzânia|TSh|0
WST = Tala de Samoa Ocidental|WS$
XEU = Unidade da Moeda Europeia|||1
XXX = Moeda inválida ou desconhecida|||1
YUD = Dinar forte jugoslavo|||1
YUM = Super Dinar jugoslavo|||1
YUN = Dinar conversível jugoslavo|||1
ZWD = Dólar do Zimbabwe|Z$|0|1
