# 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: 6546 Google $
#  type=root
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $

ADP = pesetă andorrană||0|1
AED = dirham Emiratele Arabe Unite
AFN = afgan||0
ALL = leka albanez||0
AMD = dram armenesc||0
ANG = gulden Antilele Olandeze
AOA = kwanza angoleză
ARP = peso argentinian (1983–1985)|||1
ARS = peso argentinian
ATS = șiling austriac|||1
AUD = dolar australian|AU$
AWG = florin din Aruba
AZM = manat azer (1993-2006)|||1
AZN = manat Azerbaidjan
BAD = dinar Bosnia-Herțegovina (1992-1994)|||1
BAM = marcă convertibilă bosniacă
BBD = dolar Barbados
BDT = taka Bangladesh
BEC = franc belgian (convertibil)|||1
BEF = franc belgian|||1
BEL = franc belgian (financiar)|||1
BGN = leva bulgărească nouă
BHD = dinar Bahrain||3
BIF = franc Burundi||0
BMD = dolar Bermude
BND = dolar Brunei
BOB = bolivian bolivian
BOP = peso bolivian|||1
BOV = mvdol bolivian|||1
BRE = cruzeiro brazilian (1990–1993)|||1
BRL = real brazilian|R$
BRR = cruzeiro brazilian (1993-1994)|||1
BSD = dolar Bahamas
BTN = ngultrum Bhutan
BUK = kyat birman|||1
BWP = pula Botswana
BYR = rublă bielorusă||0
BZD = dolar Belize
CAD = dolar canadian|CA$
CDF = franc congolez
CHF = franc elvețian||||5
CLP = peso chilian||0
CNY = yuan renminbi chinezesc|CN¥
COP = peso columbian||0
CRC = colon costarican||0
CSD = dinar Serbia și Muntenegru (2002-2006)|||1
CUC = peso cubanez convertibil
CUP = peso cubanez
CVE = escudo Capul Verde
CYP = liră cipriotă|||1
CZK = coroană cehă
DDM = marcă est-germană|||1
DEM = marcă germană|||1
DJF = franc Djibouti||0
DKK = coroană daneză
DOP = peso dominican
DZD = dinar algerian
ECS = sucre Ecuador|||1
EEK = coroană estoniană|||1
EGP = liră egipteană
ERN = nakfa eritreeană
ESA = peseta spaniolă (cont A)|||1
ESB = peseta spaniolă (cont convertibil)|||1
ESP = pesetă spaniolă||0|1
ETB = birr Etiopia
EUR = euro|€
FIM = marcă finlandeză|||1
FJD = dolar Fiji
FKP = liră Insulele Falkland
FRF = franc francez|||1
GBP = liră sterlină|UK£
GEL = lari Georgia
GHC = cedi Ghana (1979-2007)|||1
GHS = cedi ghanez
GIP = liră Gibraltar
GMD = dalasi Gambia
GNF = franc guineean||0
GRD = drahmă grecească|||1
GTQ = quetzal guatemalez
GWP = peso Guineea-Bissau|||1
GYD = dolar guyanez||0
HKD = dolar Hong Kong|HK$
HNL = lempira honduriană
HRD = dinar croat|||1
HRK = kuna croată
HTG = gourde Haiti
HUF = forint maghiar||0
IDR = rupie indoneziană||0
IEP = liră irlandeză|||1
ILP = liră israeliană|||1
ILS = șechel israelian nou|₪
INR = rupie indiană|Rs.
IQD = dinar irakian||0
IRR = rial iranian||0
ISK = coroană islandeză||0
ITL = liră italiană||0|1
JMD = dolar jamaican
JOD = dinar iordanian||3
JPY = yen japonez|JP¥|0
KES = șiling kenyan
KGS = som kârgâz
KHR = riel cambodgian
KMF = franc comorian||0
KPW = won nord-coreean||0
KRW = won sud-coreean|₩|0
KWD = dinar kuweitian||3
KYD = dolar Insulele Cayman
KZT = tenge kazahă
LAK = kip Laos||0
LBP = liră libaneză||0
LKR = rupie Sri Lanka
LRD = dolar liberian
LSL = loti lesothian
LTL = litu lituanian
LUC = franc convertibil luxemburghez|||1
LUF = franc luxemburghez||0|1
LUL = franc financiar luxemburghez|||1
LVL = lats Letonia
LVR = rublă Letonia|||1
LYD = dinar libian||3
MAD = dirham marocan
MAF = franc marocan|||1
MDL = leu moldovenesc
MGA = ariary Madagascar||0
MGF = franc Madagascar||0|1
MKD = dinar macedonean
MLF = franc Mali|||1
MMK = kyat Myanmar||0
MNT = tugrik mongol||0
MOP = pataca Macao
MRO = ouguiya mauritană||0
MTL = liră malteză|||1
MUR = rupie mauritiană||0
MVR = rufiyaa maldiviană
MWK = kwacha malawiană
MXN = peso mexican|MX$
MXP = peso mexican de argint (1861–1992)|||1
MYR = ringgit malaiezian
MZE = escudo Mozambic|||1
MZM = metical Mozambic vechi|||1
MZN = metical Mozambic
NAD = dolar namibian
NGN = naira nigeriană
NIC = cordoba Nicaragua|||1
NIO = cordoba oro nicaraguană
NLG = gulden olandez|||1
NOK = coroană norvegiană
NPR = rupie nepaleză
NZD = dolar neozeelandez|NZ$
OMR = riyal Oman||3
PAB = balboa panameză
PEI = inti peruvian|||1
PEN = sol nou peruvian
PES = sol peruvian|||1
PGK = kina Papua-Noua Guinee
PHP = peso filipinez
PKR = rupie pakistaneză||0
PLN = zlot nou polonez
PLZ = zlot polonez (1950–1995)|||1
PYG = guarani Paraguay||0
QAR = riyal Qatar
RHD = dolar rhodesian|||1
ROL = leu vechi|||1
RON = leu românesc
RSD = dinar sârbesc||0
RUB = rublă rusească
RWF = franc Rwanda||0
SAR = riyal Arabia Saudită
SBD = dolar Insulele Solomon
SCR = rupie Seychelles
SDD = dinar sudanez|||1
SDG = liră sudaneză
SDP = liră sudaneză (1957-1998)|||1
SEK = coroană suedeză
SGD = dolar Singapore
SHP = liră Insula Sf. Elena
SIT = tolar sloven|||1
SKK = coroană slovacă|||1
SLL = leone Sierra Leone||0
SOS = șiling somalez||0
SRD = dolar Surinam
SRG = gulden Surinam|||1
STD = dobra Sao Tome și Principe||0
SUR = rublă sovietică|||1
SVC = colon El Salvador|||1
SYP = liră siriană||0
SZL = lilangeni Swaziland
THB = baht thailandez|฿
TJR = rublă Tadjikistan|||1
TJS = somoni tadjic
TMM = manat turkmen (1993-2009)||0|1
TMT = manat turkmen
TND = dinar tunisian||3
TOP = pa’anga tongană
TRL = liră turcească||0|1
TRY = liră turcească nouă
TTD = dolar Trinidad-Tobago
TWD = dolar nou Taiwan|NT$
TZS = șiling tanzanian||0
UAH = hryvna ucraineană
UAK = carboavă ucraineană|||1
UGS = șiling ugandez (1966–1987)|||1
UGX = șiling ugandez||0
USD = dolar american|$
USN = dolar american (ziua următoare)|||1
USS = dolar american (aceeași zi)|||1
UYP = peso Uruguay (1975–1993)|||1
UYU = peso nou Uruguay
UZS = sum Uzbekistan||0
VEB = bolivar Venezuela|||1
VEF = bolívar fuerte venezuelean
VND = dong vietnamez|₫|0
VUV = vatu din Vanuatu||0
WST = tala samoană
XAF = franc Comunitatea Financiară|FCFA|0
XAG = argint|||1
XAU = aur|||1
XBA = unitate compusă europeană|||1
XBB = unitate monetară europeană|||1
XBC = unitate de cont europeană (XBC)|||1
XBD = unitate de cont europeană (XBD)|||1
XCD = dolar Caraibele de Est|EC$
XDR = drepturi speciale de tragere|||1
XEU = unitate de monedă europeană|||1
XFO = franc francez de aur|||1
XFU = franc UIC francez|||1
XOF = franc CFA BCEAO|CFA|0
XPD = paladiu|||1
XPF = franc CFP|CFPF|0
XPT = platină|||1
XTS = cod monetar de test|||1
XXX = monedă necunoscută|||1
YDD = dinar Yemen|||1
YER = riyal Yemen||0
YUD = dinar iugoslav greu|||1
YUM = dinar iugoslav nou|||1
YUN = dinar iugoslav convertibil|||1
ZAL = rand sud-african (financiar)|||1
ZAR = rand sud-african
ZMK = kwacha zambian||0
ZRN = zair nou|||1
ZWD = dolar Zimbabwe||0|1
ZWL = dolar Zimbabwe (2009)|||1
