# 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 = dilham ya Falme za Kialabu
AOA = kwanza ya Angola
AUD = dola ya Austlalia|A$
BHD = dinali ya Bahaleni||3
BIF = falanga ya Bulundi||0
BWP = pula ya Botswana
CAD = dola ya Kanada|CA$
CDF = falanga ya Kongo
CHF = falanga ya Uswisi
CNY = yaun lenminbi ya China|CN¥
CVE = eskudo ya Kepuvede
DJF = falanga ya Jibuti||0
DZD = dinali ya Aljelia
EGP = pauni ya Misli
ERN = nakfa ya Elitlea
ETB = bil ya Uhabeshi
EUR = yulo|€
GBP = pauni ya Uingeeza|£
GHC = sedi ya Ghana|||1
GMD = dalasi ya Gambia
GNS = falanga ya Gine|||1
INR = lupia ya India|₹
JPY = salafu ya Kijapani|JP¥|0
KES = shilingi ya Kenya
KMF = falanga ya Komolo||0
LRD = dola ya Libelia
LSL = loti ya Lesoto
LYD = dinali ya Libya||3
MAD = dilham ya Moloko
MGA = falanga ya Bukini||0
MRO = ugwiya ya Molitania||0
MUR = lupia ya Molisi||0
MWK = kwacha ya Malawi
MZM = metikali ya Msumbiji|||1
NAD = dola ya Namibia
NGN = naila ya Naijelia
RWF = falanga ya Lwanda||0
SAR = liyal ya Saudia
SCR = lupia ya Shelisheli
SDG = dinali ya Sudani
SDP = pauni ya Sudani|||1
SHP = pauni ya Santahelena
SLL = leoni||0
SOS = shilingi ya Somalia||0
STD = dobla ya Sao Tome na Plincipe||0|1
SZL = lilangeni
TND = dinali ya Tunisia||3
TZS = shilingi ya Tanzania|TSh|0
UGX = shilingi ya Uganda||0
USD = dola ya Malekani|US$
XAF = falanga CFA BEAC|FCFA|0
XOF = falanga CFA BCEAO|CFA|0
ZAR = landi ya Aflika Kusini
ZMK = kwacha ya Zambia (1968–2012)||0|1
ZMW = kwacha ya Zambia
ZWD = dola ya Zimbabwe||0|1
