# 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 = Diriháamu ya Ʉtemi wa Kɨaráabu
AOA = Kwáanza ya Angóola
AUD = Dóola ya Ausitereelía|A$
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
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|£
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|₹
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|1
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 (1968–2012)||0|1
ZMW = Kwácha ya Sámbia
ZWD = Dóola ya Simbáabwe||0|1
