# 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 Afuganistani||0
ALL = Lek ya Albania||0
AMD = Dram ya Armenia||0
ANG = Guilder ya Antili za Kiholanzi
AOA = kwanza ya Angola
ARS = Peso ya Ajentina
AUD = dola ya Australia|A$
AWG = Florin ya Aruba
AZN = Manat ya Azebaijan
BAM = Mark ya Bosnia na Hezegovina Inayoweza Kubadilishwa
BBD = Dola ya Barbados
BDT = Taka ya Bangladesh
BGN = Lev ya Bulgaria
BHD = dinari ya Bahareni||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
BYR = Ruble ya Belarusi||0
BZD = Dola ya Belize
CAD = dola ya Kanada|CA$
CDF = faranga ya Kongo
CHF = faranga ya Uswisi
CLP = Peso ya Chile||0
CNY = yuan Renminbi ya China|CN¥
COP = Peso ya Kolombia||0
CRC = Colon ya Kostarika||0
CUC = Peso ya Cuba Inayoweza Kubadilishwa
CUP = Peso ya Cuba
CVE = eskudo ya Kepuvede
CZK = Koruna ya Jamhuri ya Cheki
DJF = faranga ya Jibuti||0
DKK = Krone ya Denmaki
DOP = Peso ya Dominika
DZD = dinari ya Aljeria
EGP = pauni ya Misri
ERN = nakfa ya Eritrea
ETB = bir 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 = Franc ya Guinea||0
GNS = faranga ya Gine|||1
GTQ = Quetzal ya Guatemala
GYD = Dola ya Guyana||0
HKD = Dola ya Hong Kong|HK$
HNL = Lempira ya Hondurasi
HRK = Kuna ya Kroeshia
HTG = Gourde ya Haiti
HUF = Forint ya Hangaria||0
IDR = Rupiah ya Indonesia||0
ILS = Sheqel Mpya ya Israeli|₪
INR = rupia ya India|₹
IQD = Dinari ya Irak||0
IRR = Rial ya Iran||0
ISK = Krona ya Isilandi||0
JMD = Dola ya Jamaica
JOD = Dinar ya Yordani||3
JPY = sarafu ya Kijapani|JP¥|0
KES = shilingi ya Kenya|Ksh
KGS = Som ya Kirigistani
KHR = Riel ya Kambodia
KMF = faranga ya Komoro||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 Kazakistani
LAK = Kip ya Laosi||0
LBP = Pauni ya Lebanon||0
LKR = Rupee ya Sri Lanka
LRD = dola ya Liberia
LSL = loti ya Lesoto
LTL = Litas ya Lithuania
LVL = Lats ya Lativia|||1
LYD = dinari ya Libya||3
MAD = dirham ya Moroko
MDL = Leu ya Moldova
MGA = faranga ya Bukini||0
MKD = Denar ya Masedonia
MMK = Kyat ya Myama||0
MNT = Tugrik ya Mongolia||0
MOP = Pataca ya Macau
MRO = ugwiya ya Moritania||0
MUR = rupia ya Morisi||0
MVR = Rufiyaa ya Maldivi
MWK = kwacha ya Malawi
MXN = Peso ya Meksiko|MX$
MYR = Ringgit ya Malaysia
MZM = metikali ya Msumbiji (1980–2006)|||1
MZN = Metikali ya Msumbiji
NAD = dola ya Namibia
NGN = naira ya Nijeria
NIO = Kodoba ya Nikaragua
NOK = Krone ya Norwe
NPR = Rupee ya Nepali
NZD = Dola ya Nyuzilandi|NZ$
OMR = Rial ya Oman||3
PAB = Balboa ya Panama
PEN = Nuevo Sol ya Peru
PGK = Kina ya Papua New Guinea
PHP = Peso ya Ufilipino
PKR = Rupee ya Pakistan||0
PLN = Zloty ya Polandi
PYG = Guarani ya Paragwai||0
QAR = Rial ya Katari
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 Shelisheli
SDG = dinari ya Sudani
SDP = pauni ya Sudani|||1
SEK = Krona ya Uswidi
SGD = Dola ya Singapuri
SHP = pauni ya Santahelena
SLL = leoni||0
SOS = shilingi ya Somalia||0
SRD = Dola ya Suriname
SSP = Pauni ya Sudani Kusini
STD = dobra ya Sao Tome na Principe||0
SYP = Pauni ya Syria||0
SZL = lilangeni
THB = Baht ya Tailandi|฿
TJS = Somoni ya Tajikistani
TMT = Manat ya Turukimenistani
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|0
UAH = Hryvnia ya Ukrania
UGX = shilingi ya Uganda||0
USD = dola ya Marekani|US$
UYU = Peso ya Urugwai
UZS = Som ya Uzibekistani||0
VEF = Bolivar ya Venezuela
VND = Dong ya Kivietinamu|₫|0
VUV = Vatu ya Vanuatu||0
WST = Tala ya Samoa
XAF = faranga CFA BEAC|FCFA|0
XCD = Dola ya Karibea ya Mashariki|EC$
XOF = faranga CFA BCEAO|CFA|0
XPF = Franc ya CFP|CFPF|0
XXX = Fedha 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
