# 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=sq
AED = Dirhami i Emirateve të Bashkuara Arabe
AFN = Afgani afgan||0
ALL = Leku shqiptar|Lekë|0
AMD = Drami armen||0
ANG = Gilderi antilian holandez
AOA = Kuanza angole
ARS = Peso argjentinase
AUD = Dollar australian|$
AWG = Florin aruban
AZN = Manata azere
BAM = Marka e Bosnjë-Hercegovinës [e shkëmbyeshme]
BBD = Dollar barbadian
BDT = Takë e Bangladeshit|৳
BGN = Levi bullgar
BHD = Dinar i Bahreinit||3
BIF = Franga burundiane||0
BMD = Dollar bermude|$
BND = Dollar i Bruneit
BOB = Boliviani bolivian
BRL = Real brazilian|R$
BSD = Dollar bahamasi|$
BTN = Ngultrum butanez
BWP = Pula botsvane
BYR = Rubla bjelloruse||0
BZD = Dollar Belize|$
CAD = Dollari kanadez|CA$
CDF = Franga kongole
CHF = Franga zvicerane
CLP = Peso kiliane|$|0
CNY = Juani kinez|¥
COP = Peso kolumbiane||0
CRC = Koloni kostarikan||0
CUC = Peso kubane e shkëmbyeshme
CUP = Peso kubane|$
CVE = Eskudo e Kepit të Gjelbër
CZK = Koruna e Republikës Çeke
DJF = Franga xhibutiane||0
DKK = Koronë daneze
DOP = Peso dominikane|$
DZD = Dinar algjerian
EGP = Stërlina egjiptiane
ERN = Nakfa e Eritresë
ETB = Bira etiopase
EUR = Euro|€
FJD = Dollar i Fixhit
FKP = Stërlina e Ishujve Folkland
GBP = Sterlina britanike|£
GEL = Lari gjeorgjian
GHS = Sejda ganeze
GIP = Sterlina e Gjibraltarit|£
GMD = Dalasi gambian
GNF = Franga guinease||0
GTQ = Kuecali i Guatemalës
GYD = Dollar guajanez||0
HKD = Dollar i Hong Kongut|$
HNL = Lempira hondurase
HRK = Kuna kroate
HTG = Gurd haitian
HUF = Forinta hungareze||0
IDR = Rupi indoneziane||0
ILS = Shekeli izrealit|₪
INR = Rupi indiane|₹
IQD = Dinar irakian||0
IRR = Rial iranian||0
ISK = Krona islandeze||0
JMD = Dollar xhamajkan
JOD = Dinar jordanez||3
JPY = Jen japonez|¥|0
KES = Shilinga keniane
KGS = Soma kirgize
KHR = Rial kamboxhian
KMF = Franga komore||0
KPW = Uoni i Koresë së Veriut||0
KRW = Uoni i Koresë së Jugut|₩|0
KWD = Dinar kuvajtian||3
KYD = Dollar i Ishujve Kajman|$
KZT = Tenga kazake|₸
LAK = Kipa e Laosit||0
LBP = Sterlina libaneze||0
LKR = Rupi e Sri Lankës
LRD = Dollar liberian
LTL = Lita lituaneze
LVL = Lata letoneze|||1
LYD = Dinar libian||3
MAD = Dirham maroken
MDL = Leu moldav
MGA = Arieri malagas||0
MKD = Denar maqedonas
MMK = Kiatë e Mianmarit||0
MNT = Tugrika mongole||0
MOP = Patakë e Makaos
MRO = Ugija mauritane||0
MUR = Rupia mauritiane||0
MVR = Rufiu i Maldivit
MWK = Kuaça malaviane
MXN = Peso meksikane|$
MYR = Ringit malajzian
MZN = Metikali i Mozambikut
NAD = Dollar i Namibisë|$
NGN = Naira nigeriane
NIO = Kordoba nikaraguane
NOK = Krona norvegjeze
NPR = Rupi nepaleze
NZD = Dollar i Zelandës së Re|$
OMR = Riali i Omanit||3
PAB = Balboa panameze
PEN = Sola nuevo-peruane
PGK = Kina e Papua-Guineas së Re
PHP = Peso filipinase
PKR = Rupi pakistaneze||0
PLN = Zllota polake
PYG = Guaran paraguaian|₲|0
QAR = Rial i Katarit
RON = Leu rumun
RSD = Dinar serb||0
RUB = Rubla ruse
RWF = Franga ruandeze||0
SAR = Rial saudit
SBD = Dollar i Ishujve Solomon|$
SCR = Rupia e Sejshellzave
SDG = Stërlina sudaneze
SEK = Korona suedeze
SGD = Dollar i Singaporit|$
SHP = Stërlina e Ishullit të Shën Helenës
SLL = Leoni i Sierra Leones||0
SOS = Shilinga somaleze||0
SRD = Dollar surinamez
SSP = Stërlina e Sudanit të Jugut|£
STD = Dobra e Sao Tomes dhe Prinsipes||0
SYP = Sterlina siriane||0
SZL = Lilangeni i Svazilandit
THB = Bata tajlandeze|฿
TJS = Somona taxhike
TMT = Manata turkmene
TND = Dinar tunizian||3
TOP = Panga tongane
TRY = Lirë turke
TTD = Dollar i Trinidadit dhe Tobagos|$
TWD = Dollar tajvanez|NT$
TZS = Shilinga e Tanzanisë||0
UAH = Rivnia ukrainase|₴
UGX = Shilinga ugandeze||0
USD = Dollari amerikan|$
UYU = Peso uruguaiane
UZS = Soma uzbeke||0
VEF = Bolivar venezuelian
VND = Dongë vietnameze|₫|0
VUV = Vatuja e Vanuatusë||0
WST = Tala samoane
XAF = Franga kamerunase|FCFA|0
XCD = Dollar i Karaibeve Lindore|EC$
XOF = Franga e Bregut të Fildishtë|CFA|0
XPF = Franga franceze e Polinezisë|CFPF|0
XXX = Valutë e panjohur|||1
YER = Rial i Jemenit||0
ZAR = Randa e Afrikës së Jugut
ZMW = Kuaça e Zambikut
