# Copyright 2012 Google Inc.
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# 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
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA
AED = Dirihamɛ ya Lémila alabo
ALL = Lek||0
AOA = Kwanza ya Angóla
ARS = Peso y’Argentina
AUD = Dolarɛ ya Ositali|A$
AWG = Guldeni y’ Aruba
BAM = Mark ya kobóngwama
BBD = Dolále ya Barbados
BGN = Lev ya Bulgaria
BHD = Dinarɛ ya Bahrɛnɛ||3
BIF = Falánga ya Burundi||0
BOB = Boliviano
BRL = Real ya Brazil|R$
BSD = Dolále ya Bahamas
BWP = Pula ya Botswana
BYN = Rubelé ya Bielorusí
BYR = Rubelé ya Bielorusí (2000–2016)||0|1
BZD = Dolále ya Belíze
CAD = Dolarɛ ya Kanadá|CA$
CDF = Falánga ya Kongó|FC
CHF = Falánga ya Swisɛ|Fr.
CLP = Peso ya Shili||0
CNY = Yuanɛ Renminbi ya Sinɛ|CN¥
COP = Peso ya Kolombi
CRC = Colon ya Kosta Rika
CUP = Peso ya Kuba
CVE = Esikudo ya Kapevɛrɛ
CZK = Motolé Sheki
DJF = Falánga ya Dzibuti||0
DKK = Motolé ya Danemark
DOP = Peso Dominikani
DZD = Dinarɛ ya Alizeri
EGP = Paunɛ ya Ezípitɛ
ERN = Nakfa ya Elitlɛ
ETB = Birɛ ya Etsiópi
EUR = Ɛlɔ́|€
FJD = Dolále ya Fiji
GBP = Paunɛ ya Angɛlɛtɛ́lɛ|£
GHC = Sedi ya Gana|||1
GHS = Cedi
GIP = Bojito ya Gibraltar
GMD = Dalasi ya Gambi
GNF = Falánga ya Gine||0
GNS = Falánga ya Ginɛ|||1
GTQ = Quetzal
HNL = Lempira
HRK = Kuna ya Kroasia
HTG = Gurde
HUF = Folinte
INR = Rupi ya Índɛ|₹
ISK = Motolé ya Islandi||0
JMD = Dolále ya Jamaïke
JPY = Yeni ya Zapɔ|JP¥|0
KES = Shilingɛ ya Kenya
KMF = Falánga ya Komoro||0
KYD = Dolále ya Bisanga bya Kayman
LRD = Dolarɛ ya Liberya
LSL = Loti ya Lesóto
LTL = Litas ya Litwani|||1
LVL = Lats ya Letoni|||1
LYD = Dinarɛ ya Libí||3
MAD = Dirihame ya Marokɛ
MGA = Falánga ya Madagasikarɛ||0
MKD = Denalé
MRO = Ugwiya ya Moritani (1973–2017)||0|1
MRU = Ugwiya ya Moritani
MUR = Rupi ya Morisi
MWK = Kwasha ya Malawi
MXN = Peso ya Mexiko|MX$
MZM = Metikali ya Mozambiki|||1
MZN = Métikal
NAD = Dolarɛ ya Namibi
NGN = Naira ya Nizerya
NOK = Motolé ya Norvej
NZD = Dolále ya Zeland ya Sika|NZ$
PAB = Balboa
PEN = Sol Sika
PGK = Kina
PLN = Sloty
PYG = Guarani||0
RON = Leu Sika
RSD = Dinalé ya Serbia||0
RUB = Rubelé ya Rusí
RWF = Falánga ya Rwanda||0
SAR = Riyalɛ ya Alabi Sawuditɛ
SBD = Dolále ya Bisanga Solomoni
SCR = Rupi ya Sɛshɛlɛ
SDG = Dinarɛ ya Sudá
SDP = Paunɛ ya Sudá|||1
SEK = Motolé ya Swédi
SHP = Paunɛ ya Sántu elena
SLL = Leonɛ||0
SOS = Shilingɛ ya Somali||0
SSP = Bojito ya Sudaní ya Súdi
STD = Dobra ya Sao Tomé mpé Presipe (1977–2017)||0|1
STN = Dobra ya Sao Tomé mpé Presipe
SZL = Lilangeni
TND = Dinarɛ ya Tinizi||3
TOP = Pa’Anga
TTD = Dolále ya Trinidad mpé Tobago
TZS = Shilingɛ ya Tanzani
UAH = Griwná
UGX = Shilingɛ ya Uganda||0
USD = Dolarɛ ya Ameriki|US$
VUV = Vatu||0
WST = Tala
XAF = Falánga CFA BEAC|FCFA|0
XCD = Dolále ya Kalibí Monyɛlɛ|EC$
XOF = Falánga CFA BCEAO|CFA|0
XPF = Falánga CFP|F CFP|0
ZAR = Randɛ ya Afríka Súdi
ZMK = Kwasha ya Zambi (1968–2012)||0|1
ZMW = Kwasha ya Zambi
ZWD = Dolarɛ ya Zimbabwɛ||0|1
