# 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
ADP = pesseta andorrana||0|1
AED = dirhem dels Emirats Àrabs Units
AFA = afgani afganès (1927–2002)|||1
AFN = afgani afganès||0
ALK = lek albanès (1946–1965)|||1
ALL = lek albanès||0
AMD = dram armeni||0
ANG = florí de les Antilles Neerlandeses
AOA = kwanza angolès
AOK = kwanza angolès (1977–1991)|||1
AON = nou kwanza angolès (1990–2000)|||1
AOR = kwanza angolès reajustat (1995–1999)|||1
ARA = austral argentí|||1
ARL = peso ley argentí (1970–1983)|||1
ARM = peso argentí (1981–1970)|||1
ARP = peso argentí (1983–1985)|||1
ARS = peso argentí
ATS = xíling austríac|||1
AUD = dòlar australià|AU$
AWG = florí d'Aruba
AZM = manat azerbaidjanès (1993–2006)|||1
AZN = manat azerbaidjanès
BAD = dinar de Bòsnia i Hercegovina (1992–1994)|||1
BAM = marc convertible de Bòsnia i Hercegovina
BAN = nou dinar de Bòsnia i Hercegovina (1994–1997)|||1
BBD = dòlar de Barbados
BDT = taka de Bangla Desh
BEC = franc belga (convertible)|||1
BEF = franc belga|||1
BEL = franc belga (financer)|||1
BGL = lev fort búlgar|||1
BGM = lev socialista búlgar|||1
BGN = lev búlgar
BGO = lev búlgar (1879–1952)|||1
BHD = dinar de Bahrain||3
BIF = franc de Burundi||0
BMD = dòlar de les Bermudes
BND = dòlar de Brunei
BOB = boliviano bolivià
BOL = boliviano bolivià (1863–1963)|||1
BOP = peso bolivià|||1
BOV = MVDOL bolivià|||1
BRB = cruzeiro novo brasiler (1967–1986)|||1
BRC = cruzado brasiler|||1
BRE = cruzeiro brasiler (1990–1993)|||1
BRL = real brasiler
BRN = cruzado novo brasiler|||1
BRR = cruzeiro brasiler|||1
BRZ = antic cruzeiro brasiler|||1
BSD = dòlar de les Bahames
BTN = ngultrum de Bhutan
BUK = kyat birmà|||1
BWP = pula de Botswana
BYB = nou ruble bielorús (1994–1999)|||1
BYR = ruble bielorús||0
BZD = dòlar de Belize
CAD = dòlar canadenc|CA$
CDF = franc congolès
CHE = euro WIR|||1
CHF = franc suís
CHW = franc WIR|||1
CLE = escut xilè|||1
CLF = unidad de fomento xilena||0|1
CLP = peso xilè||0
CNY = iuan xinès|¥
COP = peso colombià||0
COU = unidad de valor real colombiana|||1
CRC = colón costa-riqueny||0
CSD = dinar serbi antic|||1
CSK = corona forta txecoslovaca|||1
CUC = peso convertible cubà
CUP = peso cubà
CVE = escut de Cap Verd
CYP = lliura xipriota|||1
CZK = corona txeca
DDM = marc de l'Alemanya Oriental|||1
DEM = marc alemany|||1
DJF = franc de Djibouti||0
DKK = corona danesa
DOP = peso dominicà
DZD = dinar algerià
ECS = sucre equatorià|||1
ECV = unidad de valor constante (UVC) equatoriana|||1
EEK = corona estoniana|||1
EGP = lliura egípcia
ERN = nakfa eritreu
ESA = pesseta espanyola (compte A)|||1
ESB = pesseta espanyola (compte convertible)|||1
ESP = pesseta espanyola|₧|0|1
ETB = birr etíop
EUR = euro|€
FIM = marc finlandès|||1
FJD = dòlar fijià
FKP = lliura de les illes Malvines
FRF = franc francès|||1
GBP = lliura esterlina britànica|£
GEK = cupó de lari georgià|||1
GEL = lari georgià
GHC = cedi ghanès (1979–2007)|||1
GHS = cedi ghanès
GIP = lliura de Gibraltar
GMD = dalasi gambià
GNF = franc guineà||0
GNS = syli guineà|||1
GQE = ekwele de Guinea Equatorial|||1
GRD = dracma grega|||1
GTQ = quetzal guatemalenc
GWE = escut de la Guinea Portuguesa|||1
GWP = peso de Guinea Bissau|||1
GYD = dòlar de Guyana||0
HKD = dòlar de Hong Kong|HK$
HNL = lempira hondurenya
HRD = dinar croat|||1
HRK = kuna croata
HTG = gourde haitià
HUF = fòrint hongarès||0
IDR = rupia indonèsia||0
IEP = lliura irlandesa|||1
ILP = lliura israeliana|||1
ILR = xéquel israelià|||1
ILS = nou xéquel israelià|₪
INR = rupia índia|₹
IQD = dinar iraquià||0
IRR = rial iranià||0
ISJ = corona islandesa antiga|||1
ISK = corona islandesa||0
ITL = lira italiana||0|1
JMD = dòlar jamaicà
JOD = dinar jordà||3
JPY = ien japonès|JP¥|0
KES = xíling kenyà
KGS = som kirguís
KHR = riel cambodjà
KMF = franc de les Comores||0
KPW = won nord-coreà||0
KRH = hwan sud-coreà (1953–1962)|||1
KRO = antic won sud-coreà|||1
KRW = won sud-coreà|₩|0
KWD = dinar kuwaitià||3
KYD = dòlar de les illes Caiman
KZT = tenge kazakh
LAK = kip laosià||0
LBP = lliura libanesa||0
LKR = rupia de Sri Lanka
LRD = dòlar liberià
LSL = loti de Lesotho
LTL = litas lituà
LTT = talonas lituà|||1
LUC = franc convertible luxemburguès|||1
LUF = franc luxemburguès||0|1
LUL = franc financer luxemburguès|||1
LVL = lats letó|||1
LVR = ruble letó|||1
LYD = dinar libi||3
MAD = dírham marroquí
MAF = franc marroquí|||1
MCF = franc monegasc|||1
MDC = cupó moldau|||1
MDL = leu moldau
MGA = ariary malgaix||0
MGF = franc malgaix||0|1
MKD = denar macedoni
MKN = denar macedoni (1992–1993)|||1
MLF = franc malià|||1
MMK = kyat de Myanmar||0
MNT = tögrög mongol||0
MOP = pataca de Macau
MRO = ouguiya maurità||0
MTL = lira maltesa|||1
MTP = lliura maltesa|||1
MUR = rupia de Maurici||0
MVR = rupia de les Maldives
MWK = kwacha malawià
MXN = peso mexicà
MXP = peso de plata mexicà (1861–1992)|||1
MXV = unidad de inversión (UDI) mexicana|||1
MYR = ringgit de Malàisia
MZE = escut moçambiquès|||1
MZM = antic metical moçambiquès|||1
MZN = metical moçambiquès
NAD = dòlar namibià
NGN = naira nigerià
NIC = córdoba nicaragüenca|||1
NIO = córdoba oro nicaragüenca
NLG = florí neerlandès|||1
NOK = corona noruega
NPR = rupia nepalesa
NZD = dòlar neozelandès|NZ$
OMR = rial omanita||3
PAB = balboa panameny
PEI = inti peruà|||1
PEN = nou sol peruà
PES = sol peruà|||1
PGK = kina de Papua Nova Guinea
PHP = peso filipí
PKR = rupia pakistanesa||0
PLN = zloty polonès
PLZ = zloty polonès (1950–1995)|||1
PTE = escut portuguès|||1
PYG = guaraní paraguaià||0
QAR = riyal de Qatar
RHD = dòlar rhodesià|||1
ROL = antic leu romanès|||1
RON = leu romanès
RSD = dinar serbi||0
RUB = ruble rus
RUR = ruble rus (1991–1998)|||1
RWF = franc rwandès||0
SAR = rial saudita
SBD = dòlar de les illes Salomó
SCR = rupia de les Seychelles
SDD = dinar sudanès|||1
SDG = lliura sudanesa
SDP = antiga lliura sudanesa|||1
SEK = corona sueca
SGD = dòlar de Singapur
SHP = lliura de Santa Helena
SIT = tolar eslovè|||1
SKK = corona eslovaca|||1
SLL = leone de Sierra Leone||0
SOS = xíling somali||0
SRD = dòlar de Surinam
SRG = florí de Surinam|||1
SSP = lliura del Sudan del Sud
STD = dobra de São Tomé i Príncipe||0
SUR = ruble soviètic|||1
SVC = colón salvadorenc|||1
SYP = lliura síria||0
SZL = lilangeni swazi
THB = baht tailandès|฿
TJR = ruble tadjik|||1
TJS = somoni tadjik
TMM = manat turcman (1993–2009)||0|1
TMT = manat turcman
TND = dinar tunisià||3
TOP = pa‘anga tongà
TPE = escut de Timor|||1
TRL = lira turca (1922–2005)||0|1
TRY = lira turca|TL
TTD = dòlar de Trinitat i Tobago
TWD = nou dòlar de Taiwan|NT$
TZS = xíling tanzà||0
UAH = hrívnia ucraïnesa
UAK = karbóvanets ucraïnès|||1
UGS = xíling ugandès (1966–1987)|||1
UGX = xíling ugandès||0
USD = dòlar dels Estats Units|$
USN = dòlar dels Estats Units (dia següent)|||1
USS = dòlar dels Estats Units (mateix dia)|||1
UYI = peso uruguaià en unitats indexades||0|1
UYP = peso uruguaià (1975–1993)|||1
UYU = peso uruguaià
UZS = som uzbek||0
VEB = bolívar veneçolà (1871–2008)|||1
VEF = bolívar veneçolà
VND = dong vietnamita|₫|0
VNN = dong vietnamita (1978–1985)|||1
VUV = vatu de Vanuatu||0
WST = tala samoà
XAF = franc CFA BEAC|FCFA|0
XAG = plata|||1
XAU = or|||1
XBA = unitat compensatòria europea|||1
XBB = unitat monetària europea|||1
XBC = unitat de compte europea (XBC)|||1
XBD = unitat de compte europea (XBD)|||1
XCD = dòlar del Carib Oriental
XDR = drets especials de gir|||1
XEU = unitat de moneda europea|||1
XFO = franc or francès|||1
XFU = franc UIC francès|||1
XOF = franc CFA BCEAO||0
XPD = pal·ladi|||1
XPF = franc CFP|CFPF|0
XPT = platí|||1
XRE = fons RINET|||1
XTS = codi reservat per a proves|||1
XXX = moneda desconeguda|||1
YDD = dinar iemenita|||1
YER = rial iemenita||0
YUD = dinar fort iugoslau|||1
YUM = nou dinar iugoslau|||1
YUN = dinar convertible iugoslau|||1
YUR = dinar iugoslau reformat (1992–1993)|||1
ZAL = rand sud-africà (financer)|||1
ZAR = rand sud-africà
ZMK = kwacha zambià (1968–2012)||0|1
ZMW = kwacha zambià
ZRN = nou zaire zairès|||1
ZRZ = zaire zairès|||1
ZWD = dòlar zimbabuès (1980–2008)||0|1
ZWL = dòlar zimbabuès (2009)|||1
ZWR = dòlar zimbabuès (2008)|||1
