# Do not edit - generated from Unicode CLDR data
#   main/pl.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 = peseta andorska||0|1
AED = dirham arabski
AFA = afgani (1927-2002)|||1
AFN = afgani|Af|0
ALL = lek albański||0
AMD = dram armeński||0
ANG = gulden Antyle Holenderskie|NAf.
AOA = kwanza angolańska|Kz
AOK = kwanza angolańska (1977-1990)|||1
AON = nowa kwanza angolańska (1990-2000)|||1
AOR = kwanza angolańska Reajustado (1995-1999)|||1
ARA = austral argentyński|₳||1
ARL = ARL|$L||1
ARM = ARM|m$n||1
ARP = peso argentyńskie (1983-1985)|||1
ARS = peso argentyńskie|AR$
ATS = szyling austriacki |||1
AUD = dolar australijski|AU$
AWG = gulden arubski|Afl.
AZM = manat azerbejdżański|||1
AZN = manat azerski|man.
BAD = dinar Bośni i Hercegowiny|||1
BAM = marka konwertybilna Bośni i Hercegowiny|KM
BBD = dolar Barbadosu|Bds$
BDT = taka bengalska|Tk
BEC = frank belgijski (zamienny)
BEF = frank belgijski|BF||1
BEL = frank belgijski (finansowy)
BGL = lew bułgarski|||1
BGN = nowy lew bułgarski
BHD = dinar bahrański|BD|3
BIF = frank burundyjski|FBu|0
BMD = dolar bermudzki|BD$
BND = dolar brunejski|BN$
BOB = boliviano|Bs
BOP = peso boliwijskie|$b.||1
BOV = mvdol boliwijski
BRB = cruzeiro novo brazylijskie (1967-1986)|||1
BRC = cruzado brazylijskie|||1
BRE = cruzeiro brazylijskie (1990-1993)|||1
BRL = real brazylijski|R$
BRN = nowe cruzado brazylijskie|||1
BRR = cruzeiro brazylijskie|||1
BSD = dolar bahamski|BS$
BTN = ngultrum Bhutanu|Nu.
BUK = kyat birmański|||1
BWP = pula
BYB = rubel białoruski (1994-1999)|||1
BYR = rubel białoruski||0
BZD = dolar belizeński|BZ$
CAD = dolar kanadyjski|CA$
CDF = frank kongijski
CHE = CHE
CHF = frank szwajcarski|Fr.
CHW = CHW
CLE = CLE|Eº||1
CLF = CLF||0
CLP = peso chilijskie|CL$|0
CNY = juan renminbi|CN¥
COP = peso kolumbijskie|CO$|0
COU = COU
CRC = colon kostarykański|₡|0
CSD = stary dinar serbski|||1
CSK = korona czechosłowacka|||1
CUC = CUC|CUC$
CUP = peso kubańskie|CU$
CVE = escudo Zielonego Przylądka|CV$
CYP = funt cypryjski|CY£||1
CZK = korona czeska|Kč
DDM = wschodnia marka wschodnioniemiecka|||1
DEM = marka niemiecka|DM||1
DJF = frank Dżibuti|Fdj|0
DKK = korona duńska|Dkr
DOP = peso dominikańskie|RD$
DZD = dinar algierski|DA
ECS = sucre ekwadorski|||1
ECV = ECV
EEK = korona estońska|Ekr
EGP = funt egipski|EG£
EQE = EQE|||1
ERN = nakfa erytrejska|Nfk
ESA = peseta hiszpańska (Konto A)
ESB = peseta hiszpańska (konto wymienne)
ESP = peseta hiszpańska|Pts|0|1
ETB = birr etiopski|Br
EUR = euro|€
FIM = marka fińska|mk||1
FJD = dolar fidżi|FJ$
FKP = funt Wysp Falklandzkich|FK£
FRF = frank francuski |₣||1
GBP = funt szterling|£
GEK = kupon gruziński larit|||1
GEL = lari gruzińskie
GHC = cedi ghańskie|₵||1
GHS = cedi Ghany|GH₵
GIP = funt gibraltarski|GI£
GMD = dalasi gambijskie
GNF = frank gwinejski|FG|0
GNS = syli gwinejskie|||1
GQE = ekwele gwinejskie Gwinei Równikowej|||1
GRD = drachma grecka|₯||1
GTQ = quetzal gwatemalski
GWE = escudo Gwinea Portugalska|||1
GWP = peso Guinea-Bissau
GYD = dolar gujański|GY$|0
HKD = dolar hongkoński|HK$
HNL = lempira Hondurasu
HRD = dinar chorwacki|||1
HRK = kuna chorwacka|kn
HTG = gourde haitańskie
HUF = forint węgierski |Ft|0
IDR = rupia indonezyjska|Rp|0
IEP = funt irlandzki|IR£||1
ILP = funt izraelski|I£||1
ILS = nowy szekel izraelski|₪
INR = rupia indyjska|Rs
IQD = dinar iracki||0
IRR = rial irański||0
ISK = korona islandzka|Ikr|0
ITL = lir włoski|IT₤|0|1
JMD = dolar jamajski|J$
JOD = dinar jordański|JD|3
JPY = jen japoński|JP¥|0
KES = szyling kenijski|Ksh
KGS = som kirgiski
KHR = riel kambodżański
KMF = frank komoryjski|CF|0
KPW = won północnokoreański||0
KRW = won południowokoreański|₩|0
KWD = dinar kuwejcki|KD|3
KYD = dolar kajmański|KY$
KZT = tenge kazachskie
LAK = kip laotański|₭|0
LBP = funt libański|LB£|0
LKR = rupia lankijska|SLRs
LRD = dolar liberyjski|L$
LSL = loti Lesoto
LSM = LSM|||1
LTL = lit litewski|Lt
LTT = talon litewski|||1
LUC = LUC
LUF = frank luksemburski||0|1
LUL = LUL
LVL = łat łotewski|Ls
LVR = rubel łotewski|||1
LYD = dinar libijski|LD|3
MAD = dirham marokański
MAF = frank marokański|||1
MDL = lej mołdawski
MGA = ariar malgaski||0
MGF = frank malgaski||0|1
MKD = denar macedoński
MLF = frank malijski|||1
MMK = kyat Myanmar||0
MNT = tugrik mongolski|₮|0
MOP = pataka Macao|MOP$
MRO = ouguiya mauterańska|UM|0
MTL = lira maltańska|Lm||1
MTP = funt maltański|MT£||1
MUR = rupia Mauritius|MURs|0
MVR = rufiyaa malediwska
MWK = kwacha malawska
MXN = peso meksykańskie
MXP = peso srebrne meksykańskie (1861-1992)|MX$||1
MXV = MXV
MYR = ringgit malezyjski|RM
MZE = escudo mozambickie|||1
MZM = metical Mozambik|Mt||1
MZN = metical Mozambiku|MTn
NAD = dolar namibijski|N$
NGN = naira nigeryjska|₦
NIC = cordoba nikaraguańska|||1
NIO = cordoba oro nikaraguańska|C$
NLG = gulden holenderski |fl||1
NOK = korona norweska|Nkr
NPR = rupia nepalska|NPRs
NZD = dolar nowozelandzki|NZ$
OMR = rial Omanu||3
PAB = balboa panamski|B/.
PEI = inti peruwiański|I/.||1
PEN = nowy sol peruwiański|S/.
PES = sol peruwiański|||1
PGK = kina Papua Nowa Gwinea
PHP = peso filipińskie|₱
PKR = rupia pakistańska|PKRs|0
PLN = złoty polski|zł
PLZ = złoty polski (1950-1995)|||1
PTE = escudo portugalskie|Esc||1
PYG = guarani paragwajskie|₲|0
QAR = rial katarski|QR
RHD = dolar rodezyjski|RH$||1
ROL = lej rumuński|||1
RON = nowa leja rumuńska
RSD = dinar serbski|din.|0
RUB = rubel rosyjski
RUR = rubel rosyjski (1991-1998)|||1
RWF = frank ruandyjski||0
SAR = rial saudyjski|SR
SBD = dolar Wysp Salomona|SI$
SCR = rupia seszelska|SRe
SDD = dinar sudański|LSd||1
SDG = funt sudański
SDP = stary funt sudański|||1
SEK = korona szwedzka|Skr
SGD = dolar singapurski|S$
SHP = funt Wyspy Świętej Heleny|SH£
SIT = tolar słoweński|||1
SKK = korona słowacka|Sk||1
SLL = leone Sierra Leone|Le|0
SOS = szyling somalijski|Ssh|0
SRD = dolar surinamski|SR$
SRG = gulden surinamski|Sf||1
STD = dobra Wysp Świętego Tomasza i Książęcej|Db|0
SUR = rubel radziecki|||1
SVC = colon salwadorski|SV₡||1
SYP = funt syryjski|SY£|0
SZL = lilangeni Suazi
THB = baht tajski|฿
TJR = rubel tadżycki|||1
TJS = somoni tadżyckie
TMM = manat turkmeński||0|1
TND = dinar tunezyjski|DT|3
TOP = paʻanga Tonga|T$
TPE = escudo timorskie|||1
TRL = lir turecki||0|1
TRY = nowa lira turecka|TL
TTD = dolar Trynidadu i Tobago|TT$
TWD = nowy dolar tajwański|NT$
TZS = szyling tanzański|TSh|0
UAH = hrywna ukraińska|₴
UAK = karbowaniec ukraiński|||1
UGS = szyling ugandyjski (1966-1987)|||1
UGX = szyling ugandyjski|USh|0
USD = dolar amerykański |US$
USN = USN
USS = USS
UYI = UYI
UYP = peso urugwajskie (1975-1993)|||1
UYU = peso urugwajskie|$U
UZS = som uzbecki||0
VEB = boliwar wenezuelski|||1
VEF = boliwar fuerte|Bs.F.
VND = dong wietnamski|₫|0
VUV = vatu Vanuatu|VT|0
WST = tala samoańska|WS$
XAF = frank CFA BEAC|FCFA|0
XAG = srebro
XAU = złoto
XBA = XBA
XBB = XBB
XBC = XBC
XBD = XBD
XCD = dolar wschodniokaraibski|EC$
XDR = specjalne prawa ciągnienia
XEU = ECU
XFO = frank złoty francuski
XFU = UIC-frank francuski
XOF = frank CFA|CFA|0
XPD = pallad
XPF = frank CFP|CFPF|0
XPT = platyna
XRE = XRE
XTS = XTS
XXX = nieznana/nieprawidłowa waluta
YDD = dinar jemeński|||1
YER = rial jemeński|YR|0
YUD = YUD|||1
YUM = nowy dinar jugosławiański|||1
YUN = dinar jugosławiański wymienny|||1
ZAL = rand południowoafrykański (finansowy)
ZAR = rand południowoafrykański|R
ZMK = kwacha zambijska|ZK|0
ZRN = nowy zair zairski|NZ||1
ZRZ = zair zairski|||1
ZWD = dolar Zimbabwe|Z$|0|1
