# 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 = Dirham ya Falme za Kiarabu
AFN = Afghani ya Afghanistan||0
ALL = Lek ya Albania||0
AMD = Dram ya Armenia
ANG = Guilder ya Antili za Kiholanzi
AOA = Kwanza ya Angola
ARS = Peso ya Argentina
AUD = Dola ya Australia|A$
AWG = Florin ya Aruba
AZN = Manat ya Azerbaijan
BAM = Convertible Mark ya Bosnia na Hezegovina
BBD = Dola ya Barbados
BDT = Taka ya Bangladesh
BGN = Lev ya Bulgaria
BHD = Dinar ya Bahrain||3
BIF = Faranga ya Burundi||0
BMD = Dola ya Bermuda
BND = Dola ya Brunei
BOB = Boliviano ya Bolivia
BRL = Real ya Brazil|R$
BSD = Dola ya Bahamas
BTN = Ngultrum ya Bhutan
BWP = Pula ya Botswana
BYN = Ruble ya Belarus
BYR = Ruble ya Belarusi (2000–2016)||0|1
BZD = Dola ya Belize
CAD = Dola ya Canada|CA$
CDF = Faranga ya Kongo
CHF = Faranga ya Uswisi
CLP = Peso ya Chile||0
CNH = Yuan ya Uchina (huru)|||1
CNY = Yuan ya Uchina|CN¥
COP = Peso ya Colombia
CRC = Colon ya Costa Rica
CUC = Peso ya Cuba Inayoweza Kubadilishwa
CUP = Peso ya Cuba
CVE = Eskudo ya Cape Verde
DJF = Faranga ya Djibouti||0
DKK = Krone ya Denmark
DOP = Peso ya Dominica
DZD = Dinar ya Aljeria
EGP = Pauni ya Misri
ERN = Nakfa ya Eritrea
ETB = Birr ya Uhabeshi
EUR = Yuro|€
FJD = Dola ya Fiji
FKP = Pauni ya Visiwa vya Falkland
GBP = Pauni ya Uingereza|£
GEL = Lari ya Georgia|₾
GHC = Sedi ya Ghana|||1
GHS = Cedi ya Ghana
GIP = Pauni ya Gibraltar
GMD = Dalasi ya Gambia
GNF = Faranga ya Guinea||0
GNS = Faranga ya Gine|||1
GTQ = Quetzal ya Guatemala
GYD = Dola ya Guyana
HKD = Dola ya Hong Kong|HK$
HNL = Lempira ya Hondurasi
HRK = Kuna ya Croatia
HTG = Gourde ya Haiti
HUF = Forint ya Hungaria
IDR = Rupiah ya Indonesia
ILS = Shekeli Mpya ya Israel|₪
INR = Rupia ya India|₹
IQD = Dinar ya Iraq||0
IRR = Rial ya Iran||0
ISK = Krona ya Aisilandi||0
JMD = Dola ya Jamaica
JOD = Dinar ya Jordan||3
JPY = Yen ya Ujapani|JP¥|0
KES = Shilingi ya Kenya|Ksh
KGS = Som ya Kyrgystan
KHR = Riel ya Cambodia
KMF = Faranga ya Comoros||0
KPW = Won ya Korea Kaskazini||0
KRW = Won ya Korea Kusini|₩|0
KWD = Dinar ya Kuwait||3
KYD = Dola ya Visiwa vya Cayman
KZT = Tenge ya Kazakhstan
LAK = Kip ya Laosi||0
LBP = Pauni ya Lebanon||0
LKR = Rupia ya Sri Lanka
LRD = Dola ya Liberia
LSL = Loti ya Lesoto
LTL = Litas ya Lithuania|||1
LVL = Lats ya Lativia|||1
LYD = Dinari ya Libya||3
MAD = Dirham ya Morocco
MDL = Leu ya Moldova
MGA = Ariari ya Madagascar||0
MKD = Denar ya Macedonia
MMK = Kyat ya Myanmar||0
MNT = Tugrik ya Mongolia
MOP = Pataca ya Macau
MRO = Ouguiya ya Mauritania (1973–2017)||0|1
MRU = Ouguiya ya Mauritania
MUR = Rupia ya Mauritius
MVR = Rufiyaa ya Maldives
MWK = Kwacha ya Malawi
MXN = Peso ya Mexico|MX$
MYR = Ringgit ya Malaysia
MZM = Metikali ya Msumbiji (1980–2006)|||1
MZN = Metikali ya Msumbiji
NAD = Dola ya Namibia
NGN = Naira ya Nigeria
NIO = Cordoba ya Nicaragua
NOK = Krone ya Norway
NPR = Rupia ya Nepal
NZD = Dola ya New Zealand|NZ$
OMR = Rial ya Omani||3
PAB = Balboa ya Panama
PEN = Sol ya Peru
PGK = Kina ya Papua New Guinea
PHP = Peso ya Ufilipino
PKR = Rupia ya Pakistan
PLN = Zloty ya Poland
PYG = Guarani ya Paraguay||0
QAR = Rial ya Qatar
RON = Leu ya Romania
RSD = Dinar ya Serbia||0
RUB = Ruble ya Urusi
RWF = Faranga ya Rwanda||0
SAR = Riyal ya Saudia
SBD = Dola ya Visiwa vya Solomon
SCR = Rupia ya Ushelisheli
SDG = Pauni ya Sudan
SDP = Pauni ya Sudani (1957–1998)|||1
SEK = Krona ya Uswidi
SGD = Dola ya Singapore
SHP = Pauni ya St. Helena
SLL = Leone||0
SOS = Shilingi ya Somalia||0
SRD = Dola ya Suriname
SSP = Pauni ya Sudan Kusini
STD = Dobra ya Sao Tome na Principe (1977–2017)||0|1
STN = Dobra ya Sao Tome na Principe
SYP = Pauni ya Syria||0
SZL = Lilangeni
THB = Baht ya Tailandi|฿
TJS = Somoni ya Tajikistan
TMT = Manat ya Turkmenistan
TND = Dinari ya Tunisia||3
TOP = Paʻanga ya Tonga
TRY = Lira ya Uturuki|TL
TTD = Dola ya Trinidad na Tobago
TWD = Dola ya Taiwan|NT$
TZS = Shilingi ya Tanzania|TSh
UAH = Hryvnia ya Ukraine
UGX = Shilingi ya Uganda||0
USD = Dola ya Marekani|US$
UYU = Peso ya Uruguay
UZS = Som ya Uzbekistan
VEF = Bolivar ya Venezuela (2008–2018)|||1
VES = Bolivar ya Venezuela
VND = Dong ya Vietnam|₫|0
VUV = Vatu ya Vanuatu||0
WST = Tala ya Samoa
XAF = Faranga ya Afrika ya Kati CFA|FCFA|0
XCD = Dola ya Caribbean Mashariki|EC$
XOF = Faranga ya Afrika Magharibi CFA|CFA|0
XPF = Faranga ya CFP|CFPF|0
XXX = Sarafu isiyojulikana|¤||1
YER = Rial ya Yemen||0
ZAR = Randi ya Afrika Kusini
ZMK = Kwacha ya Zambia (1968–2012)||0|1
ZMW = Kwacha ya Zambia
ZWD = Dola ya Zimbabwe||0|1
