# 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 = Njilingi eel Falme za Kiarabu
AOA = Njilingi eel Angola
AUD = Njilingi eel Australia|A$
BHD = Njilingi eel Bahareni||3
BIF = Njilingi eel Burundi||0
BWP = Njilingi eel Botswana
CAD = Njilingi eel Kanada|CA$
CDF = Njilingi eel Kongo
CHF = Njilingi eel Uswisi
CNY = Njilingi eel China|CN¥
CVE = Njilingi eel Kepuvede
DJF = Njilingi eel Jibuti||0
DZD = Njilingi eel Aljeria
EGP = Njilingi eel Misri
ERN = Njilingi eel Eritrea
ETB = Njilingi eel Uhabeshi
EUR = Yuro|€
GBP = Njilingi eel Uingereza|£
GHC = Njilingi eel Ghana|||1
GMD = Njilingi eel Gambia
GNS = Njilingi eel Gine|||1
INR = Njilingi eel India|₹
JPY = Njilingi eel Kijapani|JP¥|0
KES = Njilingi eel Kenya|Ksh
KMF = Njilingi eel Komoro||0
LRD = Dola eel Liberia
LSL = Njilingi eel Lesoto
LYD = Njilingi eel Libya||3
MAD = Njilingi eel Moroko
MGA = Njilingi eel Bukini||0
MRO = Njilingi eel Moritania||0
MUR = Njilingi eel Morisi||0
MWK = Njilingi eel Malawi
MZM = Njilingi eel Msumbiji|||1
NAD = Njilingi eel Namibia
NGN = Njilingi eel Nijeria
RWF = Njilingi eel Rwanda||0
SAR = Njilingi eel Saudia
SCR = Njilingi eel Shelisheli
SDG = Paunt eel Sudani
SHP = Paunt eel Santahelena
SLL = Leoni||0
SOS = Njilingi eel Somalia||0
STD = Njilingi eel Sao Tome na Principe||0|1
SZL = Lilangeni
TND = Njilingi eel Tunisia||3
TZS = Njilingi eel Tanzania||0
UGX = Njilingi eel Uganda||0
USD = Dola eel Marekani|US$
XAF = Njilingi eel CFA BEAC|FCFA|0
XOF = Njilingi eel CFA BCEAO|CFA|0
ZAR = Njilingi eel Afrika Kusini
ZMK = Njilingi eel Zambia (1968–2012)||0|1
ZMW = Njilingi eel Zambia
ZWD = Dola eel Zimbabwe||0|1
