# 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 = Dilàm è Yùnaetɛ Alab Emelɛ̀
AOA = Kwanzà è Àŋgolà
AUD = Dɔlà e Ùsɨ̀tɛ̀lɛlìa|A$
BHD = Dinà è Balae||3
BIF = Fàlâŋ è Bùlundì||0
BWP = Kpuwlà è Botɨshǔanà
CAD = Dɔlà è Kanadà|CA$
CDF = Fàlâŋ è Kuŋgùlê
CHF = Fàlâŋ è Sues
CNY = Yùwân Lèmembi è Chaenî|CN¥
CVE = Kàbòvàdianù è Èsùkudò
DJF = Fàlâŋ è Dzìbutì||0
DZD = Dinà è Àdzɛlìa
EGP = Bɔ̀ŋ è Edzì
ERN = Nakafa è Èletɨ̀làe
ETB = Bîi è Etyǒkpìa
EUR = Yulù|€
GBP = Bɔ̀ŋ è Bèletì|£
GHC = Sɛ̀di è Gaanà|||1
GMD = Dàlasì è Gambìa
GNS = Fàlâŋ è Ginè|||1
INR = Lukpì è Endìa|₹
JPY = Ghɨ̂n Dzàkpànê|JP¥|0
KES = Shwɨlà tɨ Kenyà
KMF = Fàlâŋ è Komolìa||0
LRD = Dɔlà Làebɛlìa
LSL = Lɔtì Lèsutù
LYD = Dinà è Lebìa||3
MAD = Dilàm è Mòlokò
MGA = Àlǐalè è Màlàgasì||0
MRO = Ùgueya è Mùlètenyìa||0
MUR = Lukpìi è Mùleshòs||0
MWK = Kwachà è Màlawè
MZM = Mètikà è Mùzàmbî|||1
NAD = Dɔlà è Nàmibìa
NGN = Naelà è Gɨ̀anyɨ
RWF = Fàlâŋ è Lùwandà||0
SAR = Leyà è Sàwudì
SCR = Lukpìi è Sɛchɛ̀lɛ̀
SDG = Bɔ̀ŋ è Sùdànê
SHP = Bɔ̀ŋ è Sɛ̀n Èlenà
SLL = Lyɔ̂ŋ||0
SOS = Shwɨlà è Sùmalìa||0
STD = Dɔbàlà è Sàwu Tɔ̀me à Pèlènsipè||0|1
SZL = Lèlàŋgenè
TND = Dinà è Tùwneshìa||3
TZS = Shwɨlà è Tàanzanyìa||0
UGX = Shwɨlà è Yùgandà||0
USD = Dɔlà è US|US$
XAF = CFA Fàlâŋ BEAC|FCFA|0
XOF = CFA Fàlâŋ BCEAO|CFA|0
ZAR = Lân è Afɨlekà ghɨ Emàm ghò
ZMK = Kwachà è Zambìa (1968–2012)||0|1
ZMW = Kwachà è Zambìa
ZWD = Dɔlà è Zìmbagbɛ̀||0|1
