# 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 dha Kiarabu
AOA = kwandha ya Angola
AUD = dola ya Authtralia|A$
BHD = dinari ya Bahareni||3
BIF = faranga ya Burundi||0
BWP = pula ya Botthwana
CAD = dola ya Kanada|CA$
CDF = faranga ya Kongo
CHF = faranga ya Uthwithi
CNY = yuan renminbi ya China|CN¥
CVE = ethkudo ya Kepuvede
DJF = faranga ya Jibuti||0
DZD = dinari ya Aljeria
EGP = pauni ya Mithri
ERN = nakfa ya Eritrea
ETB = bir ya Uhabeshi
EUR = yuro|€
GBP = pauni ya Uingeredha|£
GHC = thedi ya Ghana|||1
GMD = dalathi ya Gambia
GNS = faranga ya Gine|||1
INR = rupia ya India|₹
JPY = tharafu ya Kijapani|JP¥|0
KES = shilingi ya Kenya
KMF = faranga ya Komoro||0
LRD = dola ya Liberia
LSL = loti ya Lethoto
LYD = dinari ya Libya||3
MAD = dirham ya Moroko
MGA = faranga ya Bukini||0
MRO = ugwiya ya Moritania||0
MUR = rupia ya Morithi||0
MWK = kwacha ya Malawi
MZM = metikali ya Mthumbiji|||1
NAD = dola ya Namibia
NGN = naira ya Nijeria
RWF = faranga ya Rwanda||0
SAR = riyal ya Thaudia
SCR = rupia ya Shelisheli
SDG = dinari ya Thudani
SDP = pauni ya Thudani|||1
SHP = pauni ya Thantahelena
SLL = leoni||0
SOS = shilingi ya Thomalia||0
STD = dobra ya Thao Tome na Principe||0|1
SZL = lilangeni
TND = dinari ya Tunithia||3
TZS = shilingi ya Tandhania|TSh|0
UGX = shilingi ya Uganda||0
USD = dola ya Marekani|US$
XAF = faranga CFA BEAC|FCFA|0
XOF = faranga CFA BCEAO|CFA|0
ZAR = randi ya Afrika Kuthini
ZMK = kwacha ya Dhambia (1968–2012)||0|1
ZMW = kwacha ya Dhambia
ZWD = dola ya Dhimbabwe||0|1
