# 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 = Diami ti Awon Orílẹ́ède Arabu
AOA = Wansa ti Orílẹ́ède Àngólà
AUD = Dọla ti Orílẹ́ède Ástràlìá|A$
BHD = Dina ti Orílẹ́ède Báránì||3
BIF = Faransi ti Orílẹ́ède Bùùrúndì||0
BWP = Pula ti Orílẹ́ède Bọ̀tìsúwánà
CAD = Dọla ti Orílẹ́ède Kánádà|CA$
CDF = Faransi ti Orílẹ́ède Kóngò
CHF = Faransi ti Orílẹ́ède Siwisi
CNY = Reminibi ti Orílẹ́ède ṣáínà|CN¥
CVE = Kabofediano ti Orílẹ́ède Esuodo
DJF = Faransi ti Orílẹ́ède Dibouti||0
DZD = Dina ti Orílẹ́ède Àlùgèríánì
EGP = pọọn ti Orílẹ́ède Egipiti
ERN = Nakifa ti Orílẹ́ède Eriteriani
ETB = Biri ti Orílẹ́ède Eutopia
EUR = Uro|€
GBP = Pọọn ti Orílẹ́ède Bírítísì|£
GHC = ṣidi ti Orílẹ́ède Gana|||1
GMD = Dalasi ti Orílẹ́ède Gamibia
GNS = Faransi ti Orílẹ́ède Gini|||1
INR = Rupi ti Orílẹ́ède Indina|₹
JPY = Yeni ti Orílẹ́ède Japani|JP¥|0
KES = ṣiili ti Orílẹ́ède Kenya
KMF = Faransi ti Orílẹ́ède ṣomoriani||0
LRD = Dọla ti Orílẹ́ède Liberia
LSL = Loti ti Orílẹ́ède Lesoto
LYD = Dina ti Orílẹ́ède Libiya||3
MAD = Dirami ti Orílẹ́ède Moroko
MGA = Faransi ti Orílẹ́ède Malagasi||0
MRO = Ouguiya ti Orílẹ́ède Maritania||0
MUR = Rupi ti Orílẹ́ède Maritiusi||0
MWK = Kaṣa ti Orílẹ́ède Malawi
MZM = Metika ti Orílẹ́ède Mosamibiki|||1
NAD = Dọla ti Orílẹ́ède Namibia
NGN = Naira ti Orílẹ́ède Nàìjíríà|₦
RWF = Faransi ti Orílẹ́ède Ruwanda||0
SAR = Riya ti Orílẹ́ède Saudi
SCR = Rupi ti Orílẹ́ède Sayiselesi
SDG = Dina ti Orílẹ́ède Sudani
SDP = Pọọun ti Orílẹ́ède Sudani|||1
SHP = Pọọun ti Orílẹ́ède ̣Elena
SLL = Lioni||0
SOS = Sile ti Orílẹ́ède Somali||0
STD = Dobira ti Orílẹ́ède Sao tome Ati Pirisipe||0|1
SZL = Lilangeni
TND = Dina ti Orílẹ́ède Tunisia||3
TZS = Sile ti Orílẹ́ède Tansania||0
UGX = Siile ti Orílẹ́ède Uganda||0
USD = Dọla ti Orílẹ́ède Amerika|US$
XAF = Faransi ti Orílẹ́ède BEKA|FCFA|0
XOF = Faransi ti Orílẹ́ède BIKEAO|CFA|0
ZAR = Randi ti Orílẹ́ède Ariwa Afirika
ZMK = Kawaṣa ti Orílẹ́ède Saabia (1968–2012)||0|1
ZMW = Kawaṣa ti Orílẹ́ède Saabia
ZWD = Dọla ti Orílẹ́ède Siibabuwe||0|1
