# 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
AFA = afgani afganés (1927–2002)|||1
AFN = afgani afganés||0
ALK = lek albanés (1946–1965)|||1
ALL = lek albanés||0
AZM = manat azerbaidjanés (1993–2006)|||1
AZN = manat azerbaidjanés
CLE = escut xilé|||1
CLP = peso xilé||0
CNX = dòlar del Banc Popular Xinés|||1
CNY = iuan xinés|¥
FIM = marc finlandés|||1
FRF = franc francés|||1
HUF = fòrint hongarés
JPY = ien japonés|JP¥|0
LUC = franc convertible luxemburgués|||1
LUF = franc luxemburgués||0|1
LUL = franc financer luxemburgués|||1
MZE = escut moçambiqués|||1
MZM = antic metical moçambiqués|||1
MZN = metical moçambiqués
NLG = florí neerlandés|||1
NZD = dòlar neozelandés|NZ$
PLN = zloty polonés
PLZ = zloty polonés (1950–1995)|||1
PTE = escut portugués|||1
ROL = antic leu romanés|||1
RON = leu romanés
RWF = franc rwandés||0
SIT = tolar eslové|||1
THB = baht tailandés|฿
UAK = karbóvanets ucraïnés|||1
UGS = xíling ugandés (1966–1987)|||1
UGX = xíling ugandés||0
XFO = franc or francés|||1
XFU = franc UIC francé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
