# 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
AED = Verenigde Arabiese Emirate dirham
AFN = Afgaanse afgani||0
ALL = Albanese lek||0
AMD = Armeense dram||0
ANG = Nederlands-Antilliaanse gulde
AOA = Angolese kwanza
ARS = Argentynse peso
AUD = Australiese dollar|A$
AWG = Arubaanse floryn
AZN = Azerbeidjaanse manat
BAM = Bosnies-Herzegowiniese omskakelbare marka
BBD = Barbados-dollar
BDT = Bangladesjiese taka
BGN = Bulgaarse lev
BHD = Bahreinse dinar||3
BIF = Burundiese frank||0
BMD = Bermuda-dollar
BND = Broeneise dollar
BOB = Boliviaanse boliviano
BRL = Brasilliaanse reaal|R$
BSD = Bahamiaanse dollar
BTN = Bhoetanese ngoeltroem
BWP = Botswana pula
BYN = Belo-Russiese roebel
BYR = Belo-Russiese roebel (2000–2016)||0|1
BZD = Beliziese dollar
CAD = Kanadese dollar|CA$
CDF = Kongolese frank
CHF = Switserse frank
CLP = Chileense peso||0
CNH = Chinese joean|||1
CNY = Sjinese joean renminbi|CN¥
COP = Colombiaanse peso||0
CRC = Costa Ricaanse colón
CUC = Kubaanse omskakelbare peso
CUP = Kubaanse peso
CVE = Kaap Verdiese escudo
CZK = Tsjeggiese kroon
DJF = Djiboeti frank||0
DKK = Deense kroon
DOP = Dominikaanse peso
DZD = Algeriese dinar
EGP = Egiptiese pond
ERN = Eritrese nakfa
ETB = Etiopiese birr
EUR = Euro|€
FJD = Fidjiaanse dollar
FKP = Falkland-eilande pond
GBP = Britse pond|£
GEL = Georgiese lari|₾
GHC = Ghanese cedi (1979–2007)|||1
GHS = Ghanese cedi
GIP = Gibraltarese pond
GMD = Gambiese dalasi
GNF = Guinese frank||0
GNS = Guinese syli|||1
GTQ = Guatemalaanse quetzal
GYD = Guyanese dollar||0
HKD = Hong Kong dollar|HK$
HNL = Hondurese lempira
HRK = Kroatiese kuna
HTG = Haïtiaanse gourde
HUF = Hongaarse florint
IDR = Indonesiese roepia||0
ILS = Israeliese nuwe sikkel|₪
INR = Indiese roepee|₹
IQD = Irakse dinar||0
IRR = Iranse rial||0
ISK = Yslandse kroon||0
ITL = Italiaanse lier||0|1
JMD = Jamaikaanse dollar
JOD = Jordaniese dinar||3
JPY = Japannese jen|JP¥|0
KES = Keniaanse sjieling
KGS = Kirgisiese som
KHR = Kambodjaanse riel
KMF = Comoraanse frank||0
KPW = Noord-Koreaanse won||0
KRW = Suid-Koreaanse won|₩|0
KWD = Koeweitse dinar||3
KYD = Cayman-eilande dollar
KZT = Kazakse tenge
LAK = Laosiaanse kip||0
LBP = Lebanese pond||0
LKR = Sri Lankaanse roepee
LRD = Liberiese dollar
LSL = Lesotho loti
LTL = Litause litas|||1
LVL = Lettiese lats|||1
LYD = Libiese dinar||3
MAD = Marokkaanse dirham
MDL = Moldowiese leu
MGA = Malgassiese ariary||0
MKD = Macedoniese denar
MMK = Mianmese kyat||0
MNT = Mongoolse toegrik||0
MOP = Macaose pataca
MRO = Mauritaniese ouguiya||0
MUR = Mauritiaanse rupee||0
MVR = Malediviese rufia
MWK = Malawiese kwacha
MXN = Meksikaanse peso
MYR = Maleisiese ringgit
MZM = Mosambiekse metical (1980–2006)|||1
MZN = Mosambiekse metical
NAD = Namibiese dollar
NGN = Nigeriese naira
NIO = Nicaraguaanse córdoba
NOK = Noorse kroon
NPR = Nepalese roepee
NZD = Nieu-Seeland dollar|NZ$
OMR = Omaanse rial||3
PAB = Panamese balboa
PEN = Peruaanse sol
PGK = Papoea-Nieu-Guinese kina
PHP = Filippynse peso
PKR = Pakistanse roepee||0
PLN = Poolse zloty
PYG = Paraguaanse guarani||0
QAR = Katarrese rial
RON = Roemeense leu
RSD = Serbiese dinar||0
RUB = Russiese roebel|₽
RWF = Rwandiese frank||0
SAR = Saoedi-Arabiese riyal
SBD = Salomonseilande dollar
SCR = Seychellese rupee
SDG = Soedannese pond
SDP = Soedannese pond (1957–1998)|||1
SEK = Sweedse kroon
SGD = Singapoer dollar
SHP = Sint Helena pond
SLL = Sierra Leoniese leone||0
SOS = Somaliese sjieling||0
SRD = Surinaamse dollar
SSP = Suid-Soedanese pond
STD = São Tomé en Príncipe dobra||0|1
SYP = Siriese pond||0
SZL = Swazilandse lilangeni
THB = Thaise baht|฿
TJS = Tadjikse roebel
TMT = Turkmeense manat
TND = Tunisiese dinar||3
TOP = Tongaanse pa’anga
TRL = Turkse lier (1922–2005)||0|1
TRY = Turkse lier|TL
TTD = Trinidad en Tobago dollar
TWD = Nuwe Taiwanese dollar|NT$
TZS = Tanzaniese sjieling||0
UAH = Oekraïnse hriwna
UGX = Ugandese sjieling||0
USD = Amerikaanse dollar|US$
UYU = Uruguaanse peso
UZS = Oezbekiese som||0
VEF = Venezolaanse bolivar
VND = Viëtnamese dong|₫|0
VUV = Vanuatuse vatu||0
WST = Samoaanse tala
XAF = CFA frank BEAC|FCFA|0
XCD = Oos-Karibbiese dollar|EC$
XOF = CFA frank BCEAO|CFA|0
XPF = CFP-frank|CFPF|0
XXX = Onbekende geldeenheid|||1
YER = Jemenitiese rial||0
ZAR = Suid-Afrikaanse rand|R
ZMK = Zambiese kwacha (1968–2012)||0|1
ZMW = Zambiese kwacha
ZWD = Zimbabwiese dollar||0|1
