# 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: 2013-08-29 04:32:04 +0200 (Thu, 29 Aug 2013) $
#  number=$Revision: 9287 $
#  type=ksf
AED = mɔni mǝ á bǝlɔŋ bǝ kaksa bɛ táatáaŋzǝn
AOA = mɔni mǝ á angóla
AUD = mɔni mǝ á ɔstralí|$
BHD = mɔni mǝ á barǝ́n||3
BIF = mɔni mǝ á burundí||0
BWP = mɔni mǝ á botswana
CAD = mɔni mǝ á kanada|CA$
CDF = mɔni mǝ á kɔngó
CHF = mɔni mǝ á swís
CNY = mɔni mǝ á cín|¥
CVE = mɔni mǝ á kapvɛr
DJF = mɔni mǝ á dyibutí||0
DZD = mɔni mǝ á aljɛrí
EGP = mɔni mǝ á ɛjípt
ERN = mɔni mǝ á ɛritrɛ́
ETB = mɔni mǝ á ɛtyɔpí
EUR = mɔni mǝ á pɛrɛsǝ́|€
GBP = mɔni mǝ á ingɛrís|£
GHC = mɔni mǝ á gána|||1
GMD = mɔni mǝ á gambí
GNS = mɔni mǝ á ginɛ́|||1
INR = mɔni mǝ á indí|Rs.
JPY = mɔni mǝ á japɔ́ŋ|¥|0
KES = mɔni mǝ á kɛnya
KMF = mɔni mǝ á komɔr||0
LRD = mɔni mǝ á libɛrya
LSL = mɔni mǝ á lǝsóto
LYD = mɔni mǝ á libí||3
MAD = mɔni mǝ á marɔk
MGA = mɔni mǝ á madagaska||0
MRO = mɔni mǝ á mwaritaní||0
MUR = mɔni mǝ á mwarís||0
MWK = mɔni mǝ á malawi
MZM = mɔni mǝ á mosambík|||1
NAD = mɔni mǝ á namibí|$
NGN = mɔni mǝ á nijɛ́rya
RWF = mɔni mǝ á rwanda||0
SAR = mɔni mǝ á arabí saodí
SCR = mɔni mǝ á sɛcɛl
SDG = mɔni mǝ á sudan
SHP = mɔni mǝ á sɛntɛ́len
SLL = mɔni mǝ á syɛraleon||0
SOS = mɔni mǝ á somalí||0
STD = mɔni mǝ á saotomɛ́ ri priŋsib||0
SZL = mɔni mǝ á swazilan
TND = mɔni mǝ á tunɛsí||3
TZS = mɔni mǝ á tanzaní||0
UGX = mɔni mǝ á uganda||0
USD = mɔni mǝ á amɛrika|$
XAF = fráŋ|FCFA|0
XOF = mɔni mǝ á afríka aná wɛs|CFA|0
ZAR = mɔni mǝ á afrik anǝ a sud
ZMK = mɔni mǝ á zambí (1968–2012)||0|1
ZMW = mɔni mǝ á zambí
ZWD = mɔni mǝ á zimbabwɛ́||0|1
