# 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 = Sameindu Emirríkini dirham
AFN = Afganistan afghani||0
ALL = Albania lek||0
AMD = Armenia dram||0
ANG = Niðurlonds Karibia gyllin
AOA = Angola kwanza
ARS = Argentina peso
AUD = Avstralskur dollari|A$
AWG = Aruba florin
AZN = Aserbadjan manat
BAM = Bosnia-Hersegovina mark (kann vekslast)
BBD = Barbados dollari
BDT = Bangladesj taka
BGN = Bulgaria lev
BHD = Barein dinar||3
BIF = Burundi frankur||0
BMD = Bermuda dollari
BND = Brunei dollari
BOB = Bolivia boliviano
BRL = Brasilianskur real|R$
BSD = Bahamaoyggjar dollari
BTN = Butan ngultrum
BWP = Botsvana pula
BYN = Hvítarussland ruble
BYR = Hvítarussland ruble (2000–2016)||0|1
BZD = Belis dollari
CAD = Kanada dollari|CA$
CDF = Kongo frankur
CHF = sveisiskur frankur
CLP = Kili peso||0
CNY = kinesiskur yuan|CN¥
COP = Kolombia peso||0
CRC = Kosta Rika colón
CUC = Kuba peso (sum kann vekslast)
CUP = Kuba peso
CVE = Grønhøvdaoyggjar escudo
CZK = Kekkia koruna
DJF = Djibuti frankur||0
DKK = donsk króna|kr
DOP = Dominika peso
DZD = Algeria dinar
EGP = Egyptaland pund
ERN = Eritrea nakfa
ETB = Etiopia birr
EUR = Evra|€
FJD = Fiji dollari
FKP = Falklandsoyggjar pund
GBP = bretsk pund|£
GEL = Georgia lari
GHS = Gana cedi
GIP = Gibraltar pund
GMD = Gambia dalasi
GNF = Guinea frankur||0
GTQ = Guatemala quetzal
GYD = Gujana dollari||0
HKD = Hong Kong dollari|HK$
HNL = Honduras lempira
HRK = Kroatia kuna
HTG = Haiti gourde
HUF = Ungarn forint
IDR = Indonesia rupiah||0
ILS = Ísrael new sheqel|₪
INR = indiskir rupis|₹
IQD = Irak dinar||0
IRR = iranskir rials||0
ISK = íslendsk króna||0
JMD = Jamaika dollari
JOD = Jordan dinar||3
JPY = japanskur yen|JP¥|0
KES = kenjanskur skillingur
KGS = Kirgisia som
KHR = Kambodja riel
KMF = Komoroyggjar frankur||0
KPW = Norðurkorea won||0
KRW = Suðurkorea won|₩|0
KWD = Kuvait dinar||3
KYD = Caymanoyggjar dollari
KZT = Kasakstan tenge
LAK = Laos kip||0
LBP = Libanon pund||0
LKR = Sri Lanka rupi
LRD = Liberia dollari
LYD = Libya dinar||3
MAD = Marokko dirham
MDL = Moldova leu
MGA = Madagaskar ariary||0
MKD = Makedónia denar
MMK = Myanmar (Burma) kyat||0
MNT = Mongolia tugrik||0
MOP = Makao pataca
MRO = Móritania ouguiya||0
MUR = Móritius rupi||0
MVR = Maldivoyggjar rufiyaa
MWK = Malavi kwacha
MXN = Meksiko peso|MX$
MYR = Malaisia ringgit
MZN = Mosambik metical
NAD = Namibia dollari
NGN = Nigeria naira
NIO = Nikaragua córdoba
NOK = norsk króna
NPR = Nepal rupi
NZD = Nýsæland dollari|NZ$
OMR = Oman rial||3
PAB = Panama balboa
PEN = Peru sol
PGK = Papua Nýguinea kina
PHP = Filipsoyggjar peso
PKR = Pakistan rupi||0
PLN = Pólland zloty
PYG = Paraguai guarani||0
QAR = Katar rial
RON = Rumenia leu
RSD = Serbia dinar||0
RUB = Russland ruble
RWF = Ruanda frankur||0
SAR = Saudiarabia riyal
SBD = Salomonoyggjar dollari
SCR = Seyskelloyggjar rupi
SDG = Sudan pund
SEK = svensk króna
SGD = Singapor dollari
SHP = St. Helena pund
SLL = Sierra Leona leone||0
SOS = Somalia skillingur||0
SRD = Surinam dollari
SSP = Suðursudan pund
STD = Sao Tome & Prinsipi dobra||0|1
SYP = Sýria pund||0
SZL = Svasiland lilangeni
THB = Tailand baht
TJS = Tadsjikistan somoni
TMT = Turkmenistan manat
TND = Tunesia dinar||3
TOP = Tonga paʻanga
TRY = Turkaland liri|TL
TTD = Trinidad & Tobago dollari
TWD = Taivan new dollari|NT$
TZS = Tansania skillingur||0
UAH = Ukraina hryvnia
UGX = Uganda skillingur||0
USD = US dollari|US$
UYU = Uruguai peso
UZS = Usbekistan som||0
VEF = Venesuela bolívar
VND = Vjetnam dong|₫|0
VUV = Vanuatu vatu||0
WST = Samoa tala
XAF = Miðafrika CFA frankur|FCFA|0
XAG = unse sølv|||1
XAU = unse guld|||1
XCD = Eystur Karibia dollari|EC$
XOF = Vesturafrika CFA frankur|CFA|0
XPD = unse palladium|||1
XPF = CFP frankur|CFPF|0
XPT = unse platin|||1
XXX = ókent gjaldoyra|||1
YER = Jemen rial||0
ZAR = Suðurafrika rand
ZMW = Sambia kwacha
