# 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||0
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||0
MUR = Rupi ya Morisi||0
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||0|1
SZL = Lilangeni
TND = Dinarɛ ya Tinizi||3
TOP = Pa’Anga
TTD = Dolále ya Trinidad mpé Tobago
TZS = Shilingɛ ya Tanzani||0
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
