# Copyright 2014 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:
#  cldrVersion=25
#  date=$Date: 2014-03-04 00:35:05 +0100 (Tue, 04 Mar 2014) $
#  number=$Revision: 9862 $
#  type=BJ
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ìá|$
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 sháínà|¥
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
GBP = Pɔɔn ti Orílɛ́ède Bírítísì|£
GHC = shidi 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|Rs.
JPY = Yeni ti Orílɛ́ède Japani|¥|0
KES = shiili ti Orílɛ́ède Kenya
KMF = Faransi ti Orílɛ́ède shomoriani||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 = Kasha 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
SOS = Sile ti Orílɛ́ède Somali||0
STD = Dobira ti Orílɛ́ède Sao tome Ati Pirisipe||0
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|$
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 = Kawasha ti Orílɛ́ède Saabia (1968–2012)||0|1
ZMW = Kawasha ti Orílɛ́ède Saabia
ZWD = Dɔla ti Orílɛ́ède Siibabuwe||0|1
