# 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: 6450 $
#  type=mfe
#  date=$Date: 2012-01-25 19:20:54 -0500 (Wed, 25 Jan 2012) $

AED = dirham Emira arab ini
AOA = kwanza angole
AUD = dolar ostralien|AU$
BHD = dinar bahreïn||3
BIF = fran burunde||0
BWP = pula ya botswane
CAD = dolar kanadien|CA$
CDF = fran kongole
CHF = fran swis||||5
CNY = yuan renminbi sinwa|CN¥
CVE = eskudo kapverdien
DJF = fran djiboutien||0
DZD = dinar alzerien
EGP = liv ezipsien
ERN = nafka erythreen
ETB = birr etiopien
EUR = euro|€
GBP = liv sterlin|UK£
GHC = sedi ganeen|||1
GMD = dalasi gambien
GNS = fran gineen|||1
INR = roupi|Rs.
JPY = yen zapone|JP¥|0
KES = shiling kenyan
KMF = fran komorien||0
LRD = dolar liberien
LSL = loti lezoto
LYD = dinar libien||3
MAD = dirham marokin
MGA = fran malgas||0
MRO = ouguiya moritanien||0
MUR = roupi morisien||0
MWK = kwacha malawit
MZM = metikal mozanbikin|||1
NAD = dolar namibien
NGN = naira nizerian
RWF = fran rwande||0
SAR = rial saoudien
SCR = roupi seselwa
SDG = dinar soudane
SDP = liv soudane|||1
SHP = liv Sainte-Hélène
SLL = leonn Sierra-Leone||0
SOS = shilingi somalien||0
STD = dobra santomeen||0
SZL = lilangeni swazi
TND = dinar tinizien||3
TZS = shiling tanzanien||0
UGX = shiling ougande||0
USD = dolar amerikin|US$
XAF = fran CFA (BEAC)|FCFA|0
XOF = fran CFA (BCEAO)|CFA|0
ZAR = rand sid-afrikin
ZMK = kwacha zanbien||0
ZWD = dolar zimbawe||0|1
