# 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 = Diraamu eya Emireeti
AOA = Kwanza ey’Angola
AUD = Doola ey’Awusiturelya|A$
BHD = Dinaali ey’eBaareeni||3
BIF = Faranga ey’eburundi||0
BWP = Pula ey’eBotiswana
CAD = Doola ey’eKanada|CA$
CDF = Faranga ey’eKongo
CHF = Faranga ey’eSwitizirandi
CNY = Yuwani Reniminibi ey’eCayina|CN¥
CVE = Esikudo ey’Keepu Veredi
DJF = Faranga ey’eJjibuti||0
DZD = Dinaali ey’Aligerya
EGP = Pawundi ey’eMisiri
ERN = Nakifa ey’Eritureya
ETB = Biiru ey’Esyopya
EUR = Yuro|€
GBP = Pawundi ey’eBungereza|£
GHC = Sedi ey’eGana|||1
GMD = Dalasi ey’eGambya
GNS = Faranga ey’eGini|||1
INR = Rupiya ey’eBuyindi|₹
JPY = Yeni ey’eJapani|JP¥|0
KES = Silingi ey’eKenya
KMF = Faranga ey’eKomoro||0
LRD = Doola ey’eLiberya
LSL = Loti ey’eLesoso
LYD = Dinaali ey’eLibya||3
MAD = Diraamu ey’eMoroko
MGA = Faranga ey’eMalagase||0
MRO = Wugwiya ey’eMawritenya (1973–2017)||0|1
MRU = Wugwiya ey’eMawritenya
MUR = Rupiya ey’eMawurisyasi
MWK = Kwaca ey’eMalawi
MZM = Metikaali ey’eMozambiiki|||1
NAD = Doola ey’eNamibiya
NGN = Nayira ey’eNayijerya
RWF = Faranga ey’eRwanda||0
SAR = Riyaali ey’eBuwarabu
SCR = Rupiya ey’eSesere
SDG = Dinaali ey’eSudaani
SDP = Pawundi ey’eSudaani|||1
SHP = Pawundi ey’eSenti Herena
SLL = Lewone||0
SOS = Silingi ey’eSomaliya||0
STD = Dobura ey’eSantome ne Purincipe (1977–2017)||0|1
STN = Dobura ey’eSantome ne Purincipe
SZL = Lilangeni
TND = Dinaali ey’eTunizya||3
TZS = Silingi ey’eTanzaniya
UGX = Silingi eya Yuganda|USh|0
USD = Doola ey’Amerika|US$
XAF = Faranga ey’omu Afirika eya wakati|FCFA|0
XOF = Faranga ey’omu Afirika ey’ebugwanjuba|CFA|0
ZAR = Randi ey’eSawusafirika
ZMK = Kwaca ey’eZambya (1968–2012)||0|1
ZMW = Kwaca ey’eZambya
ZWD = Doola ey’eZimbabwe||0|1
