# 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 = Dola laseArab
AOA = Kwanza yase Angola
AUD = Dola yase Australia|A$
BHD = Dinari yase Bhahareni||3
BIF = Fulenki yase Bhurundi||0
BWP = Phula yase Botswana
CAD = Dola yase Khanada|CA$
CDF = Fulenki yase Khongo
CHF = Fulenki yase Swisi
CNY = Yuan Renminbi yase China|CN¥
CVE = Escudo Caboverdiano
DJF = Fulenki yase Jibhuthi||0
DZD = Dinali yase Aljeriya
EGP = Phawundi laseGibhide
ERN = Nakfa yase Eritrea
ETB = Dola laseEthiopia
EUR = Yuro|€
GBP = Phawundi yase Ngilandi|£
GHC = Sedi yase Ghana|||1
GMD = Dalasi yase Gambia
GNS = Fulenki yase Gine|||1
INR = Rupi yase Indiya|₹
JPY = Yeni yase Japhani|JP¥|0
KES = Shilingi yase Kenya
KMF = Fulenki yase Khomoro||0
LRD = Dola yase Libheriya
LSL = Lothi yase Lesotho
LYD = Dinari yase Libya||3
MAD = Dirham yase Morokho
MGA = Fulenki yase Malagasi||0
MRO = Ugwiya yase Moritaniya||0
MUR = Rupi yase Morishasi||0
MWK = Kwacha yase Malawi
MZM = Metikali yase Mozambiki|||1
NAD = Dola yase Namibiya
NGN = Nayira yase Nijeriya
RWF = Fulenki yase Ruwanda||0
SAR = Riyal yase Saudi
SCR = Rupi yase Seyisheli
SDG = Dinari yase Sudani
SDP = Phawundi yase Sudani|||1
SHP = Phawundindi laseSt Helena
SLL = Leyoni||0
SOS = Shilingi yase Somaliya||0
STD = Dobra yase Sao Tome lo Principe||0|1
SZL = Lilangeni
TND = Dinari yase Tunisiya||3
TZS = Shilingi yase Tanzaniya||0
UGX = Shilingi yase Uganda||0
USD = Dola yase Amelika|US$
XAF = Fulenki CFA BEAC|FCFA|0
XOF = Fulenki CFA BCEAO|CFA|0
ZAR = Randi yase Afrika ye Zanzi
ZMK = Kwacha yase Zambiya (1968–2012)||0|1
ZMW = Kwacha yase Zambiya
ZWD = Dola yase Zimbabwe||0|1
