# 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 = dirḥam de los Emiratos Árabes Xuníos
AFN = afganí afganistanu||0
ALL = lek||0
AMD = dram armeniu||0
ANG = guilder de les Antilles Neerlandeses
AOA = kwanza angolanu
ARS = pesu arxentín
AUD = dólar australianu|A$
AWG = florín arubanu
AZN = manat azerbaixanu
BAM = marcu convertible de Bosnia-Herzegovina
BBD = dólar barbadianu
BDT = taka bangladexí
BGN = lev
BHD = dinar baḥreiní||3
BIF = francu burundianu||0
BMD = dólar bermudianu
BND = dólar bruneyanu
BOB = bolivianu
BRL = real brasilanu|R$
BSD = dólar bahamés
BTN = ngultrum butanés
BWP = pula botsuaniana
BYR = rublu bielorrusu||0
BZD = dólar belizianu
CAD = dólar canadiense|CA$
CDF = francu congolés
CHF = francu suizu
CLP = pesu chilenu||0
CNY = yuan chinu|CN¥
COP = pesu colombianu||0
CRC = colón costarricanu||0
CUC = pesu convertible cubanu
CUP = pesu cubanu
CVE = escudu cabuverdianu
CZK = corona checa
DJF = francu xibutianu||0
DKK = corona danesa
DOP = pesu dominicanu
DZD = dinar arxelín
EGP = llibra exipciana
ERN = nafka eritréu
ETB = birr etíope
EUR = euro|€
FJD = dólar fixanu
FKP = llibra malviniana
GBP = llibra esterlina|£
GEL = lari xeorxanu
GHS = cedi ghanianu
GIP = llibra de Xibraltar
GMD = dalasi gambianu
GNF = francu guineanu||0
GTQ = quetzal de Guatemala
GYD = dólar guyanés||0
HKD = dólar ḥongkonés|HK$
HNL = lempira hondurana
HRK = kuna
HTG = gourde haitianu
HUF = forint||0
IDR = rupiah indonesia||0
ILS = xequel nuevu|₪
INR = rupia india|₹
IQD = dinar iraquín||0
IRR = rial iranín||0
ISK = corona islandesa||0
JMD = dólar xamaicanu
JOD = dinar xordanu||3
JPY = yen xaponés|¥|0
KES = shilling kenianu
KGS = som kirguistanín
KHR = riel camboyanu
KMF = francu comoranu||0
KPW = won norcoreanu||0
KRW = won surcoreanu|₩|0
KWD = dinar kuwaitianu||3
KYD = dólar caimanés
KZT = tenge kazaquistanín
LAK = kip laosianu||0
LBP = llibra libanesa||0
LKR = rupia de Sri Lanka
LRD = dólar liberianu
LTL = litas
LVL = lats|||1
LYD = dinar libiu||3
MAD = dirḥam marroquín
MDL = leu moldavu
MGA = ariary malgaxe||0
MKD = denar
MMK = kyat de Myanmar||0
MNT = tugrik mongol||0
MOP = pataca de Macáu
MRO = ouguiya mauritanu||0
MUR = rupia mauriciana||0
MVR = rufiyaa maldiviana
MWK = kwacha malauianu
MXN = pesu mexicanu|MX$
MYR = ringgit malasiu
MZN = metical mozambicanu
NAD = dólar namibianu
NGN = naira nixeriana
NIO = córdoba nicaraguanu
NOK = corona noruega
NPR = rupia nepalesa
NZD = dólar neozelandés|NZ$
OMR = rial omanianu||3
PAB = balboa panamiegu
PEN = sol nuevu peruanu
PGK = kina papuana
PHP = pesu filipín
PKR = rupia paquistanina||0
PLN = zloty
PYG = guaraní paraguayu||0
QAR = rial qatarín
RON = leu rumanu
RSD = dinar serbiu||0
RUB = rublu rusu
RWF = francu ruandés||0
SAR = riyal saudita
SBD = dólar salomonés
SCR = rupia seixelesa
SDG = llibra sudanesa
SEK = corona sueca
SGD = dólar singapuranu
SHP = llibra de Santa Lena
SLL = leone sierralleonés||0
SOS = shilling somalín||0
SRD = dólar surinamés
SSP = llibra sursudanesa
STD = dobra de Santu Tomé y Príncipe||0
SYP = llibra siria||0
SZL = lilangeni suazilandés
THB = baht tailandés|฿
TJS = somoni taxiquistanín
TMT = manat turcomanu
TND = dinar tunecín||3
TOP = paʻanga tonganu
TRY = llira turca|TL
TTD = dólar de Trinidá y Tobagu
TWD = dólar nuevu taiwanés|NT$
TZS = shilling tanzanianu||0
UAH = grivna
UGX = shilling ugandés||0
USD = dólar de los Estaos Xuníos|$
UYU = pesu uruguayu
UZS = som uzbequistanín||0
VEF = bolívar venezolanu
VND = dong vietnamín|₫|0
VUV = vatu vanuatuanu||0
WST = tala samoanu
XAF = francu CFA BEAC|FCFA|0
XCD = dólar del Caribe Oriental|EC$
XOF = francu CFA BCEAO|CFA|0
XPF = francu CFP|CFPF|0
XXX = divisa desconocida|||1
YER = rial yemenín||0
ZAR = rand sudafricanu
ZMK = kwacha zambianu (1968–2012)||0|1
ZMW = kwacha zambianu
