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

AED = Diriháamu ya Ʉtemi wa Kɨaráabu
AOA = Kwáanza ya Angóola
AUD = Dóola ya Ausitereelía|AU$
BHD = Dináari ya Baharéeni||3
BIF = Faráanga ya Burúundi||0
BWP = Púula ya Botiswáana
CAD = Dóola ya Kánada|CA$
CDF = Faráanga ya Kóongo
CHF = Faráaka ya Uswíisi||||5
CNY = Yúani Renimínibi ya Chíina|CN¥
CVE = Esikúudo ya Kepuvéede
DJF = Faráanga ya Jibóuti||0
DZD = Dináairi ya Alijéria
EGP = Páundi ya Mísiri
ERN = Nákɨfa ya Eriterea
ETB = Bíiri ya Ʉhabéeshi
EUR = Yúuro|€
GBP = Páundi ya Ʉɨngɨréesa|UK£
GHC = Séedi ya Gáana|||1
GMD = Daláasi ya Gámbia
GNS = Faráanga ya Gíine|||1
INR = Rupía ya Índia|Rs.
JPY = Yéeni ya Japáani|JP¥|0
KES = Shilíingi ya Kéenya
KMF = Faráanga ya Komóoro||0
LRD = Dóola ya Libéria
LSL = Lóoti ya Lesóoto
LYD = Dináari ya Líbia||3
MAD = Diriháamu ya Moróoko
MGA = Mpía ya bukini||0
MRO = Ungwíiya ya Moritánia||0
MUR = Rupía ya Moríisi||0
MWK = Kwáacha ya Maláawi
MZM = Metikáali ya Musumbíiji|||1
NAD = Dóola ya Namíbia
NGN = Naíira ya Niijéria
RWF = Faráanga ya Rwáanda||0
SAR = Riyáali ya Saudía
SCR = Rupía ya Shelishéeli
SDG = Páundi ya Sudáani
SHP = Páundi ya Mʉtakatíifu Heléena
SLL = Leóoni||0
SOS = Shilíingi ya Somália||0
STD = Dóbura ya SaoTóome na Pirínsipe||0
SZL = Lilengéeni
TND = Dináari ya Tunísia||3
TZS = Shilíingi ya Taansanía|TSh|0
UGX = Shilíingi ya Ugáanda||0
USD = Dóola ya Amerɨ́ka|US$
XAF = Faráanga ya CFA BEAC|FCFA|0
XOF = Faráanga ya CFA BCEAO|CFA|0
ZAR = Ráandi ya Afɨrɨka ya Saame
ZMK = Kwácha ya Sámbia||0
ZWD = Dóola ya Simbáabwe||0|1
