# Do not edit - generated from Unicode CLDR data
#   main/nn.xml - r4178 2009-06-14 23:46:26 -0400 (Sun, 14 Jun 2009)
#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag
# 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
# Trailing empty fields can be omitted

ADP = andorransk peseta||0|1
AED = UAE dirham
AFA = afghani (1927-2002)|||1
AFN = afghani||0
ALL = albansk lek||0
AMD = armensk dram||0
ANG = nederlansk antillegylden
AOA = angolsk kwanza
AOK = angolsk kwanza (1977-1990)|||1
AON = angolsk ny kwanza (1990-2000)|||1
AOR = angolsk kwanza reajustado (1995-1999)|||1
ARA = argentisk austral|||1
ARL = ARL|ARLA||1
ARM = ARM|||1
ARP = argentinsk peso (1983-1985)|||1
ARS = argentinsk peso
ATS = austerriksk schilling|||1
AUD = australsk dollar
AWG = arubisk gylden
AZM = aserbaijansk manat|||1
AZN = aserbajdsjansk manat
BAD = bosnisk-hercegovinsk dinar|||1
BAM = bosnisk-hercegovinsk mark (konvertibel)
BBD = barbadisk dollar
BDT = bangladeshisk taka
BEC = belgisk franc (konvertibel)
BEF = belgisk franc|||1
BEL = belgisk franc (finansiell)
BGL = bulgarsk hard lev|||1
BGN = bulgarsk ny lev
BHD = bahrainsk dinar||3
BIF = burundisk franc||0
BMD = bermudisk dollar
BND = bruneisk dollar
BOB = boliviano
BOP = bolivisk peso|||1
BOV = bolivisk mvdol
BRB = brasiliansk cruzeiro novo (1967-1986)|||1
BRC = brasiliansk cruzado|||1
BRE = brasiliansk cruzeiro (1990-1993)|||1
BRL = brasiliansk real
BRN = brasiliansk cruzado novo|||1
BRR = brasiliansk cruzeiro|||1
BRZ = BRZ|||1
BSD = bahamisk dollar
BTN = bhutansk ngultrum
BUK = burmesisk kyat|||1
BWP = botswansk pula
BYB = kviterussisk ny rubel (1994-1999)|||1
BYR = kviterussisk rubel||0
BZD = belizisk dollar
CAD = kanadisk dollar
CDF = kongolesisk franc
CHE = WIR euro
CHF = sveitsisk franc
CHW = WIR franc
CLE = CLE|||1
CLF = chilensk unidades de fomento||0
CLP = chilensk peso||0
CNY = kinesisk yuan renminbi|CN¥
COP = colombiansk peso||0
COU = unidad de valor real
CRC = costaricansk colon||0
CSD = gammal serbisk dinar|||1
CSK = tsjekkoslovakisk koruna (hard)|||1
CUC = CUC|CUC$
CUP = kubansk peso|CU$
CVE = kappverdisk escudo
CYP = kypriotisk pund|||1
CZK = tsjekkisk koruna
DDM = austtysk mark|||1
DEM = tysk mark|||1
DJF = djiboutisk franc|Fdj|0
DKK = dansk krone|Dkr
DOP = dominikansk peso
DZD = algerisk dinar|DA
ECS = ecuadoriansk sucre|||1
ECV = ecuadoriansk unidad de valor constante (UVC)
EEK = estisk kroon|Ekr
EGP = egyptisk pund|EG£
EQE = EQE|||1
ERN = eritreisk nakfa|Nfk
ESA = spansk peseta (A-konto)
ESB = spansk peseta (konvertibel konto)
ESP = spansk peseta|Pts|0|1
ETB = etiopisk birr|Br
EUR = euro
FIM = finsk mark|mk||1
FJD = fijiansk dollar
FKP = Falkland-pund
FRF = fransk franc|||1
GBP = britisk pund sterling
GEK = georgisk kupon larit|||1
GEL = georgisk lari
GHC = ghanesisk cedi (1979-2007)|||1
GHS = ghanesisk cedi
GIP = gibraltarsk pund
GMD = gambisk dalasi
GNF = guineansk franc|FG|0
GNS = guineansk syli|||1
GQE = ekvatorialguineansk ekwele guineana|||1
GRD = gresk drakme|₯||1
GTQ = guatemalansk quetzal
GWE = portugisisk guinea escudo|||1
GWP = Guinea-Bissau-peso
GYD = guyansk dollar|GY$|0
HKD = Hongkong-dollar|HK$
HNL = honduransk lempira
HRD = kroatisk dinar|||1
HRK = kroatisk kuna|kn
HTG = haitisk gourde
HUF = ungarsk forint|Ft|0
IDR = indonesisk rupi|Rp|0
IEP = irsk pund|IR£||1
ILP = israelsk pund|I£||1
ILS = israelsk ny shekel|₪
INR = indisk rupi
IQD = iraksk dinar||0
IRR = iransk rial||0
ISK = islandsk krone|Ikr|0
ITL = italiensk lire|IT₤|0|1
JMD = jamaikansk dollar|J$
JOD = jordansk dinar|JD|3
JPY = japansk yen||0
KES = kenyansk shilling|Ksh
KGS = kirgisisk som
KHR = kambodsjansk riel
KMF = komorisk franc|CF|0
KPW = nordkoreansk won||0
KRW = sørkoreansk won|₩|0
KWD = kuwaitisk dinar|KD|3
KYD = caymansk dollar|KY$
KZT = kasakhstansk tenge
LAK = laotisk kip|₭|0
LBP = libanesisk pund|LB£|0
LKR = srilankisk rupi|SLRs
LRD = liberisk dollar|L$
LSL = lesothisk loti
LSM = LSM|||1
LTL = litauisk lita|Lt
LTT = litauisk talona|||1
LUC = luxemburgsk konvertibel franc
LUF = luxemburgsk franc||0|1
LUL = luxemburgsk finansiell franc
LVL = latvisk lat|Ls
LVR = latvisk rubel|||1
LYD = libysk dinar|LD|3
MAD = marokkansk dirham
MAF = marokkansk franc|||1
MDL = moldovsk leu
MGA = madagassisk ariary||0
MGF = madagassisk franc||0|1
MKD = makedonsk denar
MLF = malisk franc|||1
MMK = myanmarsk kyat||0
MNT = mongolsk tugrik|₮|0
MOP = makaosk pataca|MOP$
MRO = mauritansk ouguiya|UM|0
MTL = maltesisk lira|Lm||1
MTP = maltesisk pund|MT£||1
MUR = mauritansk rupi|MURs|0
MVR = maldivisk rufiyaa
MWK = malawisk kwacha
MXN = meksikansk peso
MXP = meksikansk sølvpeso (1861-1992)|MX$||1
MXV = meksikansk unidad de inversion (UDI)
MYR = malaysisk ringgit|RM
MZE = mosambikisk escudo|||1
MZM = gammal mosambikisk metical|Mt||1
MZN = mosambikisk metical|MTn
NAD = namibisk dollar|N$
NGN = nigeriansk naira|₦
NIC = nicaraguansk cordoba|||1
NIO = nicaraguansk cordoba oro|C$
NLG = nederlandsk gylden|fl||1
NOK = norsk krone|kr
NPR = nepalsk rupi|NPRs
NZD = new zealandsk dollar|NZ$
OMR = omansk rial||3
PAB = panamansk balboa|B/.
PEI = peruansk inti|I/.||1
PEN = peruansk nuevo sol|S/.
PES = peruansk sol|||1
PGK = papuansk kina
PHP = filippinsk peso|₱
PKR = pakistansk rupi|PKRs|0
PLN = polsk zloty|zł
PLZ = polsk zloty (1950-1995)|||1
PTE = portugisisk escudo|Esc||1
PYG = paraguayansk guarani|₲|0
QAR = qatarsk rial|QR
RHD = rhodesisk dollar|RH$||1
ROL = gammal rumensk leu|||1
RON = rumensk leu
RSD = serbisk dinar|din.|0
RUB = russisk rubel
RUR = russisk rubel (1991-1998)|||1
RWF = rwandisk franc||0
SAR = saudiarabisk rial|SR
SBD = salomonsk dollar|SI$
SCR = seychellisk rupi|SRe
SDD = gammal sudanesisk dinar|LSd||1
SDG = sudansk pund
SDP = gammalt sudanesisk pund|||1
SEK = svensk krone|Skr
SGD = singaporsk dollar|S$
SHP = sankthelensk pund|SH£
SIT = slovensk tolar|||1
SKK = slovakisk koruna|Sk||1
SLL = sierraleonsk leone|Le|0
SOS = somalisk shilling|Ssh|0
SRD = surinamsk dollar|SR$
SRG = surinamsk gylden|Sf||1
STD = Sao Tome og Principe-dobra|Db|0
SUR = sovjetisk rubel|||1
SVC = salvadoransk colon|SV₡||1
SYP = syrisk pund|SY£|0
SZL = swazilandsk lilangeni
THB = thailandsk baht|฿
TJR = tadsjikisk rubel|||1
TJS = tadsjikisk somoni
TMM = turkmensk manat||0|1
TND = tunisisk dinar|DT|3
TOP = tongansk paʻanga|T$
TPE = timoresisk escudo|||1
TRL = gammal tyrkiske lire||0|1
TRY = tyrkisk lire|TL
TTD = trinidadisk dollar|TT$
TWD = taiwansk ny dollar|NT$
TZS = tanzaniansk shilling|TSh|0
UAH = ukrainsk hryvnia|₴
UAK = ukrainsk karbovanetz|||1
UGS = ugandisk shilling (1966-1987)|||1
UGX = ugandisk shilling|USh|0
USD = amerikansk dollar
USN = amerikansk dollar (neste dag)
USS = amerikansk dollar (same dag)
UYI = uruguayansk peso en unidades indexadas
UYP = uruguayansk peso (1975-1993)|||1
UYU = uruguayansk peso|$U
UZS = usbekisk sum||0
VEB = venezuelansk bolivar|||1
VEF = venezuelansk bolivar fuerte|Bs.F.
VND = vietnamesisk dong|₫|0
VUV = vanuatuisk vatu|VT|0
WST = vestsamoisk tala|WS$
XAF = CFA franc BEAC|FCFA|0
XAG = sølv
XAU = gull
XBA = europeisk samansett eining
XBB = europeisk monetær eining
XBC = europeisk kontoeining (XBC)
XBD = europeisk kontoeining (XBD)
XCD = austkaribisk dollar|EC$
XDR = spesielle trekkrettar
XEU = europeisk valutaeining
XFO = fransk gullfranc
XFU = fransk UIC-franc
XOF = CFA franc BCEAO|CFA|0
XPD = palladium
XPF = CFP franc|CFPF|0
XPT = platina
XRE = RINET-fond
XTS = testvalutakode
XXX = ukjend valuta
YDD = jemenittisk dinar|||1
YER = jemenittisk rial|YR|0
YUD = jugoslavisk dinar (hard)|||1
YUM = jugoslavisk noviy-dinar|||1
YUN = jugoslavisk konvertibel dinar|||1
ZAL = sørafrikansk rand (finansiell)
ZAR = sørafrikansk rand|R
ZMK = zambisk kwacha|ZK|0
ZRN = zairisk ny zaire|NZ||1
ZRZ = zairisk zaire|||1
ZWD = zimbabwisk dollar|Z$|0|1
