# 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
AMD = Dram armen||0
ARS = Peso argjentin
ATS = Selin austriac|||1
AUD = dolar australian|A$
BEF = Franc de Belgjiche|||1
BIF = Franc burundês||0
BND = Dolar dal Brunei
BRL = real brasilian|R$
BYR = Rubli bielorùs||0
CAD = dolar canadês|CA$
CHF = franc svuizar
CNY = yuan cinês|CN¥
CSD = Vieri dinar serp|||1
CUP = Peso cuban
CZK = Corone de Republiche Ceche
DEM = Marc todesc|||1
DKK = corone danese
DZD = Dinar algerin
EUR = euro|€
FRF = Franc francês|||1
GBP = sterline britaniche|£
HKD = dolar di Hong Kong|HK$
HRD = Dinar cravuat|||1
HRK = Kuna cravuate
IDR = rupiah indonesiane||0
INR = rupie indiane|Rs.
IRR = Rial iranian||0
ITL = Lire taliane||0|1
JPY = yen gjaponês|JP¥|0
KRW = won de Coree dal Sud|₩|0
LVL = Lats leton|||1
MXN = peso messican|MX$
NAD = Dolar namibian
NIO = Córdoba oro nicaraguan
NOK = corone norvegjese
NZD = Dollar neozelandês|NZ$
PKR = Rupie pachistane||0
PLN = zloty polac
RSD = Dinar serp||0
RUB = rubli rus
SAR = riyal de Arabie Saudite
SEK = corone svedese
SIT = Talar sloven|||1
SKK = Corone slovache|||1
THB = baht tailandês|฿
TRL = Viere Lire turche||0|1
TRY = lire turche|TL
TWD = gnûf dolar taiwanês|NT$
USD = dolar american|US$
USN = Dolar american (prossime zornade)|||1
USS = Dolar american (stesse zornade)|||1
XAG = Arint|||1
XAU = Aur|||1
XBA = Unitât composite europeane|||1
XBB = Unitât monetarie europeane|||1
XBC = Unitât di acont europeane (XBC)|||1
XBD = Unitât di acont europeane (XBD)|||1
XDR = Dirits speciâi di incas|||1
XFO = Franc aur francês|||1
XFU = Franc UIC francês|||1
XPD = Paladi|||1
XPT = Platin|||1
XRE = fonts RINET|||1
XTS = codiç di verifiche de monede|||1
XXX = Monede no valide o no cognossude|||1
ZAR = rand sudafrican
