# 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:
#  cldrVersion=21.0
#  number=$Revision: 6546 $
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $
#  type=root

AED = Diraamu eya Emireeti
AOA = Kwanza ey'Angola
AUD = Doola ey'Awusiturelya|AU$
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||||5
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|UK£
GHC = Sedi ey'eGana|||1
GMD = Dalasi ey'eGambya
GNS = Faranga ey'eGini|||1
INR = Rupiya ey'eBuyindi|Rs.
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||0
MUR = Rupiya ey'eMawurisyasi||0
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||0
SZL = Lilangeni
TND = Dinaali ey'eTunizya||3
TZS = Silingi ey'eTanzaniya||0
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||0
ZWD = Doola ey'eZimbabwe||0|1
