# Copyright 2014 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=25
#  date=$Date: 2014-03-01 06:57:43 +0100 (Sat, 01 Mar 2014) $
#  number=$Revision: 9852 $
#  type=cy
AED = Dirham Yr Emiradau Arabaidd Unedig
AFN = Afghani Afghanistan||0
ALL = Lek Albania||0
AMD = Dram Armenia||0
ANG = Guilder Antilles yr Iseldiroedd
AOA = Kwanza Angola
ARS = Peso yr Ariannin
AUD = Doler Awstralia|$
AWG = Fflorin Aruba
AZN = Manat Azerbaijan
BAM = Marc Trosadwy Bosnia a Hercegovina
BBD = Doler Barbados
BDT = Taka Bangladesh|৳
BGN = Lev Bwlgaria
BHD = Dinar Bahrain||3
BIF = Ffranc Burundi||0
BMD = Doler Bermuda|$
BND = Doler Brunei
BOB = Boliviano Bolifia
BRL = Real Brasil|R$
BSD = Doler y Bahamas|$
BTN = Ngultrum Bhutan
BWP = Pula Botswana
BYR = Rwbl Belarws||0
BZD = Doler Belize|$
CAD = Doler Canada|CA$
CDF = Ffranc Congo
CHF = Ffranc y Swistir
CLP = Peso Chile|$|0
CNY = Yuan Tsieina|¥
COP = Peso Colombia||0
CRC = Colón Costa Rica||0
CUC = Peso Trosadwy Cuba
CUP = Peso Cuba|$
CVE = Esgwdo Cabo Verde
CZK = Koruna Tsiec
DJF = Ffranc Djibouti||0
DKK = Krone Denmarc
DOP = Peso Gweriniaeth Dominica|$
DZD = Dinar Algeria
EGP = Punt Yr Aifft
ERN = Nakfa Eritrea
ETB = Birr Ethiopia
EUR = Ewro|€
FJD = Doler Ffiji
FKP = Punt Ynysoedd Falkland/Malvinas
GBP = Punt Sterling Prydain|£
GEL = Lari Georgia
GHS = Cedi Ghana
GIP = Punt Gibraltar|£
GMD = Dalasi Gambia
GNF = Ffranc Guinée||0
GTQ = Quetzal Guatemala
GYD = Doler Guyana||0
HKD = Doler Hong Kong|$
HNL = Lempira Honduras
HRK = Kuna Croatia
HTG = Gourde Haiti
HUF = Fforint Hwngari||0
IDR = Rupiah Indonesia||0
IEP = Punt Iwerddon|||1
ILS = Shegel Newydd Israel|₪
INR = Rwpî India|₹
IQD = Dinar Irac||0
IRR = Rial Iran||0
ISK = Króna Gwlad yr Iâ||0
JMD = Doler Jamaica
JOD = Dinar Gwlad yr Iorddonen||3
JPY = Yen Japan|¥|0
KES = Swllt Kenya
KGS = Som Kyrgyzstan
KHR = Riel Cambodia
KMF = Ffranc Comoros||0
KPW = Won Gogledd Corea||0
KRW = Won De Korea|₩|0
KWD = Dinar Kuwait||3
KYD = Doler Ynysoedd Cayman|$
KZT = Tenge Kazakstan|₸
LAK = Kip Laos||0
LBP = Punt Libanus||0
LKR = Rwpî Sri Lanka
LRD = Doler Liberia
LTL = Litas Lithwania
LVL = Lats Latfia|||1
LYD = Dinar Libya||3
MAD = Dirham Moroco
MDL = Leu Moldofa
MGA = Ariary Madagascar||0
MKD = Denar Macedonia
MMK = Kyat Myanmar||0
MNT = Tugrik Mongolia||0
MOP = Pataca Macau
MRO = Ouguiya Mauritania||0
MUR = Rwpî Mauritius||0
MVR = Rufiyaa'r Maldives
MWK = Kwacha Malawi
MXN = Peso México|$
MYR = Ringgit Malaysia
MZN = Metical Mozambique
NAD = Doler Namibia|$
NGN = Naira Nigeria
NIO = Córdoba Nicaragua
NOK = Krone Norwy
NPR = Rwpî Nepal
NZD = Doler Seland Newydd|$
OMR = Rial Oman||3
PAB = Balboa Panama
PEN = Nuevo Sol Periw
PGK = Kina Papua Guinea Newydd
PHP = Peso Pilipinas
PKR = Rwpî Pacistan||0
PLN = Zloty Gwlad Pwyl
PYG = Guarani Paraguay|₲|0
QAR = Rial Qatar
RON = Leu Rwmania
RSD = Dinar Serbia||0
RUB = Rwbl Rwsia
RWF = Ffranc Rwanda||0
SAR = Riyal Saudi Arabia
SBD = Doler Ynysoedd Solomon|$
SCR = Rwpî Seychelles
SDG = Punt Sudan
SEK = Krona Sweden
SGD = Doler Singapore|$
SHP = Punt Saint Helena
SLL = Leone Sierra Leone||0
SOS = Swllt Somalia||0
SRD = Doler Surinam
SSP = Punt De Sudan|£
STD = Dobra São Tomé a Príncipe||0
SYP = Punt Syria||0
SZL = Lilangeni Gwlad Swazi
THB = Baht Gwlad Thai|฿
TJS = Somoni Tajikistan
TMT = Manat Turkmenistan
TND = Dinar Tunisia||3
TOP = Paʻanga Tonga
TRY = Lira Twrci
TTD = Doler Trinidad a Tobago|$
TWD = Doler Newydd Taiwan|NT$
TZS = Swllt Tanzania||0
UAH = Hryvnia Wcráin|₴
UGX = Swllt Uganda||0
USD = Doler UDA|$
UYU = Peso Uruguay
UZS = Som Uzbekistan||0
VEF = Bolívar Venezuela
VND = Dong Fietnam|₫|0
VUV = Vatu Vanuatu||0
WST = Tala Samoa
XAF = Ffranc CFA y BEAC|FCFA|0
XCD = Doler Dwyrain y Caribî|EC$
XOF = Ffranc CFA y BCEAO|CFA|0
XPF = Ffranc CPF|CFPF|0
XXX = Arian Cyfredol Anhysbys|||1
YER = Rial Yemen||0
ZAR = Rand De Affrica
ZMK = Kwacha Zambia (1968–2012)||0|1
ZMW = Kwacha Zambia
