# 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 = Idiramu ryo muri Leta Zunze Ubumwe z’Abarabu
AOA = Ikwanza ryo muri Angola
AUD = Idolari ryo muri Ositaraliya|A$
BHD = Idinari ry’iribahireyini||3
BIF = Ifaranga ry’Uburundi|FBu|0
BWP = Ipula ryo muri Botswana
CAD = Idolari rya Kanada|CA$
CDF = Ifaranga rya Kongo
CHF = Ifaranga ry’Ubusuwisi
CNY = Iyuwani ryo mu Bushinwa|CN¥
CVE = Irikaboveridiyano ryo muri Esikudo
DJF = Ifaranga ryo muri Jibuti||0
DZD = Idinari ryo muri Alijeriya
EGP = Ipawundi rya Misiri
ERN = Irinakufa ryo muri Eritereya
ETB = Ibiri ryo muri Etiyopiya
EUR = Iyero|€
GBP = Ipawundi ryo mu Bwongereza|£
GHC = Icedi ryo muri Gana|||1
GMD = Idalasi ryo muri Gambiya
GNS = Ifaranga ryo muri Gineya|||1
INR = Irupiya ryo mu Buhindi|₹
JPY = Iyeni ry’Ubuyapani|JP¥|0
KES = Ishilingi rya Kenya
KMF = Ifaranga rya Komore||0
LRD = Idolari rya Liberiya
LSL = Iloti ryo muro Lesoto
LYD = Idinari rya Libiya||3
MAD = Idiramu ryo muri Maroke
MGA = Iriyari ryo muri Madagasikari||0
MRO = Ugwiya ryo muri Moritaniya (1973–2017)||0|1
MRU = Ugwiya ryo muri Moritaniya
MUR = Irupiya ryo mu birwa bya Morise
MWK = Ikwaca ryo muri Malawi
MZM = Irimetikali ryo muri Mozambike|||1
NAD = Idolari rya Namibiya
NGN = Inayira ryo muri Nijeriya
RWF = Ifaranga ry’u Rwanda||0
SAR = Iriyari ryo muri Arabiya Sawudite
SCR = Irupiya ryo mu birwa bya Sayisheli
SDG = Ipawundi rya Sudani
SHP = Ipawundi rya Sente Helena
SLL = Ilewone||0
SOS = Ishilingi ryo muri Somaliya||0
STD = Idobura ryo muri Sawotome na Perensipe (1977–2017)||0|1
STN = Idobura ryo muri Sawotome na Perensipe
SZL = Ililangeni
TND = Idinari ryo muri Tuniziya||3
TZS = Ishilingi rya Tanzaniya
UGX = Ishilingi ry’Ubugande||0
USD = Idolari ry’abanyamerika|US$
ZAR = Irandi ryo muri Afurika y’Epfo
ZMK = Ikwaca ryo muri Zambiya (1968–2012)||0|1
ZMW = Ikwaca ryo muri Zambiya
ZWD = Idolari ryo muri Zimbabwe||0|1
