[Pkg-mozext-commits] [tabmixplus] 02/06: Imported Upstream version 0.4.2.3~160319a1

David Prévot taffit at moszumanska.debian.org
Fri Mar 25 21:07:59 UTC 2016


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository tabmixplus.

commit 415d8350a9dbe2c69912009cd2b706843368851a
Author: David Prévot <david at tilapin.org>
Date:   Fri Mar 25 16:53:30 2016 -0400

    Imported Upstream version 0.4.2.3~160319a1
---
 META-INF/manifest.mf                           | 419 ++++++++++++++++---------
 META-INF/mozilla.rsa                           | Bin 4196 -> 4197 bytes
 META-INF/mozilla.sf                            |   4 +-
 chrome.manifest                                |  15 +-
 chrome/content/changecode.js                   |  11 +
 chrome/content/click/click.js                  |  60 ++--
 chrome/content/flst/lasttab.js                 |  15 +-
 chrome/content/links/contentLinks.js           |   3 +-
 chrome/content/links/links.xul                 |   3 -
 chrome/content/links/removeBlankTab.js         |  29 +-
 chrome/content/links/setup.js                  |  10 -
 chrome/content/links/text_link.css             |   3 -
 chrome/content/links/text_link.xul             |  23 --
 chrome/content/minit/minit.js                  |  37 +--
 chrome/content/minit/tabView.js                |   5 +-
 chrome/content/minit/tablib.js                 | 154 +++------
 chrome/content/overlay/browsr.css              |   5 -
 chrome/content/overlay/tabContextMenu.xul      |   8 +-
 chrome/content/places/places.js                |   4 +-
 chrome/content/preferences/appearance.js       |   2 +-
 chrome/content/preferences/menu.js             |  13 +-
 chrome/content/preferences/menu.xul            |   2 +-
 chrome/content/preferences/preferences.js      |   5 +-
 chrome/content/preferences/session.js          |   6 -
 chrome/content/preferences/session.xul         |   2 -
 chrome/content/session/session.js              | 116 +------
 chrome/content/session/sessionStore.js         |  70 +----
 chrome/content/tab/tab.js                      |  40 ++-
 chrome/content/tab/text.xml                    |  30 --
 chrome/content/tabmix.js                       |  93 ++----
 chrome/content/utils.js                        |  14 +-
 chrome/locale/ar/misc.dtd                      |  17 +
 chrome/locale/ar/pref-appearance.dtd           |  20 ++
 chrome/locale/ar/pref-filetype.dtd             |   5 +
 chrome/locale/ar/pref-tabmix.dtd               | 312 ++++++++++++++++++
 chrome/locale/ar/session-manager.properties    | 122 +++++++
 chrome/locale/{en-US => ar}/tabmix.dtd         | 116 ++++---
 chrome/locale/ar/tabmix.properties             |  49 +++
 chrome/locale/bg-BG/tabmix.dtd                 |   2 -
 chrome/locale/ca/tabmix.dtd                    |   2 -
 chrome/locale/cs-CZ/tabmix.dtd                 |   2 -
 chrome/locale/da/tabmix.dtd                    |   2 -
 chrome/locale/de/tabmix.dtd                    |   2 -
 chrome/locale/el/tabmix.dtd                    |   2 -
 chrome/locale/en-US/tabmix.dtd                 |   2 -
 chrome/locale/es-ES/tabmix.dtd                 |   2 -
 chrome/locale/et-EE/tabmix.dtd                 |   2 -
 chrome/locale/eu/misc.dtd                      |  17 +
 chrome/locale/eu/pref-appearance.dtd           |  20 ++
 chrome/locale/eu/pref-filetype.dtd             |   5 +
 chrome/locale/eu/pref-tabmix.dtd               | 312 ++++++++++++++++++
 chrome/locale/eu/session-manager.properties    | 122 +++++++
 chrome/locale/eu/tabmix.dtd                    | 131 ++++++++
 chrome/locale/eu/tabmix.properties             |  49 +++
 chrome/locale/fa-IR/tabmix.dtd                 |   2 -
 chrome/locale/fi/misc.dtd                      |  17 +
 chrome/locale/fi/pref-appearance.dtd           |  20 ++
 chrome/locale/fi/pref-filetype.dtd             |   5 +
 chrome/locale/fi/pref-tabmix.dtd               | 312 ++++++++++++++++++
 chrome/locale/fi/session-manager.properties    | 122 +++++++
 chrome/locale/{en-US => fi}/tabmix.dtd         |  94 +++---
 chrome/locale/fi/tabmix.properties             |  49 +++
 chrome/locale/fr/tabmix.dtd                    |   2 -
 chrome/locale/he-IL/tabmix.dtd                 |   2 -
 chrome/locale/hr-HR/tabmix.dtd                 |   2 -
 chrome/locale/hu-HU/tabmix.dtd                 |   2 -
 chrome/locale/it/pref-tabmix.dtd               |   2 +
 chrome/locale/it/tabmix.dtd                    |   2 -
 chrome/locale/ja/tabmix.dtd                    |   2 -
 chrome/locale/ko-KR/tabmix.dtd                 |   2 -
 chrome/locale/lv-LV/misc.dtd                   |  17 +
 chrome/locale/lv-LV/pref-appearance.dtd        |  20 ++
 chrome/locale/lv-LV/pref-filetype.dtd          |   5 +
 chrome/locale/lv-LV/pref-tabmix.dtd            | 312 ++++++++++++++++++
 chrome/locale/lv-LV/session-manager.properties | 122 +++++++
 chrome/locale/lv-LV/tabmix.dtd                 | 131 ++++++++
 chrome/locale/lv-LV/tabmix.properties          |  49 +++
 chrome/locale/nl/tabmix.dtd                    |   2 -
 chrome/locale/pl/tabmix.dtd                    |   2 -
 chrome/locale/pt-BR/tabmix.dtd                 |   2 -
 chrome/locale/pt-PT/tabmix.dtd                 |   2 -
 chrome/locale/ro/tabmix.dtd                    |   2 -
 chrome/locale/ru-RU/session-manager.properties |  20 +-
 chrome/locale/ru-RU/tabmix.dtd                 |   6 +-
 chrome/locale/sk-SK/tabmix.dtd                 |   2 -
 chrome/locale/sr/tabmix.dtd                    |   2 -
 chrome/locale/sv-SE/tabmix.dtd                 |   2 -
 chrome/locale/tr/tabmix.dtd                    |   2 -
 chrome/locale/uk-UA/tabmix.dtd                 |   2 -
 chrome/locale/vi/tabmix.dtd                    |   2 -
 chrome/locale/zh-CN/tabmix.dtd                 |   2 -
 chrome/locale/zh-TW/tabmix.dtd                 |   2 -
 chrome/skin/tab.css                            |   6 +-
 install.rdf                                    |   2 +-
 modules/ContentClick.jsm                       |  16 +-
 modules/MergeWindows.jsm                       |  18 +-
 modules/Services.jsm                           |  27 +-
 modules/Shortcuts.jsm                          |  15 +-
 modules/SingleWindowModeUtils.jsm              |  22 +-
 modules/extensions/TabGroupsManager.jsm        |   2 -
 modules/log.jsm                                |  10 +
 101 files changed, 3021 insertions(+), 958 deletions(-)

diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
index fc42ccf..861d679 100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@ -2,13 +2,13 @@ Manifest-Version: 1.0
 
 Name: install.rdf
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: lYz9hbbCIgVbi6w55a4vZQ==
-SHA1-Digest: ez9sqExH2eXLoMoDEZFvd4e5B2k=
+MD5-Digest: MkERX021fz/gShvnP444cQ==
+SHA1-Digest: BYbEW61uLawQ6BIWbh0ZQvYzS10=
 
 Name: chrome.manifest
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3XbLzxYhhhtlcXmFCoOxWA==
-SHA1-Digest: c2RjuuR5sO1Zkf1tUD4mNNZFT74=
+MD5-Digest: W8GfyBu8PCcwhlX9QoCyTg==
+SHA1-Digest: 8g0l0acmOVSs2PlQBCmAbBL/9Os=
 
 Name: icon.png
 Digest-Algorithms: MD5 SHA1
@@ -27,8 +27,8 @@ SHA1-Digest: wrWOq6BcK6feX+a7Gge2ScBfrvA=
 
 Name: chrome/content/changecode.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: mzwwKmIy/IHQEF4Iyr889w==
-SHA1-Digest: jdbuOdt8Gb6/i8f+aTRBTMuaV/k=
+MD5-Digest: dFzpml1jlHc5W8L6OhnYKg==
+SHA1-Digest: Itda6g73nhrqHAVV7Xit91H66Co=
 
 Name: chrome/content/content.js
 Digest-Algorithms: MD5 SHA1
@@ -37,8 +37,8 @@ SHA1-Digest: JgH48HuRAKyQ9QI+EDtoeSe+LNw=
 
 Name: chrome/content/tabmix.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: WPk/U2MtILL4qkOOYRXxdQ==
-SHA1-Digest: 8ejwX3H0AsBwPRA+YjkXoz57WGM=
+MD5-Digest: pIpE+ESpDB8DFOra9Zkf8A==
+SHA1-Digest: /Onl/birq3Mcqw1s5g7cQ/vi3sA=
 
 Name: chrome/content/tabmix.xul
 Digest-Algorithms: MD5 SHA1
@@ -47,13 +47,13 @@ SHA1-Digest: WC4Zo3WjmwipyGR7nJ6Y5be4TyE=
 
 Name: chrome/content/utils.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: hTFO/TXQ3ztt1gtORfEedQ==
-SHA1-Digest: qT/BY/Ko9JjD1VHUEjnfUMUEdL0=
+MD5-Digest: gSbNE0/DW83t1xbEUzMUAg==
+SHA1-Digest: uhwrTzI9FAO7Vb7tP4tGsuE1Woo=
 
 Name: chrome/content/click/click.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: vtbz9wohgTTojwY4NRAuhw==
-SHA1-Digest: d5eIHD1f0BlEATPwnx7Sm95Ra3M=
+MD5-Digest: Wr4Ah30GNr2mVECIy6BwmA==
+SHA1-Digest: GPubRvGl1LEH9g6wnLXUn2Dl9Lw=
 
 Name: chrome/content/extensions/extensions.js
 Digest-Algorithms: MD5 SHA1
@@ -77,18 +77,18 @@ SHA1-Digest: QC5FWFfxRKv5Ah3Mk4qJw48ZlgI=
 
 Name: chrome/content/flst/lasttab.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: m/Q7vaNBbwTS6IVYznFxWw==
-SHA1-Digest: ADdE4EHsi6JEUIYwqpsk8UKLb5E=
+MD5-Digest: jKhvOQeYR3VzqIpqQhcBdg==
+SHA1-Digest: O9K+33EanFPGWwL2wjI7m6s6ys4=
 
 Name: chrome/content/links/contentLinks.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: XwHRJVhaVqCMVLgdSDF/KQ==
-SHA1-Digest: C4kwta2580u9/mWXI/k67tOJHD0=
+MD5-Digest: 9IwweCBWuIxRHb2pPPgWYQ==
+SHA1-Digest: SzUgPPvrT2/nxPNONj0UKhO/TWg=
 
 Name: chrome/content/links/links.xul
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: sWKXHBlmk7Ye0bRGS7G0NA==
-SHA1-Digest: CY/YuRVKZgVr0TTKLzUz16m6K/M=
+MD5-Digest: ZpJQ4jtezHPyNt6Oz2+q1w==
+SHA1-Digest: yoX7DLFCROZ8+Nt+5DwXDXlDF28=
 
 Name: chrome/content/links/newTab.js
 Digest-Algorithms: MD5 SHA1
@@ -102,8 +102,8 @@ SHA1-Digest: foAQ+atCwMha9RedOG71Mkv/+Ww=
 
 Name: chrome/content/links/removeBlankTab.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: PUC/uQ6fAACPdWOJ5efxpQ==
-SHA1-Digest: C5hZM/wn9YuJHG45nxssBOt+u0k=
+MD5-Digest: g0hCawzvHb/uVJvj0J4y0w==
+SHA1-Digest: q94i2mS8aev2BSj2S22POd0lqH0=
 
 Name: chrome/content/links/removeBlankTab.xul
 Digest-Algorithms: MD5 SHA1
@@ -112,18 +112,8 @@ SHA1-Digest: vbFhd3PAqXDQX+bhbnRqePKsrCE=
 
 Name: chrome/content/links/setup.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: PMjXG6pEDSf8cPYqpUkiYg==
-SHA1-Digest: WR7B9IaO6ILCYIav8Yao6LERCj4=
-
-Name: chrome/content/links/text_link.css
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: Dp6+WHBmH/bXpMMEWrGCZg==
-SHA1-Digest: zRpYEKrJcCDTiOKuLs365RmuhBQ=
-
-Name: chrome/content/links/text_link.xul
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: boDf8znN2BZds4C+SDceKg==
-SHA1-Digest: XDS/E3OqFUl4Yrgm/cCmimlarrc=
+MD5-Digest: c7QYdZz4zxEKpKgdM6bMwQ==
+SHA1-Digest: kKCN29CQYkVPY6P6olm/hOpW0UI=
 
 Name: chrome/content/links/userInterface.js
 Digest-Algorithms: MD5 SHA1
@@ -142,8 +132,8 @@ SHA1-Digest: TEE8UGoirwpmJxC0fi/GdQ4Jt/Y=
 
 Name: chrome/content/minit/minit.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: iY4NdmMjhX4QiNbXcZBJ7g==
-SHA1-Digest: zdriiWmLJr9cQE5zXfxnUCyFZtM=
+MD5-Digest: KkOJGhjq/EvQyH29XlGzgw==
+SHA1-Digest: LXG8hJHphGX0xihieboCxTM5tK8=
 
 Name: chrome/content/minit/renameTab.xul
 Digest-Algorithms: MD5 SHA1
@@ -152,18 +142,18 @@ SHA1-Digest: Xx80yx7tHvPsdU+E4zjnaWxSHR4=
 
 Name: chrome/content/minit/tablib.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: m71kT44V4z7J+25uKbt1Kw==
-SHA1-Digest: OgqvkUsqVGR3NYymoZKHDZyl5Iw=
+MD5-Digest: UWrur/r+gFhqM0KqlHBghw==
+SHA1-Digest: 9dqIETH+mbaS4BcXLWriN6pAXAU=
 
 Name: chrome/content/minit/tabView.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: bSDpKN8qyupc3gMBsSftSw==
-SHA1-Digest: rXnEVSQGd67Ezb3S+gs9xDyj9O4=
+MD5-Digest: GHyiAOTgpldqOCTIgTuiDg==
+SHA1-Digest: UeVtsgv0xKO/t20o3bEmA7v9NKM=
 
 Name: chrome/content/overlay/browsr.css
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: A8bzKKGVawwd+8736zWqrA==
-SHA1-Digest: Ecojp8fUDBqYyxuXczNqHOGupe4=
+MD5-Digest: ZLY8QIH0g79B0VKVo9KHbg==
+SHA1-Digest: HV3/hix8Y0IQPPqnOaSZSioDByA=
 
 Name: chrome/content/overlay/firefox.css
 Digest-Algorithms: MD5 SHA1
@@ -177,8 +167,8 @@ SHA1-Digest: mUscRoPauCeD6+bNGdYSIRr2vmM=
 
 Name: chrome/content/overlay/tabContextMenu.xul
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: i5UXZSt4kCgiyR1edCkxxA==
-SHA1-Digest: bfDQjkqOtlVmNMGh9b7ouuSMYBc=
+MD5-Digest: nmPKL7VrTQzPNKyUbLuMsw==
+SHA1-Digest: kmmk0fz9dc9UFHqRcCgefDyHSgU=
 
 Name: chrome/content/overlay/tabstoolbar.xul
 Digest-Algorithms: MD5 SHA1
@@ -192,8 +182,8 @@ SHA1-Digest: EMkKp+FCu75LoR0gdTn1Aia6N6w=
 
 Name: chrome/content/places/places.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: HXvTh7Fu+8DbfZWiSqC8Qg==
-SHA1-Digest: B7PPJRfu+g8vZIeJt05s6ilz7yw=
+MD5-Digest: MfJEtJd0aLzUvFHsJNOoxw==
+SHA1-Digest: 7IgHR60pw9enfOHJ1toh77MjciY=
 
 Name: chrome/content/places/places.xul
 Digest-Algorithms: MD5 SHA1
@@ -202,8 +192,8 @@ SHA1-Digest: qyhy6qeWeszXRe2D+1PHJn3ScK0=
 
 Name: chrome/content/preferences/appearance.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4F35UlfecG9Y2GRFeORnHA==
-SHA1-Digest: tklufzFeTp7qouySw5RqfdxmUmw=
+MD5-Digest: fsrL1f8fbw37ZstbvMjGMQ==
+SHA1-Digest: mdwTIs3IQ8lzaXoLMtdratRME/A=
 
 Name: chrome/content/preferences/appearance.xul
 Digest-Algorithms: MD5 SHA1
@@ -242,13 +232,13 @@ SHA1-Digest: 1HMOx2qZnzoyH63fbz6F0/Qs7lM=
 
 Name: chrome/content/preferences/menu.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: UUe5WYxiZ5g+riwxXmtHSQ==
-SHA1-Digest: TjvFxN/NIxdBoQJkqSO2n5A5KW0=
+MD5-Digest: YkfYPAWqUh8/eNZcZXrwYg==
+SHA1-Digest: 7CVcIaWjEwhoaXiQFGRNgXzbs60=
 
 Name: chrome/content/preferences/menu.xul
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: YlTR/X2mxJk3qjo/bYDJaw==
-SHA1-Digest: zrJTQKhU/Ka0hjuG8ltexwKDE7s=
+MD5-Digest: RSP1QWRFchu/mgHQT4HDnw==
+SHA1-Digest: apJIyEMp9yPCthpLDcq16CaHQW4=
 
 Name: chrome/content/preferences/mouse.js
 Digest-Algorithms: MD5 SHA1
@@ -262,8 +252,8 @@ SHA1-Digest: 0cO2A3qfQk9Jil4RR6Gm/HUJ5v8=
 
 Name: chrome/content/preferences/preferences.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: l1IvYyjdbBrY1+amqOm3GA==
-SHA1-Digest: RLXwAR4CAGAgHHZGRMxRc5Dd3P4=
+MD5-Digest: Fzruvnz33Q20fI9/OzzrTQ==
+SHA1-Digest: RHToUGSghQ1UhZuMXT5JwcVoaNI=
 
 Name: chrome/content/preferences/preferences.xul
 Digest-Algorithms: MD5 SHA1
@@ -272,13 +262,13 @@ SHA1-Digest: UU4H4786wHY752kNfviD0P/HoTw=
 
 Name: chrome/content/preferences/session.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: tBJj7GIR4OlaFw04g2LiZA==
-SHA1-Digest: phuL5bHynDLwYrGgFmZMsqsP/Ho=
+MD5-Digest: Ej7SccfAL307UVaraoA1Ag==
+SHA1-Digest: 79aIHGFyBqioo3Y9CVV6PPHvdx4=
 
 Name: chrome/content/preferences/session.xul
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: p8V6Ls+QLHuJKD6rejBUmQ==
-SHA1-Digest: IiN8DiOXXQXyXBN20ZqrVSSgDGE=
+MD5-Digest: rZdMU4LTvI+uCW9Q7Xsn1A==
+SHA1-Digest: TYlXmVNQIKo/8IH1pqRGMklJa3M=
 
 Name: chrome/content/preferences/shortcuts.js
 Digest-Algorithms: MD5 SHA1
@@ -382,13 +372,13 @@ SHA1-Digest: M2ckwKzYlEi8ER4twA+ouwkzRtI=
 
 Name: chrome/content/session/session.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: i0v67ZSFBAyrLYkBf8HPNg==
-SHA1-Digest: 6Y93ytLW99ELh/+dmrGYIy7kiMs=
+MD5-Digest: vGTswnyZ52tKIwX2301yoA==
+SHA1-Digest: 7hzpYxnGpbLRAD+2OoHh15StxLo=
 
 Name: chrome/content/session/sessionStore.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: hsQM2iV23vhHpL0rtpDagQ==
-SHA1-Digest: AcD3lW0tI/zNzq0OKDZ90sR6QfE=
+MD5-Digest: 5VC1rZE6M6lT0mjipjSq/w==
+SHA1-Digest: 4Qf1SEQO95h1Km50xtpDYmLVjfg=
 
 Name: chrome/content/tab/scrollbox.xml
 Digest-Algorithms: MD5 SHA1
@@ -397,8 +387,8 @@ SHA1-Digest: RoL+FVXKuIvITsyAEUfwe9FITmk=
 
 Name: chrome/content/tab/tab.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: OvqnNSC9a9STsyIkLVLDqQ==
-SHA1-Digest: JzFjNsnokZlxxvKmed0+/hQe1iE=
+MD5-Digest: w7ViBzH5z7eIChDnu/43Hg==
+SHA1-Digest: NXC8q5ihEP07DmsFXHJ0WtpCFUI=
 
 Name: chrome/content/tab/tabbrowser.xml
 Digest-Algorithms: MD5 SHA1
@@ -425,16 +415,46 @@ Digest-Algorithms: MD5 SHA1
 MD5-Digest: 8u9hhGLrI25M1i6j27bs/A==
 SHA1-Digest: 7PU+i8wTg95FSAUjMbliSiraOHI=
 
-Name: chrome/content/tab/text.xml
+Name: chrome/locale/ar/misc.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: j74JFh58WJIp2D+OC6OL4g==
+SHA1-Digest: eymgj/+4dZsBHq2wC8E1VhNHF5U=
+
+Name: chrome/locale/ar/pref-appearance.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2GbKWbKOLYWWI6+iuKR5QA==
+SHA1-Digest: IdRUtGuw5OrrPyROuRQX0XQLc1A=
+
+Name: chrome/locale/ar/pref-filetype.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: Bp8l/5GvYmkTkguJSAf9Ww==
-SHA1-Digest: fMYm1dfoTplphELUksUQ5AQgZZI=
+MD5-Digest: m954+l5YpmOpxWeH5aalqg==
+SHA1-Digest: OrzflFqE5Yp2y2otYX3VPRf282s=
+
+Name: chrome/locale/ar/pref-tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7WLOQe4u++mkOw6/Yum+cA==
+SHA1-Digest: idR3vMoRA5R+krk2n7JEDLUjzLs=
+
+Name: chrome/locale/ar/session-manager.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 07KVWRG7OUroZoQHAGkykg==
+SHA1-Digest: qaL7vBeyR5J8P8pTRIUxNV4cSpE=
 
 Name: chrome/locale/ar/shortcuts.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: Aa3Chf+OpPNwhRUsgEsMYw==
 SHA1-Digest: bG35mWS6NhnkNHPZrB25GG2qVR4=
 
+Name: chrome/locale/ar/tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fwvy7dyKYFtzVEPA59xSiA==
+SHA1-Digest: AEEdiB62O5G9+dLNiJAMe01l84Y=
+
+Name: chrome/locale/ar/tabmix.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vWZCTdASe8JO2sx8oU6OHw==
+SHA1-Digest: B6muTF/5rjYmmdjhA7wdZxGBsyc=
+
 Name: chrome/locale/bg-BG/misc.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: Cp2djCBHZZ+Hm5Uag4JwaQ==
@@ -467,8 +487,8 @@ SHA1-Digest: +T9+Rr8Igz6/Isg63vwxHHpYDB4=
 
 Name: chrome/locale/bg-BG/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: SGVRFzNAfr8x8BbgUpNUgQ==
-SHA1-Digest: lVTNDyVEe7PkXQ3vNARCNmfcirk=
+MD5-Digest: HNBKdNB6v23HwLwAh/ZPpw==
+SHA1-Digest: 9xog2xcffpfQaU7BHEhiDyy9k/k=
 
 Name: chrome/locale/bg-BG/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -507,8 +527,8 @@ SHA1-Digest: 3K84oqog+/Amq5Vx7X9ao6dgkh0=
 
 Name: chrome/locale/ca/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: Gfh/S6l3YulMPtyIRJp4Gw==
-SHA1-Digest: +tEE2Ds8IQj/VDSeqld+x7JHoak=
+MD5-Digest: LubBhctOloTmV8CAZOa2Qg==
+SHA1-Digest: oYprq0qwgpKA/bSByS/zJ8lIaMk=
 
 Name: chrome/locale/ca/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -547,8 +567,8 @@ SHA1-Digest: 2Sn10uLrDK0YRQUbp+bNJcoeGG8=
 
 Name: chrome/locale/cs-CZ/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5f34wL5XpAYrhr4qBVOrhw==
-SHA1-Digest: zXa0WLmikqeHPM+GJWkiN5glQLw=
+MD5-Digest: dZhPax1gb4wBpXLA3G6dmA==
+SHA1-Digest: pP+gRJ3Vn468yuxJ+CiRxDZNYMI=
 
 Name: chrome/locale/cs-CZ/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -587,8 +607,8 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/da/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 8DFPGarDMjxuLeJpVvNOFQ==
-SHA1-Digest: r62/1JWw/4URGfb0ca17UPAZaQ4=
+MD5-Digest: KbeCZ71bJ8MC6HXD4xRC7w==
+SHA1-Digest: OkIPjI3Qvxm5vQaspAqVNUtXmDM=
 
 Name: chrome/locale/da/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -627,8 +647,8 @@ SHA1-Digest: ry1EpIIMn2bSqp6ZgVwQ5EyeUQE=
 
 Name: chrome/locale/de/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: HJCoiGvuwKxcxh8oSpNBFw==
-SHA1-Digest: o9kPg4bAYwUQvTxrFPaYXg84yns=
+MD5-Digest: 85T+uNec34IxzvE06Ym7rA==
+SHA1-Digest: op1zndgmccpp7Ar1tjJjPE47mMQ=
 
 Name: chrome/locale/de/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -667,8 +687,8 @@ SHA1-Digest: 7FDAoCfIwZe01gHaQ3b69YKAnYU=
 
 Name: chrome/locale/el/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: UUYPgQSLOlznBPdAKHYltQ==
-SHA1-Digest: 4VS+VaovNC8Vm45V5sTu/FUEqA4=
+MD5-Digest: vU2wexDK+lj+kWHIvYvBMQ==
+SHA1-Digest: bI9vJrCi5x9wdZ/v73MV2MVSU6Y=
 
 Name: chrome/locale/el/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -707,8 +727,8 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/en-US/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2SZ1tZK/Pet0aZU52yeaGw==
-SHA1-Digest: qP+fjAjZdorVhOpyXnxLoRo3kUs=
+MD5-Digest: juttTPyGiOrRGpfK11voZw==
+SHA1-Digest: SUcu8gFaVEeE9np0ggsRpNFjtGQ=
 
 Name: chrome/locale/en-US/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -747,8 +767,8 @@ SHA1-Digest: oCFOC0IC5SEFMSuee+w0XHvf5x8=
 
 Name: chrome/locale/es-ES/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5JPnjabHj2HXAthNQFB6LA==
-SHA1-Digest: rbxipMgR4RbEco01uDvzT7yJRWw=
+MD5-Digest: g5fWXTyNCzHZSicrGN7e1g==
+SHA1-Digest: gYdmMayIZXN1PPvuEOqIPrMrATo=
 
 Name: chrome/locale/es-ES/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -787,19 +807,54 @@ SHA1-Digest: njzZHkGqJwoksPNaM4pDzSlYoaQ=
 
 Name: chrome/locale/et-EE/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: QyWqPXqmAgSMRKuU64rLxQ==
-SHA1-Digest: EUdsfKPbHaVfwG5mlDiB6MnxxCI=
+MD5-Digest: BWCjRaZU4k226TriF9AozA==
+SHA1-Digest: F22O9D4kwPG+k+WSuv6jgButk0Q=
 
 Name: chrome/locale/et-EE/tabmix.properties
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: M0DHPxwC73a4O9Kn1YbaPw==
 SHA1-Digest: P6U0T325ho+vx8I5jK3SqV7UoxQ=
 
+Name: chrome/locale/eu/misc.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nAWgi8X9+7oCzYWTmqslvA==
+SHA1-Digest: AdgG4ve8aPDsIQ0duSp0sJ1iQQY=
+
+Name: chrome/locale/eu/pref-appearance.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: eagG2xom6QrWc2v8iAILaw==
+SHA1-Digest: BGW/ss/2UwIBdmigbx3xJO01eRA=
+
+Name: chrome/locale/eu/pref-filetype.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mw524xhitYQmXRSqFvWoLw==
+SHA1-Digest: ebFQ3/s1BisYzAaob6oECeJ81pU=
+
+Name: chrome/locale/eu/pref-tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cbwU3+nzxMMiD3zf/OoGtA==
+SHA1-Digest: u2np2dOSkkjKS1BGRxjkS4Wa3uc=
+
+Name: chrome/locale/eu/session-manager.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 07KVWRG7OUroZoQHAGkykg==
+SHA1-Digest: qaL7vBeyR5J8P8pTRIUxNV4cSpE=
+
 Name: chrome/locale/eu/shortcuts.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: lM0/HAe4PxjXqcVcKf0w9A==
 SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
+Name: chrome/locale/eu/tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hXCD6/YLtqsOvjFliJDqZA==
+SHA1-Digest: +td89ZGGlpxWM3YGvr3ilmYxrEw=
+
+Name: chrome/locale/eu/tabmix.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LLOgMePzwQz5M5RfM9rOyA==
+SHA1-Digest: /9pFq+h/FuVNH4EeEo15lLSXsy8=
+
 Name: chrome/locale/fa-IR/misc.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: sHtk+Aq0kC4HwUu8DlmhuA==
@@ -832,19 +887,54 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/fa-IR/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: +7XNNDG07bUqvmlstZhcjg==
-SHA1-Digest: FJorZvEpRVujo4DDv1vrNwJG9Fk=
+MD5-Digest: siE+sgmsPH0O9sLdX85GCw==
+SHA1-Digest: VxXlEdvg74oNry7V1s3RNptI6Uw=
 
 Name: chrome/locale/fa-IR/tabmix.properties
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: oxeMZl4NSRW1lJCecL9ckA==
 SHA1-Digest: QfmaRJOgfbM4s/fuS2MPcOoOrrc=
 
+Name: chrome/locale/fi/misc.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uynWgnw4s5v8Op0yozS41Q==
+SHA1-Digest: 7Ij53LI7jLPGqLC0g+lp8QDVqOM=
+
+Name: chrome/locale/fi/pref-appearance.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: A1lFv6DkNZdn6a9a/9taUA==
+SHA1-Digest: ttn47IdGE+a5m844IfVVgzg4MTM=
+
+Name: chrome/locale/fi/pref-filetype.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vV0CE0YnRkJ/jSbIJ80vJw==
+SHA1-Digest: AspnOOW9rlW0AIQ1h/hC9m02wYQ=
+
+Name: chrome/locale/fi/pref-tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: N/ZWSWmNXw7wPb36lgJ7pg==
+SHA1-Digest: 6YT1cLOtKS5/Ug1V2vbz5MmqA6U=
+
+Name: chrome/locale/fi/session-manager.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 07KVWRG7OUroZoQHAGkykg==
+SHA1-Digest: qaL7vBeyR5J8P8pTRIUxNV4cSpE=
+
 Name: chrome/locale/fi/shortcuts.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: lM0/HAe4PxjXqcVcKf0w9A==
 SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
+Name: chrome/locale/fi/tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XHjvU0XsWO0BbJnqIdh+yw==
+SHA1-Digest: N2yUc8xXgJtxONGwS6n6oj6QFb8=
+
+Name: chrome/locale/fi/tabmix.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LLyCdmTtdYHdxIz1bHfDRw==
+SHA1-Digest: KKh7KmhjVK/sUiuBF3OoMenUo+8=
+
 Name: chrome/locale/fr/misc.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: sCW+1aDeo/w0TxPFB1I4aQ==
@@ -877,8 +967,8 @@ SHA1-Digest: SP3k4uSBeJ3sk9lxmm0CLKGX55A=
 
 Name: chrome/locale/fr/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 51Kz3ha1XZoRgrcSIyUrjQ==
-SHA1-Digest: rpBB4pFPx1Yljjyn8nBvRsC9Gos=
+MD5-Digest: hHdbFr0GxYPLXYLJapSg9A==
+SHA1-Digest: IIFRflwN+D8lKW9Nln7kaQ174yY=
 
 Name: chrome/locale/fr/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -917,8 +1007,8 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/he-IL/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: sbv4TeFonrodVr7gu3YXtw==
-SHA1-Digest: uz+VArzlPG9aaT4zdXoegN7IBWU=
+MD5-Digest: WUQo51pFI2QHCfNzeR1Whg==
+SHA1-Digest: 6qJa7NrzinQq82dV0Blrmja/TbA=
 
 Name: chrome/locale/he-IL/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -957,8 +1047,8 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/hr-HR/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: uWVjzecGI4X6IAk0CXJR+Q==
-SHA1-Digest: C/x9r/K2s1lP7C2Wk0mLgmak3n4=
+MD5-Digest: qOccZvx0skYnoClNhqSLxw==
+SHA1-Digest: oa6JJVyDAfZA2NtYSNR4GT43J3E=
 
 Name: chrome/locale/hr-HR/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -997,8 +1087,8 @@ SHA1-Digest: ldZf5i858kD0tiq9IDy8TH3uuk0=
 
 Name: chrome/locale/hu-HU/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: bVksTT0xCAT1ogZD+CW6ng==
-SHA1-Digest: wLA7AjhaKqPrDqZoR/3hx63YZsk=
+MD5-Digest: 37JWEOjVxC90Nc53HG+T2Q==
+SHA1-Digest: U4J1RZgWTPF2dr+EJgvSz4K6ttc=
 
 Name: chrome/locale/hu-HU/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1022,8 +1112,8 @@ SHA1-Digest: xRHOipAzjpLAB5mq9LXB3AYYT5Y=
 
 Name: chrome/locale/it/pref-tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: Y8oH/6OkrMVvaAfNQifhqA==
-SHA1-Digest: ezmxmCKcEOoBK4oI8VCR3fWzd8U=
+MD5-Digest: pUu39z342E+4vAnkbb3SPA==
+SHA1-Digest: j3yyuF7/AAkCwhW6anzRTjbcu8U=
 
 Name: chrome/locale/it/session-manager.properties
 Digest-Algorithms: MD5 SHA1
@@ -1037,8 +1127,8 @@ SHA1-Digest: MQsax29yRDamlEjIZS1lC7F6BLc=
 
 Name: chrome/locale/it/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: M4SqD2GMFDZit8M7Su4qng==
-SHA1-Digest: 6Hb4y19qk7xpkU6TS3qDUdMDTrU=
+MD5-Digest: jhU67crpg9B3l9AyBPyesQ==
+SHA1-Digest: lp3CFblhto705vbNhPTqkf25ef4=
 
 Name: chrome/locale/it/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1077,8 +1167,8 @@ SHA1-Digest: 6efGx5k8hiSTVFjJft00ThS+Pmk=
 
 Name: chrome/locale/ja/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: zTpp0NkgBr7NvYoh88BQCA==
-SHA1-Digest: KnzAtM49tGzxHR+GLfOQ7UsQWQk=
+MD5-Digest: MItuVgfYP/Ba0dAv9JzPxw==
+SHA1-Digest: M7+bJRIN4seqQEcEXsQaFsxiE5g=
 
 Name: chrome/locale/ja/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1117,19 +1207,54 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/ko-KR/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: pA/pPIBsq2YQt81/Ypow2g==
-SHA1-Digest: yi5anQSoTm4NGiJwcwYkubR9Ug8=
+MD5-Digest: /KUot0yo7EsQrrv0YcK2hw==
+SHA1-Digest: xmXW/aghj6mi/l6F3EFSLRDRd2o=
 
 Name: chrome/locale/ko-KR/tabmix.properties
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: hRbmp7yy7SFNJGAf++bm7w==
 SHA1-Digest: u2xQ6CYxIgKMX+/cjnsaAnQw/sc=
 
+Name: chrome/locale/lv-LV/misc.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pKTrXw8ooV4fJEtkqT5uVQ==
+SHA1-Digest: +49Xr0CvwuR3cN7UZIoak4TgzIM=
+
+Name: chrome/locale/lv-LV/pref-appearance.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FPBiz9Wg+q2fEcZPCsu7rA==
+SHA1-Digest: GCxE6KvAn3LvnQ4p4OHM91Yb1lY=
+
+Name: chrome/locale/lv-LV/pref-filetype.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mgmRhpWgCuTYq3Py8PjPJg==
+SHA1-Digest: v4GC3lWzagQ0U+uorGOcRz8V390=
+
+Name: chrome/locale/lv-LV/pref-tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lKAmp6dQSoZg2K1ak9lJtA==
+SHA1-Digest: Kwasf/xZ2DcbpSLsdqxqroZX0WM=
+
+Name: chrome/locale/lv-LV/session-manager.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: c68fOUd3sHS7Rvi35RFE0w==
+SHA1-Digest: x+QLO9XsDKOs1SZKMdF7Z31D3O8=
+
 Name: chrome/locale/lv-LV/shortcuts.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: KyyTMzr/h5BK3HtMja7UOA==
 SHA1-Digest: ZU4nsP47ilOSAEKucWljud12ExQ=
 
+Name: chrome/locale/lv-LV/tabmix.dtd
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: z7oK9Tt1Co0HNwbykbbj8Q==
+SHA1-Digest: IHrLzBLN1AsYnjRh0fVFTuCcwfw=
+
+Name: chrome/locale/lv-LV/tabmix.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vDucMXT46kYP64+fLMaGVg==
+SHA1-Digest: QE4B0/GYhwAwq2fDGoWWtJxmXmY=
+
 Name: chrome/locale/nl/misc.dtd
 Digest-Algorithms: MD5 SHA1
 MD5-Digest: NtNMYuCOucuAQ8eYAeTaNw==
@@ -1162,8 +1287,8 @@ SHA1-Digest: H5waxlqGbRLxBi7pXMe+wy6V0u8=
 
 Name: chrome/locale/nl/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: T4Q/2JA6LqLCAcbPHhATLQ==
-SHA1-Digest: 0UTsZ+8MBi6gA5bYqkhWfpVt1ks=
+MD5-Digest: lnGKYaQol3v+E99E28ztMA==
+SHA1-Digest: cruW6pLvXcLcZFB6SqrQKhf0snY=
 
 Name: chrome/locale/nl/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1202,8 +1327,8 @@ SHA1-Digest: XQWuBrA+/rJwqaO5intHgwkix1E=
 
 Name: chrome/locale/pl/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: HuZiTE1mGwA1PolrbhJWxw==
-SHA1-Digest: rtZCGeP+DCloQ8xPASQCsn/Z4VY=
+MD5-Digest: NRIVBuubPCIgCUi06lfEkQ==
+SHA1-Digest: 90WCl8QswfoXtwINyQ1v+i5hGLI=
 
 Name: chrome/locale/pl/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1242,8 +1367,8 @@ SHA1-Digest: bg0Hh8NKawbjzi7RBm6jsQHPiu8=
 
 Name: chrome/locale/pt-BR/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5/e5YNlSSHV2zTi6wE3MyA==
-SHA1-Digest: oe55+D6IcBR7qELTXkxt/bjYk2s=
+MD5-Digest: uRbAPSj4w7iLyCOpdraFVQ==
+SHA1-Digest: LObUwTwy3pz6UytllI5kCPABiyo=
 
 Name: chrome/locale/pt-BR/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1282,8 +1407,8 @@ SHA1-Digest: szJ9KtkcNu535WNezTj/xZln2hw=
 
 Name: chrome/locale/pt-PT/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: uI0GqTL3WAnZezy973KkRg==
-SHA1-Digest: QXJv6E217agX8QvbzUONqgb0o14=
+MD5-Digest: o+I0RxVMQOzGsVnsRSvhWg==
+SHA1-Digest: LngRIgw8IO58TcjDgfOhpDF7A2Q=
 
 Name: chrome/locale/pt-PT/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1322,8 +1447,8 @@ SHA1-Digest: gOG7e4gEO+3zsINXJOFUBPr/tYM=
 
 Name: chrome/locale/ro/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: +XSo363B8CXbmXimNJKjYQ==
-SHA1-Digest: kYJi06m0u1oKNvpY5GJCDTt4Ox8=
+MD5-Digest: njgNxhyxp4uwQ89pHwzIkw==
+SHA1-Digest: n2ar3PHW45yHpdcldMybuKlnHlI=
 
 Name: chrome/locale/ro/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1352,8 +1477,8 @@ SHA1-Digest: fOFT0PolM9FoQqXUiBrt8YggIWo=
 
 Name: chrome/locale/ru-RU/session-manager.properties
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: xyNz1tt6uMQSQccSusUwWA==
-SHA1-Digest: RiSs8E9F3gdB67I6jDsP8rj+zCQ=
+MD5-Digest: aeSy/ByIB1UdBZR50AxjPQ==
+SHA1-Digest: lB9DqUlyQ6sRldqPuGMDEJZzb6U=
 
 Name: chrome/locale/ru-RU/shortcuts.dtd
 Digest-Algorithms: MD5 SHA1
@@ -1362,8 +1487,8 @@ SHA1-Digest: F6IxD5NxJ8d7wAtilROiYLH2Tq4=
 
 Name: chrome/locale/ru-RU/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: WQGdOVMa/Pttwq2p2ECofQ==
-SHA1-Digest: IIK7UUrYNnDpJxWVFla//WiiCnA=
+MD5-Digest: 2LfD88OTjVHLAKFXVdPm7A==
+SHA1-Digest: 3W7GU8xfCNa20UzoEEtFzpEoFss=
 
 Name: chrome/locale/ru-RU/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1402,8 +1527,8 @@ SHA1-Digest: 6StZOCmnKwVYh8BAR6WmisqpFyQ=
 
 Name: chrome/locale/sk-SK/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: mjhd0baaB1tTUAjUTo7noQ==
-SHA1-Digest: 6KFM5S8abzrWHYPnR64iNSr5unI=
+MD5-Digest: 1vW26Srdi5rtkBKepV5W0Q==
+SHA1-Digest: cb7DP2n3O0FAtMWL34e/QEPvsR0=
 
 Name: chrome/locale/sk-SK/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1442,8 +1567,8 @@ SHA1-Digest: hUiQniZ3ZcCkdQnwmWQ7M/fZoU4=
 
 Name: chrome/locale/sr/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: /cDXl9TnhdXB9xfqD/IG9Q==
-SHA1-Digest: tzmNY2x8GQVQG8FVx5BT3FOpx9I=
+MD5-Digest: tILDYXu+S1t95JuKAJBkAA==
+SHA1-Digest: nFrrZEIdIMplLESmdqpkIprNX44=
 
 Name: chrome/locale/sr/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1482,8 +1607,8 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/sv-SE/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: hf05pi28kJ7zElscKlkbVQ==
-SHA1-Digest: 07K7cuFezyVCRMyhFtGWKpb92ik=
+MD5-Digest: SaTESnoYNyYDtPKh9mAd/w==
+SHA1-Digest: +Lv3BICfrbcnUdxi0MU3Gy+fqWw=
 
 Name: chrome/locale/sv-SE/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1522,8 +1647,8 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/tr/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: Xfl2obifmIqahNR6bN5WEQ==
-SHA1-Digest: PsWOdMPCTfxoac0Cd+ltBm601jo=
+MD5-Digest: f0v/H87co62ZuotzAthFhg==
+SHA1-Digest: /LicQ1Wm/uTFgFH5KVMonAg3PHQ=
 
 Name: chrome/locale/tr/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1562,8 +1687,8 @@ SHA1-Digest: LjvkdzrEUFqR6TBDiGzll2JRpLY=
 
 Name: chrome/locale/uk-UA/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: RhOZgwSnMN/hjsPaPN22jA==
-SHA1-Digest: i+X8lx93gfclqnjEwW5RQQDcQLY=
+MD5-Digest: pMmhAerH/2y8YY/b+nhh4A==
+SHA1-Digest: ti6Y6mXZVPMSHilAyNyyWqRdOeo=
 
 Name: chrome/locale/uk-UA/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1602,8 +1727,8 @@ SHA1-Digest: NkU7ej3A28NkWvKue/M99J6LUFo=
 
 Name: chrome/locale/vi/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: SsPGHCYwE9fIB7I1uRJfzw==
-SHA1-Digest: MsxUi/R5Yxef2t9d3kziEIBn4rs=
+MD5-Digest: UvAFynLnz3pwBJQZOWndAA==
+SHA1-Digest: gWuaqtD54NrdfVxuh3g80hwl3e8=
 
 Name: chrome/locale/vi/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1642,8 +1767,8 @@ SHA1-Digest: ca/qfkEY/uMUROhaopkU+OMu6a8=
 
 Name: chrome/locale/zh-CN/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: Rtpcamg1E2Xrfa/5RGsXVQ==
-SHA1-Digest: CdvvReiUnrIJqrHyOSj7TTAvTQ4=
+MD5-Digest: Ov31stTrcGkr56HHn7QSvg==
+SHA1-Digest: oFX5tGaXQJnDDXludNrgCwbRIQg=
 
 Name: chrome/locale/zh-CN/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1682,8 +1807,8 @@ SHA1-Digest: iZ80t+M3jlK2yI39s28uopy2XIo=
 
 Name: chrome/locale/zh-TW/tabmix.dtd
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 0C+P+6C9uJKI898OhIuO+w==
-SHA1-Digest: kdJ2LG6pDpFaJYD2TUdvjlcYB88=
+MD5-Digest: TGO+7e3Yl84RQ0loY/ZtmA==
+SHA1-Digest: EMM2y7mDM1DWtbolgESmaSAYmpQ=
 
 Name: chrome/locale/zh-TW/tabmix.properties
 Digest-Algorithms: MD5 SHA1
@@ -1777,8 +1902,8 @@ SHA1-Digest: GzuaYO1bGt3dWgl1SnK8NpcJldU=
 
 Name: chrome/skin/tab.css
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: YP3umSWvRhPeTrLFh2VygA==
-SHA1-Digest: 2EY/rMj1Gxo1rdOybJ6Hu9ngJ90=
+MD5-Digest: Lvyma7tvDyyaYU9JPk2GMw==
+SHA1-Digest: e9RvCG8aVx9M7Vlmy8AWSZmmcmw=
 
 Name: chrome/skin/tabslist.png
 Digest-Algorithms: MD5 SHA1
@@ -1907,8 +2032,8 @@ SHA1-Digest: p+oNSLFc8w/VzPfk917ot4VPuec=
 
 Name: modules/ContentClick.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: als0VWexVgfNYXo0XK1q+g==
-SHA1-Digest: 3mvkI+bCpODdncfa8sb1kGZo0Iw=
+MD5-Digest: o7u/Ol51tcpgZMQiPzfO1g==
+SHA1-Digest: DWwmXtu7kMc6cNn6D20vEg/3XuM=
 
 Name: modules/ContextMenu.jsm
 Digest-Algorithms: MD5 SHA1
@@ -1942,13 +2067,13 @@ SHA1-Digest: vxH4QUSj23nIG8h4vJV0xkfzQBQ=
 
 Name: modules/log.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2oJMOVDnmX8Wy7VrlhZ99g==
-SHA1-Digest: l9+IQ4kb2Udo9Ee5q5O8DrifICg=
+MD5-Digest: +KluleeAnpIbx4jWWyd04w==
+SHA1-Digest: 13wpYjttM3ADh+lehaBSkYCf0tI=
 
 Name: modules/MergeWindows.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: wlr60QqDHs1TDxVZrVQ3hQ==
-SHA1-Digest: pbaCRFrhlAM5XIBgVEv9w9GSkjA=
+MD5-Digest: womsImP/rpWkNnFRHCq+xw==
+SHA1-Digest: /FzZyta3y4kxEMZQytDo48e68OQ=
 
 Name: modules/NewTabURL.jsm
 Digest-Algorithms: MD5 SHA1
@@ -1967,18 +2092,18 @@ SHA1-Digest: ayf+UM/PHxKKVLDWiGzYCgZ6Q9M=
 
 Name: modules/Services.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: D68zfI/FxFvFU9NqwUQeBQ==
-SHA1-Digest: q6pRJPURtecVqDzgHgMrvPrh4qE=
+MD5-Digest: 8BllQS3S53t2X72KyHkXbg==
+SHA1-Digest: I+xD2DxcA+CARze1Ai2Z7aFxcys=
 
 Name: modules/Shortcuts.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: sOG0wdJf8FNWVk2TUBmLKA==
-SHA1-Digest: hvBp3PrFN7h9rVcmtLnLOckLqiU=
+MD5-Digest: f0/d3rYSIwJP6fE5UgkGDg==
+SHA1-Digest: umSNMhiwvE4u6098GJtDNrHG8TM=
 
 Name: modules/SingleWindowModeUtils.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: lLtMijm5nq1bNzsnIZSoxA==
-SHA1-Digest: TircZgvVSExP+gEzn9DK55Xpfqc=
+MD5-Digest: lqiaVzym3fC/CAMoFC3LpQ==
+SHA1-Digest: ovUtNtkSlClohN7FJHzSv7Q2XIk=
 
 Name: modules/Slideshow.jsm
 Digest-Algorithms: MD5 SHA1
@@ -2007,8 +2132,8 @@ SHA1-Digest: ZjVF38LAZrLll4MxF/HkFAD8xqQ=
 
 Name: modules/extensions/TabGroupsManager.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 1AfKihl8/vJ2bqGcLG+yLA==
-SHA1-Digest: LsWX6xaJFPgGPZIprRyD19VSDnM=
+MD5-Digest: AQx32MnlBpDBC6rYpGhcEg==
+SHA1-Digest: MmX5Kw8w98YchDzMKkWPfKmWENA=
 
 Name: license.txt
 Digest-Algorithms: MD5 SHA1
diff --git a/META-INF/mozilla.rsa b/META-INF/mozilla.rsa
index ca162bd..7e15c91 100644
Binary files a/META-INF/mozilla.rsa and b/META-INF/mozilla.rsa differ
diff --git a/META-INF/mozilla.sf b/META-INF/mozilla.sf
index a5a95c4..1daf161 100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@ -1,4 +1,4 @@
 Signature-Version: 1.0
-MD5-Digest-Manifest: lE/fS6WV7s9GiwhZUw8/rg==
-SHA1-Digest-Manifest: cMAGlWYRfx0xtmEqANTFH17hV20=
+MD5-Digest-Manifest: CU/ajd7dNlEY0zN+tTzXBA==
+SHA1-Digest-Manifest: iIOUB082slY6ACxLphM20gYPJoU=
 
diff --git a/chrome.manifest b/chrome.manifest
index cd39912..51783b8 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -1,6 +1,7 @@
 content   tabmixplus                 chrome/content/
 resource  tabmixplus                 modules/
 
+locale    tabmixplus   ar            chrome/locale/ar/
 locale    tabmixplus   bg            chrome/locale/bg-BG/
 locale    tabmixplus   ca            chrome/locale/ca/
 locale    tabmixplus   cs            chrome/locale/cs-CZ/
@@ -10,7 +11,9 @@ locale    tabmixplus   el            chrome/locale/el/
 locale    tabmixplus   en-US         chrome/locale/en-US/
 locale    tabmixplus   es-ES         chrome/locale/es-ES/
 locale    tabmixplus   et            chrome/locale/et-EE/
+locale    tabmixplus   eu            chrome/locale/eu/
 locale    tabmixplus   fa            chrome/locale/fa-IR/
+locale    tabmixplus   fi            chrome/locale/fi/
 locale    tabmixplus   fr            chrome/locale/fr/
 locale    tabmixplus   he            chrome/locale/he-IL/
 locale    tabmixplus   hr            chrome/locale/hr-HR/
@@ -18,6 +21,7 @@ locale    tabmixplus   hu            chrome/locale/hu-HU/
 locale    tabmixplus   it            chrome/locale/it/
 locale    tabmixplus   ja            chrome/locale/ja/
 locale    tabmixplus   ko            chrome/locale/ko-KR/
+locale    tabmixplus   lv            chrome/locale/lv-LV/
 locale    tabmixplus   nl            chrome/locale/nl/
 locale    tabmixplus   pl            chrome/locale/pl/
 locale    tabmixplus   pt-BR         chrome/locale/pt-BR/
@@ -49,17 +53,6 @@ overlay   about:newtab                                              chrome://tab
 overlay   chrome://mozapps/content/downloads/unknownContentType.xul chrome://tabmixplus/content/links/removeBlankTab.xul
 overlay   chrome://mozapps/content/handling/dialog.xul              chrome://tabmixplus/content/links/removeBlankTab.xul
 
-overlay   chrome://mozapps/content/extensions/about.xul             chrome://tabmixplus/content/links/text_link.xul appversion<20.0a1
-overlay   chrome://mozapps/content/update/updates.xul               chrome://tabmixplus/content/links/text_link.xul appversion<20.0a1
-overlay   chrome://browser/content/pageinfo/pageInfo.xul            chrome://tabmixplus/content/links/text_link.xul appversion<20.0a1
-overlay   chrome://browser/content/aboutDialog.xul                  chrome://tabmixplus/content/links/text_link.xul appversion<20.0a1
-overlay   chrome://browser/content/sync/setup.xul                   chrome://tabmixplus/content/links/text_link.xul appversion<20.0a1
-overlay   chrome://mozapps/content/update/history.xul               chrome://tabmixplus/content/links/text_link.xul appversion<20.0a1
-style     chrome://browser/content/preferences/preferences.xul      chrome://tabmixplus/content/links/text_link.css appversion<20.0a1
-style     about:preferences                                         chrome://tabmixplus/content/links/text_link.css appversion<20.0a1  os=WINNT
-style     about:preferences                                         chrome://tabmixplus/content/links/text_link.css appversion<20.0a1  os=Darwin
-style     about:preferences#general                                 chrome://tabmixplus/content/links/text_link.css appversion<20.0a1  os=Linux
-
 overlay   chrome://browser/content/bookmarks/bookmarksPanel.xul     chrome://tabmixplus/content/places/places.xul
 overlay   chrome://browser/content/history/history-panel.xul        chrome://tabmixplus/content/places/places.xul
 overlay   chrome://browser/content/places/places.xul                chrome://tabmixplus/content/places/places.xul
diff --git a/chrome/content/changecode.js b/chrome/content/changecode.js
index 1e671d2..72b7026 100644
--- a/chrome/content/changecode.js
+++ b/chrome/content/changecode.js
@@ -32,6 +32,17 @@ Tabmix.changeCode = function(aParent, afnName, aOptions) {
   ChangeCode.prototype = {
     value: "", errMsg: "",
     _replace: function TMP_utils__replace(substr, newString, aParams) {
+      // Don't insert new code before "use strict";
+      if (substr == "{") {
+        let re = /['|"]use strict['|"];/;
+        let result = re.exec(this.value);
+        if (result) {
+          if (!newString.startsWith("$&")) {
+            newString = newString.replace(substr, result[0] + "\n");
+          }
+          substr = result[0];
+        }
+      }
       var silent;
       if (typeof aParams != "undefined") {
         let doReplace, flags;
diff --git a/chrome/content/click/click.js b/chrome/content/click/click.js
index 23b082b..8e56036 100644
--- a/chrome/content/click/click.js
+++ b/chrome/content/click/click.js
@@ -303,7 +303,6 @@ var TabmixTabClickOptions = {
 };
 
 var TabmixContext = {
-  _closeRightTabs: "tm-closeRightTabs",
   // Create new items in the tab bar context menu
   buildTabContextMenu: function TMP_buildTabContextMenu() {
     var $id = id => document.getElementById(id);
@@ -313,7 +312,12 @@ var TabmixContext = {
     tabContextMenu.insertBefore($id("context_openTabInWindow"), $id("context_pinTab"));
     tabContextMenu.insertBefore($id("context_bookmarkAllTabs"), $id("context_bookmarkTab").nextSibling);
     tabContextMenu.insertBefore($id("context_closeTab"), $id("tm-closeAllTabs"));
-    tabContextMenu.insertBefore($id("context_closeOtherTabs"), $id("tm-closeLeftTabs"));
+    let closeLeftTabs = $id("tm-closeLeftTabs");
+    let closeTabsToTheEnd = $id("context_closeTabsToTheEnd");
+    tabContextMenu.insertBefore($id("context_closeOtherTabs"), closeLeftTabs);
+    tabContextMenu.insertBefore(closeTabsToTheEnd, closeLeftTabs.nextSibling);
+    Tabmix.setItem(closeTabsToTheEnd, "oncommand", "gBrowser._closeRightTabs(TabContextMenu.contextTab);");
+
     // we can't disable menus with command attribute
     $id("context_undoCloseTab").removeAttribute("command");
 
@@ -345,22 +349,6 @@ var TabmixContext = {
     if ("cookiepieContextMenu" in window && !cookiepieContextMenu.initialized)
       cookiepieContextMenu.init();
 
-    // Bug 866880 - Implement "Close Tabs to the Right" as a built-in feature
-    if (Tabmix.isVersion(240)) {
-      let closeTabsToTheEnd = $id("context_closeTabsToTheEnd");
-      tabContextMenu.insertBefore(closeTabsToTheEnd, $id("tm-closeRightTabs"));
-      Tabmix.setItem(closeTabsToTheEnd, "oncommand", "gBrowser._closeRightTabs(TabContextMenu.contextTab);");
-      tabContextMenu.removeChild($id("tm-closeRightTabs"));
-      this._closeRightTabs = "context_closeTabsToTheEnd";
-    }
-
-    if (Tabmix._restoreMultipleTabs) {
-      let multipletablabel = $id("context_undoCloseTab").getAttribute("multipletablabel");
-      let undoCloseTabMenu = $id("tm-content-undoCloseTab");
-      undoCloseTabMenu.setAttribute("singletablabel", undoCloseTabMenu.label);
-      undoCloseTabMenu.setAttribute("multipletablabel", multipletablabel);
-    }
-
     if (Tabmix.prefs.getBoolPref("showTabContextMenuOnTabbar"))
       this.updateTabbarContextMenu(true);
 
@@ -455,7 +443,12 @@ var TabmixContext = {
     var show = Tabmix.prefs.getBoolPref("pinTabMenu");
     Tabmix.showItem("context_pinTab", show && !aTab.pinned);
     Tabmix.showItem("context_unpinTab", show && aTab.pinned);
-    Tabmix.showItem("context_tabViewMenu", Tabmix.prefs.getBoolPref("moveToGroup") && !aTab.pinned);
+    setTimeout(() => {
+      // we need to set our show/hide after tabGroups extension
+      let tabViewMenu = document.getElementById("context_tabViewMenu") ||
+          document.getElementById("tabGroups-context_tabViewMenu");
+      Tabmix.showItem(tabViewMenu, Tabmix.prefs.getBoolPref("moveToGroup") && !aTab.pinned);
+    });
     Tabmix.showItem("tm-mergeWindowsTab",
                     Tabmix.prefs.getBoolPref("showMergeWindow") &&
                     (!Tabmix.singleWindowMode ||
@@ -482,14 +475,18 @@ var TabmixContext = {
 
     //  ---------------- menuseparator ---------------- //
 
+    var tabsCount = gBrowser.visibleTabs.length;
+    var unpinnedTabsCount = tabsCount - TabmixTabbar._real_numPinnedTabs;
+    var unpinnedTabs = unpinnedTabsCount > 0;
+
     // Close tab Commands
     var pinnedTab = TabContextMenu.contextTab.pinned;
     Tabmix.showItem("context_closeTab", Tabmix.prefs.getBoolPref("closeTabMenu"));
-    Tabmix.showItem("tm-closeAllTabs", Tabmix.prefs.getBoolPref("closeAllMenu") && !pinnedTab);
-    Tabmix.showItem("tm-closeSimilar", Tabmix.prefs.getBoolPref("closeSimilarTabs") && !pinnedTab);
-    Tabmix.showItem("context_closeOtherTabs", Tabmix.prefs.getBoolPref("closeOtherMenu") && !pinnedTab);
+    Tabmix.showItem("tm-closeAllTabs", Tabmix.prefs.getBoolPref("closeAllMenu") && unpinnedTabs);
+    Tabmix.showItem("tm-closeSimilar", Tabmix.prefs.getBoolPref("closeSimilarTabs") && unpinnedTabs);
+    Tabmix.showItem("context_closeOtherTabs", Tabmix.prefs.getBoolPref("closeOtherMenu") && unpinnedTabs);
     Tabmix.showItem("tm-closeLeftTabs", Tabmix.prefs.getBoolPref("closeLeftMenu") && !pinnedTab);
-    Tabmix.showItem(this._closeRightTabs, Tabmix.prefs.getBoolPref("closeRightMenu") && !pinnedTab);
+    Tabmix.showItem("context_closeTabsToTheEnd", Tabmix.prefs.getBoolPref("closeRightMenu") && unpinnedTabs);
 
     //  ---------------- menuseparator ---------------- //
 
@@ -521,18 +518,18 @@ var TabmixContext = {
 
     var protectedTab = aTab.hasAttribute("protected");
     var lockedTab = aTab.hasAttribute("locked");
-    var tabsCount = gBrowser.visibleTabs.length;
-    var unpinnedTabs = tabsCount - TabmixTabbar._real_numPinnedTabs;
+    var noTabsToClose = !unpinnedTabsCount || unpinnedTabsCount == 1 && !aTab.pinned;
     var cIndex = Tabmix.visibleTabs.indexOf(aTab);
     if (Tabmix.rtl)
       cIndex = tabsCount - 1 - cIndex;
 
     var keepLastTab = tabsCount == 1 && Tabmix.prefs.getBoolPref("keepLastTab");
     Tabmix.setItem("context_closeTab", "disabled", protectedTab || keepLastTab);
-    Tabmix.setItem("tm-closeAllTabs", "disabled", keepLastTab || unpinnedTabs <= 1);
-    Tabmix.setItem("context_closeOtherTabs", "disabled", unpinnedTabs <= 1);
-    Tabmix.setItem(this._closeRightTabs, "disabled", cIndex == tabsCount - 1 || unpinnedTabs <= 1);
-    Tabmix.setItem("tm-closeLeftTabs", "disabled", cIndex === 0 || unpinnedTabs <= 1);
+    Tabmix.setItem("tm-closeAllTabs", "disabled", keepLastTab || !unpinnedTabsCount);
+    Tabmix.setItem("context_closeOtherTabs", "disabled", noTabsToClose);
+    Tabmix.setItem("context_closeTabsToTheEnd", "disabled", cIndex == tabsCount - 1 || noTabsToClose);
+    Tabmix.setItem("tm-closeLeftTabs", "disabled",
+                   cIndex === 0 || aTab.pinned || Tabmix.visibleTabs.previous(aTab).pinned);
 
     var closeTabsEmpty = TMP_ClosedTabs.count < 1;
     Tabmix.setItem("context_undoCloseTab", "disabled", closeTabsEmpty);
@@ -684,11 +681,6 @@ var TabmixContext = {
       Tabmix.showItem(undoCloseTabMenu, !contentClick &&
           !gContextMenu.isTextSelected && undoClose && !closeTabsEmpty &&
           Tabmix.prefs.getBoolPref("undoCloseTabContent"));
-      if (Tabmix._restoreMultipleTabs) {
-        let closedTabCount = TabmixSvc.ss.getNumberOfTabsClosedLast(window);
-        let visibleLabel = closedTabCount <= 1 ? "singletablabel" : "multipletablabel";
-        undoCloseTabMenu.setAttribute("label", undoCloseTabMenu.getAttribute(visibleLabel));
-      }
 
       var undoCloseListMenu = document.getElementById("tm-content-undoCloseList");
       Tabmix.showItem(undoCloseListMenu, !contentClick &&
diff --git a/chrome/content/flst/lasttab.js b/chrome/content/flst/lasttab.js
index 9f2b2d9..8cd6e81 100644
--- a/chrome/content/flst/lasttab.js
+++ b/chrome/content/flst/lasttab.js
@@ -51,7 +51,7 @@ var TMP_LastTab = {
 
     let tabBox = gBrowser.mTabBox;
     let els = Cc["@mozilla.org/eventlistenerservice;1"]
-    .getService(Ci.nsIEventListenerService);
+                .getService(Ci.nsIEventListenerService);
     if (Tabmix.isVersion(320)) {
       els.removeSystemEventListener(tabBox._eventNode, "keydown", tabBox, false);
     } else {
@@ -60,6 +60,9 @@ var TMP_LastTab = {
     }
     els.addSystemEventListener(tabBox._eventNode, "keydown", this, false);
     els.addSystemEventListener(tabBox._eventNode, "keyup", this, false);
+    if (!Tabmix.isVersion(470)) {
+      els.addSystemEventListener(window, "focus", this, true);
+    }
 
     // if session manager select other tab then the first one we need to build
     // TabHistory in two steps to maintain natural Ctrl-Tab order.
@@ -79,15 +82,23 @@ var TMP_LastTab = {
 
     let tabBox = gBrowser.mTabBox;
     let els = Cc["@mozilla.org/eventlistenerservice;1"]
-    .getService(Ci.nsIEventListenerService);
+                .getService(Ci.nsIEventListenerService);
     els.removeSystemEventListener(tabBox._eventNode, "keydown", this, false);
     els.removeSystemEventListener(tabBox._eventNode, "keyup", this, false);
     if (!Tabmix.isVersion(320))
       els.removeSystemEventListener(tabBox._eventNode, "keypress", this, false);
+    if (!Tabmix.isVersion(470)) {
+      els.removeSystemEventListener(window, "focus", this, true);
+    }
   },
 
   handleEvent: function(event) {
     switch (event.type) {
+      case "focus":
+        if (event.target == window.content) {
+          Tabmix.keyModifierDown = false;
+        }
+        break;
       case "blur":
         this.updateDisallowDrag(false);
         break;
diff --git a/chrome/content/links/contentLinks.js b/chrome/content/links/contentLinks.js
index aac0364..8622448 100644
--- a/chrome/content/links/contentLinks.js
+++ b/chrome/content/links/contentLinks.js
@@ -24,7 +24,6 @@ Tabmix.contentAreaClick = {
       'loadURI(',
       'if (where == "tab" || where == "tabshifted") {\n' +
       '        let doc = event.target.ownerDocument;\n' +
-      '        let _url = Tabmix.isVersion(190) ? href : url;\n' +
       '        let params = { charset: doc.characterSet, initiatingDoc: doc,\n' +
       '                       suppressTabsOnFileDownload: suppressTabsOnFileDownload,\n' +
       '                       referrerURI: doc.documentURIObject };\n' +
@@ -32,7 +31,7 @@ Tabmix.contentAreaClick = {
       '          params.referrerPolicy = doc.referrerPolicy;\n' +
       '          params.noReferrer = BrowserUtils.linkHasNoReferrer(linkNode);\n' +
       '        }\n' +
-      '        openLinkIn(_url, where, params);\n' +
+      '        openLinkIn(href, where, params);\n' +
       '      }\n' +
       '      else\n        $&'
     )._replace(
diff --git a/chrome/content/links/links.xul b/chrome/content/links/links.xul
index f55b29b..3004869 100644
--- a/chrome/content/links/links.xul
+++ b/chrome/content/links/links.xul
@@ -1,7 +1,5 @@
 <?xml version="1.0"?>
 
-<?xml-stylesheet href="chrome://tabmixplus/content/links/text_link.css" type="text/css"?>
-
 <overlay id="tabmixplus-tabprefs-overlay"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
@@ -20,5 +18,4 @@
    ]]>
 
    </script>
-   <!-- text_link.css fix the links in the EM/TM -->
 </overlay>
diff --git a/chrome/content/links/removeBlankTab.js b/chrome/content/links/removeBlankTab.js
index 68e94c4..f70ec9a 100644
--- a/chrome/content/links/removeBlankTab.js
+++ b/chrome/content/links/removeBlankTab.js
@@ -1,5 +1,11 @@
 "use strict";
 
+const Cu = Components.utils;
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "Services",
+  "resource://gre/modules/Services.jsm");
+
 var TabmixRemoveBlankTab = {
   initialize: function() {
     switch (window.document.documentElement.id) {
@@ -68,7 +74,15 @@ var TabmixRemoveBlankTab = {
                     .QueryInterface(Ci.nsIInterfaceRequestor)
                     .getInterface(Ci.nsIDOMWindow)
                     .wrappedJSObject;
-      result.b = result.win.gBrowser.getBrowserForDocument(doc);
+      let tabBrowser = result.win.gBrowser;
+      result.b = tabBrowser.getBrowserForDocument(doc);
+      if (!result.b) {
+        // try to find tab with _tabmix_downloadingTimeout
+        let tabs = Array.prototype.filter.call(tabBrowser.tabs, t => t._tabmix_downloadingTimeout);
+        if (tabs.length) {
+          result.b = tabs[0].linkedBrowser;
+        }
+      }
     }
     return result;
   },
@@ -78,8 +92,17 @@ var TabmixRemoveBlankTab = {
       aEvent.currentTarget.removeEventListener("unload", _unload, false);
       if (win && !win.closed) {
         win.setTimeout(function() {
-          if (win && win.gBrowser && tab && tab.parentNode)
-            win.gBrowser.removeTab(tab, {animate: false});
+          let tabBrowser = win && win.gBrowser;
+          if (!tabBrowser || !tab || !tab.parentNode) {
+            return;
+          }
+          // don't remove the tab if it going to close the window
+          let closeWindow = tabBrowser.tabs.length - tabBrowser._removingTabs.length == 1 &&
+              Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab");
+          if (closeWindow) {
+            return;
+          }
+          tabBrowser.removeTab(tab, {animate: false});
         }, 250);
       }
     }, false);
diff --git a/chrome/content/links/setup.js b/chrome/content/links/setup.js
index 64a0696..97e9628 100644
--- a/chrome/content/links/setup.js
+++ b/chrome/content/links/setup.js
@@ -361,13 +361,3 @@ Tabmix.adjustTabstrip = function tabContainer_adjustTabstrip(skipUpdateScrollSta
     TabmixTabbar.updateBeforeAndAfter();
   }
 };
-
-/**
- bug 887515 - add ability to restore multiple tabs
- bug 914258 backout 887515 changes from Firefox 25
- bug 931891 backout 887515 changes from Firefox 26-29
-*/
-XPCOMUtils.defineLazyGetter(Tabmix, "_restoreMultipleTabs", function() {
-  return this.isVersion(290) &&
-         typeof TabmixSvc.ss.setNumberOfTabsClosedLast == "function";
-});
diff --git a/chrome/content/links/text_link.css b/chrome/content/links/text_link.css
deleted file mode 100644
index b0a442b..0000000
--- a/chrome/content/links/text_link.css
+++ /dev/null
@@ -1,3 +0,0 @@
-label.text-link, label[onclick] {
-  -moz-binding: url(chrome://tabmixplus/content/tab/text.xml#tmp-text-link);
-}
diff --git a/chrome/content/links/text_link.xul b/chrome/content/links/text_link.xul
deleted file mode 100644
index 04c53fd..0000000
--- a/chrome/content/links/text_link.xul
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://tabmixplus/content/links/text_link.css" type="text/css"?>
-
-<overlay id="tabmixplus-text-link-overlay"
-   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-   <script type="application/javascript" src="chrome://tabmixplus/content/utils.js"/>
-   <script type="application/javascript" src="chrome://tabmixplus/content/links/userInterface.js"/>
-   <script type="application/javascript">
-
-   <![CDATA[
-      window.addEventListener("load", function TMP_onLoad_linkOverlay(aEvent) {
-        aEvent.currentTarget.removeEventListener("load", TMP_onLoad_linkOverlay, false);
-        Tabmix.openUILink_init();
-      }, false);
-   ]]>
-
-   </script>
-
-   <!-- text_link.css fix the links for "Visit Home Page" in about.xul -->
-   <!-- text_link.css fix the links for "view more information..." in updates.xul -->
-</overlay>
diff --git a/chrome/content/minit/minit.js b/chrome/content/minit/minit.js
index 1c6461d..f7e2470 100644
--- a/chrome/content/minit/minit.js
+++ b/chrome/content/minit/minit.js
@@ -1191,11 +1191,8 @@ Tabmix.navToolbox = {
         Tabmix.originalFunctions.oldHandleCommand.toString().indexOf(TMP_fn) > -1)
       return;
 
-    // InstantFox extension uses old version of gURLBar.handleCommand until Firefox 25
-    let instantFox = !Tabmix.isVersion(250, 250) && typeof InstantFox == "object";
-
     // we don't do anything regarding IeTab and URL Suffix extensions
-    _handleCommand = Tabmix.changeCode(obj, "gURLBar." + fn, {silent: this.urlBarInitialized})._replace(
+    Tabmix.changeCode(obj, "gURLBar." + fn, {silent: this.urlBarInitialized})._replace(
       '{',
       '{\
        if (Tabmix.selectedTab) {\
@@ -1206,11 +1203,11 @@ Tabmix.navToolbox = {
       'if (isMouseEvent || altEnter) {',
       'let loadNewTab = Tabmix.whereToOpen("extensions.tabmix.opentabfor.urlbar", altEnter).inNew &&\
            !(/^ *javascript:/.test(url));\
-       if (isMouseEvent || altEnter || loadNewTab) {', {check: !instantFox}
+       if (isMouseEvent || altEnter || loadNewTab) {'
     )._replace(
       // always check whereToOpenLink except for alt to catch also ctrl/meta
       'if (isMouseEvent)',
-      'if (isMouseEvent || aTriggeringEvent && !altEnter)', {check: !instantFox}
+      'if (isMouseEvent || aTriggeringEvent && !altEnter)'
     )._replace(
       'where = whereToOpenLink(aTriggeringEvent, false, false);',
       '$&\
@@ -1222,32 +1219,8 @@ Tabmix.navToolbox = {
     )._replace(
       'openUILinkIn(url, where, params);',
       'params.inBackground = Tabmix.prefs.getBoolPref("loadUrlInBackground");\
-       $&', {check: !instantFox}
-    );
-
-    if (instantFox) {
-      _handleCommand._replace(
-        'if (aTriggeringEvent instanceof MouseEvent) {',
-        'let isMouseEvent = aTriggeringEvent instanceof MouseEvent;\
-         let tabEmpty = !isTabEmpty(gBrowser.selectedTab);\
-         let altEnter = !isMouseEvent && aTriggeringEvent && aTriggeringEvent.altKey && !tabEmpty;\
-         let loadNewTab = InstantFoxModule.currentQuery && InstantFoxModule.openSearchInNewTab && !tabEmpty ||\
-                          Tabmix.whereToOpen("extensions.tabmix.opentabfor.urlbar", altEnter).inNew &&\
-                          !(/^ *javascript:/.test(url));\
-         let inBackground = Tabmix.prefs.getBoolPref("loadUrlInBackground");\
-         $&'
-      )._replace(
-        'allowThirdPartyFixup: true, postData: postData',
-        '$&, inBackground: inBackground'
-      )._replace(
-        '} else if (aTriggeringEvent && aTriggeringEvent.altKey && !isTabEmpty(gBrowser.selectedTab)) {',
-        '} else if (loadNewTab) {'
-      )._replace(
-        'inBackground: false',
-        'inBackground: inBackground'
-      );
-    }
-    _handleCommand.toCode();
+       $&'
+    ).toCode();
 
     // don't call ChangeCode.isValidToChange after urlbar initialized,
     // we can only lost our changes if user customized the toolbar and remove urlbar
diff --git a/chrome/content/minit/tabView.js b/chrome/content/minit/tabView.js
index cffab50..2ba16e8 100644
--- a/chrome/content/minit/tabView.js
+++ b/chrome/content/minit/tabView.js
@@ -136,7 +136,6 @@
       this._original_reconstitute.apply(this, arguments);
     };
 
-    let fn = TabView._window.UI._original_reset = TabView._window.UI.reset;
     if (window.hasOwnProperty("tabGroups")) {
       // reconnect tabs that we disconnected in reconstitute
       TabView._window.UI.reset = function() {
@@ -147,9 +146,8 @@
     }
 
     // add tab to the new group on tabs order not tabItem order
-    let isStrict = (f) => f.toString().indexOf('"use strict";') > -1;
     Tabmix.changeCode(TabView._window.UI, "TabView._window.UI.reset")._replace(
-      isStrict(fn) ? '"use strict";' : '{',
+      '{',
       '$&' +
       'let win = TabView._window;' +
       'let Trenches = win.Trenches;' +
@@ -202,7 +200,6 @@
       return;
     }
 
-    TMP_SessionStore.initService();
     this._getSessionTabviewData(winData);
     this._updateUIpageBounds = false;
   };
diff --git a/chrome/content/minit/tablib.js b/chrome/content/minit/tablib.js
index 2c0d18f..7f20c25 100644
--- a/chrome/content/minit/tablib.js
+++ b/chrome/content/minit/tablib.js
@@ -118,7 +118,10 @@ var tablib = { // eslint-disable-line
     let exceptionList = {
       // secureLogin extension expect to execute the login in the current page
       // https://addons.mozilla.org/en-us/firefox/addon/secure-login/?src=ss
-      secureLogin: "secureLogin.login"
+      secureLogin: "secureLogin.login",
+      // https://addons.mozilla.org/en-US/firefox/addon/tab-groups-panorama/
+      // paneSession.clearData load about.blank to all opened tabs in the active window
+      tabGroups: "paneSession.clearData",
     };
     let keys = Object.keys(exceptionList);
     let isInstalled = keys.some(function(item) {
@@ -152,8 +155,8 @@ var tablib = { // eslint-disable-line
 
     Tabmix.changeCode(obj, "gBrowser." + fnName)._replace(
       '{', '{\n' +
-      '            let dontMove, isPending, callerName = Tabmix.callerName(),\n' +
-      '                isRestoringTab = callerName == "ssi_restoreWindow";\n'
+      '            let dontMove, isPending, stack = Tabmix.stackTrace(),\n' +
+      '                isRestoringTab = stack.contain("ssi_restoreWindow");\n'
     )._replace(
       'let params = arguments[1];',
       '$&\n' +
@@ -195,7 +198,7 @@ var tablib = { // eslint-disable-line
       't.dispatchEvent(evt);' +
       'var openTabnext = Tabmix.prefs.getBoolPref("openTabNext");' +
       'if (openTabnext) {' +
-      '  if (dontMove || Tabmix.dontMoveNewTab(callerName))' +
+      '  if (dontMove || Tabmix.dontMoveNewTab(stack))' +
       '    openTabnext = false;' +
       '  else if (!Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent"))' +
       '    aRelatedToCurrent = true;' +
@@ -204,12 +207,8 @@ var tablib = { // eslint-disable-line
       't.owner = this.selectedTab;', 't.owner = _selectedTab;'
     ).toCode();
 
-    Tabmix.dontMoveNewTab = function(caller) {
-      if (caller == "ssi_restoreWindow" ||
-          caller == "ssi_duplicateTab") {
-        return true;
-      }
-      return false;
+    Tabmix.dontMoveNewTab = function(stack) {
+      return stack.contain("ssi_restoreWindow", "ssi_duplicateTab");
     };
 
     // ContextMenu Extensions raplce the original removeTab function
@@ -341,20 +340,6 @@ var tablib = { // eslint-disable-line
       'if (!aShow || TabmixTabbar.hideMode != 2) $&'
     ).toCode();
 
-    // Follow up bug 887515 - add ability to restore multiple tabs
-    // bug 914258 backout 887515 changes from Firefox 25
-    if (Tabmix._restoreMultipleTabs) {
-      Tabmix.changeCode(gBrowser, "gBrowser.removeTabsToTheEndFrom")._replace(
-        'let tabs = this.getTabsToTheEndFrom(aTab);',
-        '$&\n' +
-        '              Tabmix.startCountingClosedTabs();'
-      )._replace(
-        '#1.setNumberOfTabsClosedLast(window, numberOfTabsToClose);'.
-         replace("#1", Tabmix.isVersion(260) ? "SessionStore" : "ss"),
-        'Tabmix.setNumberOfTabsClosedLast();'
-      ).toCode();
-    }
-
     if (Tabmix.isVersion(390) && gMultiProcessBrowser) {
       /*
        TabSwitchDone event fire late when the tab is busy, we call our
@@ -444,17 +429,13 @@ var tablib = { // eslint-disable-line
       Tabmix.changeCode(tabBar._prefObserver, "gBrowser.tabContainer._prefObserver.observe")._replace(
         'this.tabContainer.mCloseButtons = Services.prefs.getIntPref(data);',
         'break;'
-      )._replace(
-        'this.tabContainer.updateVisibility();', '', {check: !Tabmix.isVersion(230)}
       ).toCode();
     }
 
-    if (Tabmix.isVersion(230)) {
-      Tabmix.changeCode(tabBar, "gBrowser.tabContainer.updateVisibility")._replace(
-        'window.toolbar.visible',
-        '$& && TabmixTabbar.hideMode == 0'
-      ).toCode();
-    }
+    Tabmix.changeCode(tabBar, "gBrowser.tabContainer.updateVisibility")._replace(
+      'window.toolbar.visible',
+      '$& && TabmixTabbar.hideMode == 0'
+    ).toCode();
 
     if (!Tabmix.extensions.verticalTabs) {
       Tabmix.changeCode(tabBar, "gBrowser.tabContainer._lockTabSizing")._replace(
@@ -533,14 +514,12 @@ var tablib = { // eslint-disable-line
       '  }'
     ).defineProperty();
 
-    if (Tabmix.isVersion(220)) {
-      Tabmix.changeCode(tabBar, "gBrowser.tabContainer._setPositionalAttributes")._replace(
-        /(\})(\)?)$/,
-        '          Tabmix.setTabStyle(this.selectedItem);\n' +
-        '          TabmixTabbar.updateBeforeAndAfter();\n' +
-        '$1$2'
-      ).toCode();
-    }
+    Tabmix.changeCode(tabBar, "gBrowser.tabContainer._setPositionalAttributes")._replace(
+      /(\})(\)?)$/,
+      '          Tabmix.setTabStyle(this.selectedItem);\n' +
+      '          TabmixTabbar.updateBeforeAndAfter();\n' +
+      '$1$2'
+    ).toCode();
   },
 
   change_utility: function change_utility() {
@@ -571,10 +550,10 @@ var tablib = { // eslint-disable-line
 
     Tabmix.changeCode(window, "handleDroppedLink")._replace(
       'loadURI(uri, null, postData.value, false);',
-      'tablib.contentAreaOnDrop(event, url, postData.value);', {check: !Tabmix.isVersion(250)}
+      'tablib.contentAreaOnDrop(event, url, postData.value);', {check: TabmixSvc.isPaleMoon}
     )._replace(
       'loadURI(data.url, null, data.postData, false);',
-      'tablib.contentAreaOnDrop(event, data.url, data.postData);', {check: Tabmix.isVersion(250)}
+      'tablib.contentAreaOnDrop(event, data.url, data.postData);', {check: !TabmixSvc.isPaleMoon}
     ).toCode();
     // update current browser
     gBrowser.selectedBrowser.droppedLinkHandler = handleDroppedLink;
@@ -624,24 +603,21 @@ var tablib = { // eslint-disable-line
       Tabmix.changeCode(nsContextMenu.prototype, "nsContextMenu.prototype.initOpenItems")._replace(
         /context-openlink",/, '$& !Tabmix.singleWindowMode &&'
       )._replace(
-        /context-openlinkprivate",/, '$& (!Tabmix.singleWindowMode || !isWindowPrivate) &&',
-        {check: Tabmix.isVersion(200)}
+        /context-openlinkprivate",/, '$& (!Tabmix.singleWindowMode || !isWindowPrivate) &&'
       ).toCode();
 
-      if (Tabmix.isVersion(200)) {
-        Tabmix.changeCode(nsContextMenu.prototype, "nsContextMenu.prototype.openLinkInPrivateWindow")._replace(
-          'openLinkIn(this.linkURL, "window",',
-          'var [win, where] = [window, "window"];\
-           if (Tabmix.singleWindowMode) {\
-             let pbWindow = Tabmix.RecentWindow.getMostRecentBrowserWindow({ private: true });\
-             if (pbWindow) {\
-               [win, where] = [pbWindow, "tab"];\
-               pbWindow.focus();\
-             }\
+      Tabmix.changeCode(nsContextMenu.prototype, "nsContextMenu.prototype.openLinkInPrivateWindow")._replace(
+        'openLinkIn(this.linkURL, "window",',
+        'var [win, where] = [window, "window"];\
+         if (Tabmix.singleWindowMode) {\
+           let pbWindow = Tabmix.RecentWindow.getMostRecentBrowserWindow({ private: true });\
+           if (pbWindow) {\
+             [win, where] = [pbWindow, "tab"];\
+             pbWindow.focus();\
            }\
-           win.openLinkIn(this.linkURL, where,'
-        ).toCode();
-      }
+         }\
+         win.openLinkIn(this.linkURL, where,'
+      ).toCode();
     }
 
     /**
@@ -789,8 +765,7 @@ var tablib = { // eslint-disable-line
     ).toCode();
 
     Tabmix.changeCode(window, "warnAboutClosingWindow")._replace(
-      Tabmix.isVersion(240) ? 'gBrowser.warnAboutClosingTabs(gBrowser.closingTabsEnum.ALL)' :
-                              'gBrowser.warnAboutClosingTabs(true)',
+      'gBrowser.warnAboutClosingTabs(gBrowser.closingTabsEnum.ALL)',
       'tablib.closeWindow(true)', {flags: "g"}
     )._replace(
       'os.notifyObservers(null, "browser-lastwindow-close-granted", null);',
@@ -823,9 +798,7 @@ var tablib = { // eslint-disable-line
       'window = #1.undoCloseWindow(aIndex || 0);'.
        replace("#1", Tabmix.isVersion(260) ? "SessionStore" : "ss"),
       '{if (Tabmix.singleWindowMode) {\
-         window = TabmixSvc.version(200) ?\
-            Tabmix.RecentWindow.getMostRecentBrowserWindow({private: false}) :\
-            Tabmix.getTopWin();\
+          window = Tabmix.RecentWindow.getMostRecentBrowserWindow({private: false});\
        }\
        if (window) {\
         window.focus();\
@@ -866,7 +839,7 @@ var tablib = { // eslint-disable-line
       '$& \
        let SM = TabmixSessionManager;\
        Tabmix.setItem("Browser:RestoreLastSession", "disabled", !SM.canRestoreLastSession || SM.isPrivateWindow);',
-       {check: Tabmix.isVersion(200) && Tabmix.prefs.getBoolPref("sessions.manager")}
+       {check: Tabmix.prefs.getBoolPref("sessions.manager")}
     ).toCode();
 
     Tabmix.changeCode(HistoryMenu.prototype, "HistoryMenu.prototype.populateUndoWindowSubmenu")._replace(
@@ -1153,12 +1126,10 @@ var tablib = { // eslint-disable-line
         // remove current tab last
         if (!this.mCurrentTab.pinned)
           tabs.unshift(tabs.splice(tabs.indexOf(this.mCurrentTab), 1)[0]);
-        Tabmix.startCountingClosedTabs();
         tabs.reverse().forEach(function TMP_removeTab(tab) {
           if (!tab.pinned)
             this.removeTab(tab, {animate: false});
         }, this);
-        Tabmix.setNumberOfTabsClosedLast();
         // _handleTabSelect will call mTabstrip.ensureElementIsVisible
       }
     };
@@ -1173,7 +1144,6 @@ var tablib = { // eslint-disable-line
 
       if (this.warnAboutClosingTabs(this.closingTabsEnum.GROUP, null, aDomain)) {
         var childNodes = this.visibleTabs;
-        Tabmix.startCountingClosedTabs();
         for (var i = childNodes.length - 1; i > -1; --i) {
           if (childNodes[i] != aTab && !childNodes[i].pinned &&
               this.getBrowserForTab(childNodes[i]).currentURI.spec.indexOf(aDomain) != -1)
@@ -1183,7 +1153,6 @@ var tablib = { // eslint-disable-line
           this.removeTab(aTab, {animate: true});
           this.ensureTabIsVisible(this.selectedTab);
         }
-        Tabmix.setNumberOfTabsClosedLast();
       }
     };
 
@@ -1211,12 +1180,10 @@ var tablib = { // eslint-disable-line
 
         let childNodes = this.visibleTabs;
         let tabPos = childNodes.indexOf(aTab);
-        Tabmix.startCountingClosedTabs();
         for (let i = childNodes.length - 1; i > tabPos; i--) {
           if (!childNodes[i].pinned)
             this.removeTab(childNodes[i]);
         }
-        Tabmix.setNumberOfTabsClosedLast();
       }
     };
 
@@ -1232,12 +1199,10 @@ var tablib = { // eslint-disable-line
 
         let childNodes = this.visibleTabs;
         let tabPos = childNodes.indexOf(aTab);
-        Tabmix.startCountingClosedTabs();
         for (let i = tabPos - 1; i >= 0; i--) {
           if (!childNodes[i].pinned)
             this.removeTab(childNodes[i]);
         }
-        Tabmix.setNumberOfTabsClosedLast();
       }
     };
 
@@ -1252,12 +1217,10 @@ var tablib = { // eslint-disable-line
         var childNodes = this.visibleTabs;
         if (TabmixTabbar.visibleRows > 1)
           Tabmix.tabsUtils.updateVerticalTabStrip(true);
-        Tabmix.startCountingClosedTabs();
         for (var i = childNodes.length - 1; i >= 0; --i) {
           if (childNodes[i] != aTab && !childNodes[i].pinned)
             this.removeTab(childNodes[i]);
         }
-        Tabmix.setNumberOfTabsClosedLast();
       }
     });
 
@@ -1687,9 +1650,10 @@ var tablib = { // eslint-disable-line
     let swapTab = function tabmix_swapBrowsersAndCloseOther(aOurTab, aOtherTab) {
       // Do not allow transfering a private tab to a non-private window
       // and vice versa.
-      if (Tabmix.isVersion(200) && PrivateBrowsingUtils.isWindowPrivate(window) !=
-          PrivateBrowsingUtils.isWindowPrivate(aOtherTab.ownerDocument.defaultView))
+      if (PrivateBrowsingUtils.isWindowPrivate(window) !=
+          PrivateBrowsingUtils.isWindowPrivate(aOtherTab.ownerDocument.defaultView)) {
         return;
+      }
 
       if (Tabmix.runningDelayedStartup) {
         // we probably will never get here in single window mode
@@ -1722,36 +1686,6 @@ var tablib = { // eslint-disable-line
         this.tabContainer.mTabstrip.ensureElementIsVisible(aTab, aSmoothScroll);
     };
 
-    // Follow up bug 887515 - add ability to restore multiple tabs
-    // bug 914258 backout 887515 changes from Firefox 25
-    if (Tabmix._restoreMultipleTabs) {
-      Tabmix.startCountingClosedTabs = function() {
-        this.shouldCountClosedTabs = true;
-        this.numberOfTabsClosedLast = 0;
-      };
-      Tabmix.setNumberOfTabsClosedLast = function(aNum) {
-        TabmixSvc.ss.setNumberOfTabsClosedLast(window, aNum || this.numberOfTabsClosedLast);
-        this.shouldCountClosedTabs = false;
-        this.numberOfTabsClosedLast = 0;
-      };
-      Tabmix.countClosedTabs = function(aTab) {
-        if (!this.shouldCountClosedTabs ||
-            Services.prefs.getIntPref("browser.sessionstore.max_tabs_undo") === 0)
-          return;
-        var tabState = TabmixSvc.JSON.parse(TabmixSvc.ss.getTabState(aTab));
-        if (!tabState.entries || tabState.entries.length == 1 &&
-           (tabState.entries[0].url == TabmixSvc.aboutBlank ||
-            tabState.entries[0].url == TabmixSvc.aboutNewtab) &&
-            !tabState.userTypedValue)
-          return;
-        this.numberOfTabsClosedLast++;
-      };
-    } else {
-      Tabmix.startCountingClosedTabs = function() { };
-      Tabmix.setNumberOfTabsClosedLast = function() { };
-      Tabmix.countClosedTabs = function() { };
-    }
-
     /** DEPRECATED **/
     // we keep this function to saty compatible with other extensions that use it
     gBrowser.undoRemoveTab = () => TMP_ClosedTabs.undoCloseTab();
@@ -1904,14 +1838,10 @@ var tablib = { // eslint-disable-line
       if (Services.prefs.getBoolPref("browser.sessionstore.resume_session_once"))
         return false;
 
-      if (Tabmix.isVersion(200)) {
-        // try to find non-private window
-        let nonPrivateWindow = Tabmix.RecentWindow.getMostRecentBrowserWindow({private: false});
-        if (!nonPrivateWindow)
-          return false;
-      } else if (TabmixSessionManager.globalPrivateBrowsing) {
+      // try to find non-private window
+      let nonPrivateWindow = Tabmix.RecentWindow.getMostRecentBrowserWindow({private: false});
+      if (!nonPrivateWindow)
         return false;
-      }
 
       // last windows with tabs
       var windowtype = aCountOnlyBrowserWindows ? "navigator:browser" : null;
diff --git a/chrome/content/overlay/browsr.css b/chrome/content/overlay/browsr.css
index b944f4f..c5a982e 100644
--- a/chrome/content/overlay/browsr.css
+++ b/chrome/content/overlay/browsr.css
@@ -10,11 +10,6 @@ vbox[shortcutsLabels="true"] {
   -moz-binding: url(chrome://tabmixplus/content/preferences/shortcutsLabels.xml#shortcut-labels) !important;
 }
 
-/* for Firefox 11.0-19.0, not in use for Firefox 20.0+ */
-label.text-link, label[onclick] {
-  -moz-binding: url(chrome://tabmixplus/content/tab/text.xml#tmp-text-link);
-}
-
 /*  we don't use .tabbrowser-tab > .tab-close-button here
     because in some theme the buttons are inside tab-middle
 */
diff --git a/chrome/content/overlay/tabContextMenu.xul b/chrome/content/overlay/tabContextMenu.xul
index 58c16c5..81eb87e 100644
--- a/chrome/content/overlay/tabContextMenu.xul
+++ b/chrome/content/overlay/tabContextMenu.xul
@@ -29,6 +29,8 @@
         <menuitem id="context_pinTab">
         <menuitem id="context_unpinTab"/>
         <menuitem id="context_tabViewMenu"/>
+     or
+        <menuitem id="tabGroups-context_tabViewMenu"/>
 -->
         <menuitem id="tm-mergeWindowsTab" insertbefore="context_openTabInWindow"
                  key="key_tm_mergeWin" label="&mergeContext.label;" accesskey="&mergeContext.accesskey;"
@@ -90,9 +92,9 @@
         <menuitem id="tm-closeLeftTabs" insertbefore="context_closeTab"
                  label="&closeTabsToLeft.label;" accesskey="&closeleft.accesskey;"
                  oncommand="gBrowser._closeLeftTabs(TabContextMenu.contextTab);"/>
-        <menuitem id="tm-closeRightTabs" insertbefore="context_closeTab"
-                 label="&closeTabstoRight.label;" accesskey="&closeright.accesskey;"
-                 oncommand="gBrowser._closeRightTabs(TabContextMenu.contextTab);"/>
+<!--
+        <menuitem id="context_closeTabsToTheEnd"
+-->
         <menuseparator id="tm-separator-2" insertbefore="context_closeTab" type="tabmix"/>
         <menu id="tm-docShell" insertbefore="context_closeTab"
                 label="&docShellMenu.label;" accesskey="&docShellMenu.accesskey;">
diff --git a/chrome/content/places/places.js b/chrome/content/places/places.js
index 9875186..e78ceaf 100644
--- a/chrome/content/places/places.js
+++ b/chrome/content/places/places.js
@@ -380,8 +380,6 @@ var TMP_Places = {
   startObserver: function TMP_PC_startObserver() {
     // Start observing bookmarks if needed.
     if (!this._hasBookmarksObserver) {
-      if (!Tabmix.isVersion(210))
-        this.onBeforeItemRemoved = function() {};
       try {
         PlacesUtils.addLazyBookmarkObserver(this);
         this._hasBookmarksObserver = true;
@@ -723,7 +721,7 @@ Tabmix.onContentLoaded = {
       'var w = getTopWin();',
       '$&\n' +
       '  if (w && where == "window" &&\n' +
-      '      !Tabmix.isNewWindowAllow(Tabmix.isVersion(200) ? aIsPrivate : false)) {\n' +
+      '      !Tabmix.isNewWindowAllow(aIsPrivate)) {\n' +
       '    where = "tab";\n' +
       '  }'
     )._replace(
diff --git a/chrome/content/preferences/appearance.js b/chrome/content/preferences/appearance.js
index 3d9e2e5..68ad4e5 100644
--- a/chrome/content/preferences/appearance.js
+++ b/chrome/content/preferences/appearance.js
@@ -24,7 +24,7 @@ var gAppearancePane = { // jshint ignore:line
     Tabmix.setItem("onLeftDisabled", "hidden", browserWindow.Tabmix.defaultCloseButtons || null);
 
     // browser.allTabs.previews
-    if (Tabmix.isVersion(210) && !TabmixSvc.isPaleMoon) {
+    if (!TabmixSvc.isPaleMoon) {
       gPrefWindow.removeChild("pref_allTabsPpreviews");
       gPrefWindow.removeChild("obs_hideAllTabsButton");
       gPrefWindow.removeChild("allTabsPpreviews");
diff --git a/chrome/content/preferences/menu.js b/chrome/content/preferences/menu.js
index 4c92045..523693b 100644
--- a/chrome/content/preferences/menu.js
+++ b/chrome/content/preferences/menu.js
@@ -8,6 +8,8 @@ var gMenuPane = { // jshint ignore:line
     $("clearClosedTabs").setAttribute("label", TabmixSvc.getString("undoclosetab.clear.label"));
 
     var browserWindow = Tabmix.getTopWin();
+    let $$ = id => browserWindow.document.getElementById(id);
+
     if (Tabmix.isVersion(430)) {
       $("muteTab").label = browserWindow.gNavigatorBundle.getString("muteTab.label") + "/" +
         browserWindow.gNavigatorBundle.getString("unmuteTab.label");
@@ -16,16 +18,17 @@ var gMenuPane = { // jshint ignore:line
     }
 
     // if Tabview exist copy its menu label
-    if (browserWindow.TMP_TabView.installed) {
-      let label = browserWindow.document.getElementById("context_tabViewMenu").getAttribute("label");
-      $("moveToGroup").label = label;
+    let tabViewMenu = browserWindow.TMP_TabView.installed &&
+        ($$("context_tabViewMenu") || $$("tabGroups-context_tabViewMenu"));
+    if (tabViewMenu) {
+      $("moveToGroup").label = tabViewMenu.getAttribute("label");
     } else {
       gPrefWindow.removeChild("pref_showMoveToGroup");
       gPrefWindow.removeChild("moveToGroup");
     }
 
     if (Tabmix.isVersion(320)) {
-      let openNonRemote = browserWindow.document.getElementById("context_openNonRemoteWindow");
+      let openNonRemote = $$("context_openNonRemoteWindow");
       if (openNonRemote) {
         let item = $("openNonRemoteWindow");
         item.setAttribute("label", openNonRemote.getAttribute("label"));
@@ -38,7 +41,7 @@ var gMenuPane = { // jshint ignore:line
     }
 
     // check if bookmark item in tab context menu
-    Tabmix.setItem("bmMenu", "hidden", !(browserWindow.document.getElementById("context_bookmarkAllTabs")));
+    Tabmix.setItem("bmMenu", "hidden", !($$("context_bookmarkAllTabs")));
 
     this.setInverseLinkLabel();
 
diff --git a/chrome/content/preferences/menu.xul b/chrome/content/preferences/menu.xul
index 7b35e5f..6f66149 100644
--- a/chrome/content/preferences/menu.xul
+++ b/chrome/content/preferences/menu.xul
@@ -166,7 +166,7 @@
                     <!-- Close left tabs -->
                     <checkbox_tmp id="showCloseLeft" label="&closeTabsToLeft.label;" preference="pref_showCloseLeft"/>
                     <!-- Close right tabs -->
-                    <checkbox_tmp id="showCloseRight" label="&closeTabstoRight.label;" preference="pref_showCloseRight"/>
+                    <checkbox_tmp id="showCloseRight" label="&closeTabsToTheEnd.label;" preference="pref_showCloseRight"/>
                     <!-- docShell -->
                     <checkbox_tmp id="showDocShell" label="&docShellMenu.label;" preference="pref_showDocShell"/>
                     <!-- freeze tab -->
diff --git a/chrome/content/preferences/preferences.js b/chrome/content/preferences/preferences.js
index ed6627e..4b24061 100644
--- a/chrome/content/preferences/preferences.js
+++ b/chrome/content/preferences/preferences.js
@@ -365,9 +365,6 @@ XPCOMUtils.defineLazyGetter(window, "gPreferenceList", function() {
     "toolkit.scrollbox.clickToScroll.scrollDelay", "toolkit.scrollbox.smoothScroll"
   ];
 
-  if (!Tabmix.isVersion(200))
-    otherPrefs.push("browser.warnOnRestart");
-
   let prefs = Services.prefs.getDefaultBranch("");
   let tabmixPrefs = Services.prefs.getChildList("extensions.tabmix.").sort();
   // filter out preference without default value
@@ -380,7 +377,7 @@ XPCOMUtils.defineLazyGetter(window, "gPreferenceList", function() {
   return tabmixPrefs;
 });
 
-__defineGetter__("_sminstalled", function() {
+XPCOMUtils.defineLazyGetter(this, "_sminstalled", function() {
   return Tabmix.getTopWin().Tabmix.extensions.sessionManager;
 });
 
diff --git a/chrome/content/preferences/session.js b/chrome/content/preferences/session.js
index 76c57b3..d14ca62 100644
--- a/chrome/content/preferences/session.js
+++ b/chrome/content/preferences/session.js
@@ -13,9 +13,6 @@ var gSessionPane = {
     this.isSessionStoreEnabled(true);
     this.updateSessionShortcuts();
 
-    if (Tabmix.isVersion(200))
-      gPrefWindow.removeChild("pref_browser.warnOnRestart");
-
     gPrefWindow.initPane("paneSession");
   },
 
@@ -65,9 +62,6 @@ var gSessionPane = {
 
     // sessionstore pref
     function sessionstorePrefs() {
-      // browser.warnOnRestart remove on Firefox 20
-      if (!Tabmix.isVersion(200))
-        updatePrefs("browser.warnOnRestart", !useSessionManager);
       updatePrefs("browser.warnOnQuit", !useSessionManager);
       updatePrefs("resume_from_crash", !useSessionManager);
       // "browser.startup.page"
diff --git a/chrome/content/preferences/session.xul b/chrome/content/preferences/session.xul
index c0c3b89..07da5f7 100644
--- a/chrome/content/preferences/session.xul
+++ b/chrome/content/preferences/session.xul
@@ -28,8 +28,6 @@
                   onchange="gSessionPane.updateSessionShortcuts();"/>
       <preference id="pref_sessionCrashRecovery"
                   name="extensions.tabmix.sessions.crashRecovery"            type="bool"/>
-      <preference id="pref_browser.warnOnRestart"
-                  name="browser.warnOnRestart"                               type="bool"/>
       <preference id="pref_browser.warnOnQuit"
                   name="browser.warnOnQuit"                                  type="bool"/>
       <preference id="pref_browserStartupPage"
diff --git a/chrome/content/session/session.js b/chrome/content/session/session.js
index b82bc12..ffa1ccf 100644
--- a/chrome/content/session/session.js
+++ b/chrome/content/session/session.js
@@ -325,17 +325,13 @@ TabmixSessionManager = {
     obs.addObserver(this, "quit-application-requested", true);
     obs.addObserver(this, "browser-lastwindow-close-requested", true);
     obs.addObserver(this, "browser:purge-session-history", true);
-    if (!Tabmix.isVersion(200)) {
-      obs.addObserver(this, "private-browsing", true);
-      obs.addObserver(this, "private-browsing-change-granted", true);
-    }
     if (Tabmix.isVersion(270)) {
       if (!isFirstWindow && this.enableBackup && this.canRestoreLastSession)
         window.__SS_lastSessionWindowID = "" + Date.now() + Math.random();
       obs.addObserver(this, "sessionstore-last-session-cleared", true);
     }
 
-    if (Tabmix.isVersion(200) && this.isPrivateWindow) {
+    if (this.isPrivateWindow) {
       // disable saveing or changeing any data on the disk in private window
       document.getElementById("tmp_contextmenu_ThisWindow").setAttribute("disabled", true);
       document.getElementById("tmp_contextmenu_AllWindows").setAttribute("disabled", true);
@@ -438,7 +434,7 @@ TabmixSessionManager = {
       this.saveStateDelayed();
   },
 
-  // we call this function after session restored by sessionStore, after restart or after exit private-browsing
+  // we call this function after session restored by sessionStore
   onSessionRestored: function SM_onSessionRestored(aKeepClosedWindows) {
     // sync rdf list with sessionstore closed tab after restart
     // we need it when we delete/restore close tab
@@ -449,7 +445,6 @@ TabmixSessionManager = {
 
     // we keep the old session after restart.
     // just remove the restored session from close window list
-    // if we are not exiting private browsing mode
     var sessionContainer = this.initContainer(this.gSessionPath[0]);
     if (!aKeepClosedWindows)
       this.deleteWithProp(sessionContainer, "status", "saved");
@@ -537,12 +532,10 @@ TabmixSessionManager = {
     window.focus();
     var title = TabmixSvc.getSMString("sm.askBeforSave.title");
     var msg = TabmixSvc.getSMString("sm.askBeforSave.msg0");
-    if (Tabmix.isVersion(200)) {
-      // add remark - Only non-private windows will save
-      // when there is one private window or more..
-      if (Tabmix.RecentWindow.getMostRecentBrowserWindow({private: true}))
-        msg += "\n" + TabmixSvc.getSMString("sm.askBeforSave.msg2");
-    }
+    // add remark - Only non-private windows will save
+    // when there is one private window or more..
+    if (Tabmix.RecentWindow.getMostRecentBrowserWindow({private: true}))
+      msg += "\n" + TabmixSvc.getSMString("sm.askBeforSave.msg2");
     msg += "\n\n" + TabmixSvc.getSMString("sm.askBeforSave.msg1");
     var chkBoxLabel = TabmixSvc.getSMString("sm.saveClosedTab.chkbox.label");
     var chkBoxState = this.saveClosedTabs ? Tabmix.CHECKBOX_CHECKED : Tabmix.HIDE_CHECKBOX;
@@ -557,8 +550,9 @@ TabmixSessionManager = {
   windowIsClosing: function SM_WindowIsClosing(aCanClose, aLastWindow,
                                                 aSaveSession, aRemoveClosedTabs, aKeepClosedWindows) {
 
-    if (Tabmix.isVersion(200) && this.isPrivateWindow)
+    if (this.isPrivateWindow) {
       this.removeSession(this.gThisWin, this.gSessionPath[0]);
+    }
 
     if (this.windowClosed || this.isPrivateSession)
       return;
@@ -593,7 +587,6 @@ TabmixSessionManager = {
         if (aSaveSession) {
           var rdfNodeClosedWindows = this.RDFService.GetResource(this.gSessionPath[0]);
           var sessionContainer = this.initContainer(rdfNodeClosedWindows);
-          // don't remove closed windows when entring private browsing mode
           if (!aKeepClosedWindows)
             this.deleteWithProp(sessionContainer, "dontLoad");
           var count = this.countWinsAndTabs(sessionContainer, "dontLoad");
@@ -686,16 +679,8 @@ TabmixSessionManager = {
       obs.removeObserver(this, "quit-application-requested");
       obs.removeObserver(this, "browser-lastwindow-close-requested");
       obs.removeObserver(this, "browser:purge-session-history", true);
-      if (!Tabmix.isVersion(200)) {
-        obs.removeObserver(this, "private-browsing");
-        obs.removeObserver(this, "private-browsing-change-granted");
-      }
       if (Tabmix.isVersion(270))
         obs.removeObserver(this, "sessionstore-last-session-cleared");
-      if (this.afterExitPrivateBrowsing) {
-        clearTimeout(this.afterExitPrivateBrowsing);
-        this.afterExitPrivateBrowsing = null;
-      }
     }
     if ("tabmixdata" in window) {
       let {restoreID} = window.tabmixdata;
@@ -1121,7 +1106,7 @@ TabmixSessionManager = {
   },
 
   savedPrefs: {},
-  observe: function SM_observe(aSubject, aTopic, aData) {
+  observe: function SM_observe(aSubject, aTopic) {
     switch (aTopic) {
       case "quit-application-requested":
         // TabView
@@ -1169,76 +1154,6 @@ TabmixSessionManager = {
           this.toggleRecentlyClosedWindowsButton();
         }, 0);
         break;
-      case "private-browsing-change-granted":
-        // Whether we restore the session upon resume will be determined by the
-        // usual startup prefs see Bug 660785
-        if (aData == "enter" && (this.prefBranch.getBoolPref("manager") ||
-                                 this.prefBranch.getBoolPref("crashRecovery"))) {
-          this.canQuitApplication(true, true);
-        }
-        break;
-      case "private-browsing":
-        switch (aData) {
-          case "enter":
-            // check if we need to close protected tab here
-            var needToCloseProtected = true;
-            try {
-              if (Services.prefs.getBoolPref("browser.privatebrowsing.keep_current_session"))
-                needToCloseProtected = false;
-            } catch (ex) { }
-            // noting to do here if we are not using tabmix session manager
-            if (!this.prefBranch.getBoolPref("manager") && !this.prefBranch.getBoolPref("crashRecovery")) {
-              // nsPrivateBrowsingService.js can not close protected tab we have to do it our self
-              // we only close this tab here after nsPrivateBrowsingService save the session
-              if (needToCloseProtected)
-                this.closeProtectedTabs();
-              this.globalPrivateBrowsing = true;
-              TMP_ClosedTabs.setButtonDisableState(true);
-              this.toggleRecentlyClosedWindowsButton();
-              break;
-            }
-            this.globalPrivateBrowsing = true;
-            if (needToCloseProtected)
-              this.closeProtectedTabs();
-            this.enableManager = this.prefBranch.getBoolPref("manager") && !this.globalPrivateBrowsing;
-            this.enableBackup = this.prefBranch.getBoolPref("crashRecovery") && !this.globalPrivateBrowsing;
-            this.updateSettings();
-            TMP_ClosedTabs.setButtonDisableState(true);
-            break;
-          case "exit":
-            // nsPrivateBrowsingService.js can not close protected tab we have to do it our self
-            this.closeProtectedTabs();
-            aSubject.QueryInterface(Ci.nsISupportsPRBool);
-            var quitting = aSubject.data;
-            if (quitting)
-              break;
-            // build-in sessionStore restore the session for us
-            if (!this.prefBranch.getBoolPref("manager") && !this.prefBranch.getBoolPref("crashRecovery")) {
-              this.globalPrivateBrowsing = false;
-              window.setTimeout(() => {
-                TMP_ClosedTabs.setButtonDisableState();
-                this.toggleRecentlyClosedWindowsButton();
-              }, 100);
-              break;
-            }
-            TMP_ClosedTabs.removeAllClosedTabs(); // to be on the safe side...
-            this.removeSession(this.gThisWin, this.gSessionPath[0]);
-            window.setTimeout(() => {
-              TMP_ClosedTabs.setButtonDisableState();
-            }, 0);
-            this.afterExitPrivateBrowsing = window.setTimeout(() => {
-              this.globalPrivateBrowsing = false;
-              this.windowClosed = false;
-              this.onSessionRestored(true);
-              this.updateSettings();
-              this.removeAttribute(this.gThisWin, "dontLoad");
-              this.saveStateDelayed();
-              this.updateClosedWindowsMenu("check");
-              this.afterExitPrivateBrowsing = null;
-            }, 0);
-            break;
-        }
-        break;
     }
   },
 
@@ -2288,9 +2203,7 @@ TabmixSessionManager = {
   },
 
   prepareSavedSessions: function SM_prepareSavedSessions() {
-    // make sure we delete closed windows that may exist if we exit Firefox
-    // from private browsing mode. we skip this command in windowIsClosing
-    // when entring private browsing mode
+    // make sure we delete closed windows
     this.deleteWithProp(this.initContainer(this.gSessionPath[0]), "dontLoad");
 
     // don't remove oldest session if last session was empty
@@ -2462,7 +2375,6 @@ TabmixSessionManager = {
     this.saveStateDelayed();
 
     // now that we open our tabs init TabView again
-    TMP_SessionStore.initService();
     if (this.tabViewInstalled)
       TabView.init();
 
@@ -3124,7 +3036,6 @@ TabmixSessionManager = {
       this.mergeWindows(state);
     }
 
-    // Firefox 20 introduced per-window private browsing mode
     // we restore multi-windows session to the same privacy state of the current window
     var windowEnum = Tabmix.windowEnumerator();
     var windowsList = [];
@@ -3590,12 +3501,7 @@ TabmixSessionManager = {
     if (!aOverwrite)
       closedTabsData = closedTabsData.concat(TMP_ClosedTabs.getClosedTabData);
     closedTabsData.splice(Services.prefs.getIntPref("browser.sessionstore.max_tabs_undo"));
-    if (Tabmix.isVersion(260))
-      TabmixSvc.SessionStore._windows[window.__SSi]._closedTabs = closedTabsData;
-    else {
-      let state = {windows: [{_closedTabs: closedTabsData, selected: 0}], _firstTabs: true};
-      TabmixSvc.ss.setWindowState(window, TabmixSvc.JSON.stringify(state), false);
-    }
+    TabmixSvc.SessionStore._windows[window.__SSi]._closedTabs = closedTabsData;
     TMP_ClosedTabs.setButtonDisableState();
   },
 
diff --git a/chrome/content/session/sessionStore.js b/chrome/content/session/sessionStore.js
index 5ebd4ed..fc27e80 100644
--- a/chrome/content/session/sessionStore.js
+++ b/chrome/content/session/sessionStore.js
@@ -7,21 +7,6 @@
  *
  */
 var TMP_SessionStore = { // jshint ignore:line
-   // make sure sessionstore is init
-  _ssInited: null,
-  initService: function TMP_ss_start() {
-    if (Tabmix.isVersion(250, 250) || this._ssInited)
-      return;
-    try {
-      TabmixSvc.ss.init(window);
-      this._ssInited = true;
-    } catch (ex) {
-      dump("nsSessionStore could not be initialized: " + ex + "\n");
-      Tabmix.assert(ex);
-      return;
-    }
-  },
-
   // get title for closed window from bookmark title or user tab title
   getTitleForClosedWindow: function TMP_ss_getTitleForClosedWindow(aUndoItem) {
     // if user already rename this item wo don't use other title
@@ -185,7 +170,7 @@ var TMP_SessionStore = { // jshint ignore:line
         } else {
           // we don't change any of sessionstore default setting
           // the user will be ask on exit what to do.
-          // (browser.warnOnRestart and browser.warnOnQuit are both true on default)
+          // browser.warnOnQuit default value is true
           Services.prefs.setBoolPref(TMP_SS_MANAGER, false);
           Services.prefs.setBoolPref(TMP_SS_CRASHRECOVERY, false);
         }
@@ -195,12 +180,8 @@ var TMP_SessionStore = { // jshint ignore:line
                                         [title, msg, "", "", buttons], window, start ? callBack : null);
       if (!start)
         callBack(result);
-    } else if (!Services.prefs.prefHasUserValue("browser.warnOnRestart") ||
-               !Services.prefs.prefHasUserValue("browser.warnOnQuit ")) {
-      // when user start new profile or update from firefox 2.0 profile
-      // browser.warnOnRestart and browser.warnOnQuit are both true on default
-      if (!Tabmix.isVersion(200))
-        Services.prefs.setBoolPref("browser.warnOnRestart", false);
+    } else if (!Services.prefs.prefHasUserValue("browser.warnOnQuit ")) {
+      // browser.warnOnQuit default value is true
       Services.prefs.setBoolPref("browser.warnOnQuit", false);
       TabmixSvc.sm.settingPreference = false;
     }
@@ -242,8 +223,6 @@ var TMP_SessionStore = { // jshint ignore:line
         let ss = Cc["@mozilla.org/browser/sessionstartup;1"].
         getService(Ci.nsISessionStartup);
         // when TMP session manager is enabled ss.doRestore is true only after restart
-        if (!Tabmix.isVersion(250, 250))
-          return ss.doRestore();
         ss.onceInitialized.then(function() {
           Tabmix.isWindowAfterSessionRestore = ss.doRestore();
         }).then(null, Tabmix.reportError);
@@ -255,8 +234,6 @@ var TMP_SessionStore = { // jshint ignore:line
   },
 
   setSessionRestore: function(aEnable) {
-    if (!Tabmix.isVersion(200))
-      Services.prefs.setBoolPref("browser.warnOnRestart", aEnable);
     Services.prefs.setBoolPref("browser.warnOnQuit", aEnable);
     Services.prefs.setBoolPref("browser.sessionstore.resume_from_crash", aEnable);
     if (aEnable)
@@ -491,7 +468,7 @@ var TMP_ClosedTabs = { // jshint ignore:line
           this.removeAllClosedTabs();
           break;
         } else if (aIndex == -2) {
-          this.SSS_restoerClosedTabs(this.count);
+          this.SSS_restoerAllClosedTabs();
           break;
         }
         // else do the default
@@ -499,9 +476,6 @@ var TMP_ClosedTabs = { // jshint ignore:line
       default:
         this.SSS_undoCloseTab(aIndex, aWhere, true);
     }
-
-    // Reset the number of tabs closed last time to the default.
-    Tabmix.setNumberOfTabsClosedLast(1);
   },
 
   removeAllClosedTabs: function() {
@@ -539,9 +513,10 @@ var TMP_ClosedTabs = { // jshint ignore:line
     return gBrowser.duplicateTabToWindow(gBrowser.mCurrentTab, null, state);
   },
 
-  SSS_restoerClosedTabs: function ct_SSS_restoerClosedTabs(closedTabCount) {
+  SSS_restoerAllClosedTabs: function ct_SSS_restoerAllClosedTabs() {
+    var closedTabCount = this.count;
     if (!PlacesUIUtils._confirmOpenInTabs(closedTabCount))
-      return null;
+      return;
 
     this.setButtonDisableState(true);
 
@@ -552,10 +527,10 @@ var TMP_ClosedTabs = { // jshint ignore:line
         blankTabs.push(gBrowser.tabs[i]);
     }
 
-    var tab, multiple = closedTabCount > 1;
+    var multiple = closedTabCount > 1;
     for (let i = 0; i < closedTabCount; i++) {
       let blankTab = blankTabs.pop() || null;
-      tab = this.SSS_undoCloseTab(0, "original", i === 0, blankTab, multiple);
+      this.SSS_undoCloseTab(0, "original", i === 0, blankTab, multiple);
     }
 
     // remove unused blank tabs
@@ -564,8 +539,6 @@ var TMP_ClosedTabs = { // jshint ignore:line
       blankTab.collapsed = true;
       gBrowser.removeTab(blankTab);
     }
-
-    return tab;
   },
 
   SSS_undoCloseTab: function(aIndex, aWhere, aSelectRestoredTab, aBlankTabToReuse, skipAnimation) {
@@ -626,29 +599,11 @@ var TMP_ClosedTabs = { // jshint ignore:line
       window.focus();
       gBrowser.TMP_selectNewForegroundTab(newTab, false, null, false);
     }
-
     return newTab;
   },
 
   undoCloseTab: function ct_undoCloseTab(aIndex, aWhere) {
-    let numberOfTabsToUndoClose = 1;
-    let index = Number(aIndex);
-    if (isNaN(index)) {
-      index = 0;
-      if (Tabmix._restoreMultipleTabs)
-        numberOfTabsToUndoClose = TabmixSvc.ss.getNumberOfTabsClosedLast(window);
-    } else if (index < 0 || index >= this.count)
-      return null;
-
-    let tab = null;
-    if (numberOfTabsToUndoClose > 1)
-      tab = this.SSS_restoerClosedTabs(numberOfTabsToUndoClose);
-    else
-      tab = this.SSS_undoCloseTab(index, aWhere || "original", true);
-
-    // Reset the number of tabs closed last time to the default.
-    Tabmix.setNumberOfTabsClosedLast(1);
-    return tab;
+    return this.SSS_undoCloseTab(aIndex || 0, aWhere || "original", true);
   }
 
 };
@@ -702,10 +657,7 @@ var TabmixConvertSession = { // jshint ignore:line
     fp.appendFilter(this.getString("rdffiles"), "*.rdf");
     fp.appendFilter(this.getString("sessionfiles"), "*session*.*");
     fp.appendFilters(nsIFilePicker.filterText | nsIFilePicker.filterAll);
-    if (Tabmix.isVersion(180))
-      fp.open(fpCallback);
-    else
-      fpCallback(fp.show());
+    fp.open(fpCallback);
   },
 
   convertFile: function cs_convertFile(aFileUri, aSilent) {
diff --git a/chrome/content/tab/tab.js b/chrome/content/tab/tab.js
index de01735..966281c 100644
--- a/chrome/content/tab/tab.js
+++ b/chrome/content/tab/tab.js
@@ -290,6 +290,12 @@ var TabmixTabbar = {
 
     if (tabstrip.style.maxHeight != tabstrip.style.height || tabstrip.style.maxHeight != newHeight + "px")
       this.setHeightByPixels(newHeight);
+
+    // fix multi-row background on windows XP
+    if (this.updateAppearanceOnce) {
+      this.updateAppearanceOnce = false;
+      TabsInTitlebar.updateAppearance(true);
+    }
   },
 
   setHeightByPixels: function TMP_setHeightByPixels(newHeight) {
@@ -452,10 +458,7 @@ var TabmixTabbar = {
       let selectedIndex = visibleTabs.indexOf(selected);
       if (selectedIndex > 0)
         prev = visibleTabs[selectedIndex - 1];
-      if (Tabmix.isVersion(220))
-        next = tabBar._afterSelectedTab;
-      else if (selectedIndex < visibleTabs.length - 1)
-        next = visibleTabs[selectedIndex + 1];
+      next = tabBar._afterSelectedTab;
     }
 
     if (multibar) {
@@ -463,7 +466,7 @@ var TabmixTabbar = {
       tabRow = Tabmix.tabsUtils.getTabRowNumber(selected, topY);
     }
     updateAtt(prev, "beforeSelectedTab", "beforeselected", TabmixSvc.australis, "tabmix-");
-    updateAtt(next, "afterSelectedTab", "afterselected", Tabmix.isVersion(220), "");
+    updateAtt(next, "afterSelectedTab", "afterselected", true, "");
   },
 
   getRowHeight: function TMP_getRowHeight(tabsPosition) {
@@ -569,6 +572,10 @@ var TabmixTabbar = {
 
 }; // TabmixTabbar end
 
+XPCOMUtils.defineLazyGetter(TabmixTabbar, "updateAppearanceOnce", function() {
+  return navigator.oscpu.startsWith("Windows NT 5.1");
+});
+
 Tabmix.tabsUtils = {
   initialized: false,
   _tabmixPositionalTabs: {},
@@ -679,6 +686,9 @@ Tabmix.tabsUtils = {
   handleEvent: function(aEvent) {
     switch (aEvent.type) {
       case "MozMouseHittest":
+        if (Tabmix.keyModifierDown && !document.hasFocus()) {
+          Tabmix.keyModifierDown = false;
+        }
         if (aEvent.button === 0 && (Tabmix.keyModifierDown || aEvent.detail > 0))
           aEvent.stopPropagation();
         break;
@@ -965,8 +975,7 @@ Tabmix.tabsUtils = {
         // overflow/underflow handler from tabbrowser-arrowscrollbox binding
         if (val) {
           tabBar._positionPinnedTabs();
-          if (Tabmix.isVersion(190))
-            tabBar._handleTabSelect(false);
+          tabBar._handleTabSelect(false);
         } else {
           if (tabBar._lastTabClosedByMouse)
             tabBar._expandSpacerBy(tabstrip._scrollButtonDown.clientWidth);
@@ -1213,8 +1222,6 @@ gTMPprefObserver = {
       if (condition)
         this.OBSERVING.push(pref);
     }.bind(this);
-    addObserver("browser.warnOnRestart", !Tabmix.isVersion(200));
-    addObserver("browser.tabs.autoHide", !Tabmix.isVersion(230));
     addObserver("layout.css.devPixelsPerPx", TabmixSvc.australis);
     addObserver("browser.tabs.onTop", !Tabmix.isVersion(290));
     addObserver("browser.tabs.closeButtons", !Tabmix.isVersion(310));
@@ -1486,7 +1493,6 @@ gTMPprefObserver = {
         TMP_ClosedTabs.setButtonDisableState(state);
         break;
       }
-      case "browser.warnOnRestart":
       case "browser.warnOnQuit":
       case "browser.sessionstore.resume_from_crash":
         if (!Services.prefs.getBoolPref(prefName))
@@ -2043,7 +2049,8 @@ gTMPprefObserver = {
       if (val) {
         Tabmix.setItem("menu_newRemoteWindow", "hidden", true);
         Tabmix.setItem("menu_newNonRemoteWindow", "hidden", true);
-      } else {
+      } else if (typeof gRemoteTabsUI == "object" &&
+                 document.getElementById("menu_newNonRemoteWindow")) {
         gRemoteTabsUI.init();
       }
       Tabmix.setItem("Tools:RemoteWindow", "disabled", val);
@@ -2071,16 +2078,7 @@ gTMPprefObserver = {
 
   setAutoHidePref: function() {
     TabmixTabbar.hideMode = Tabmix.prefs.getIntPref("hideTabbar");
-    if (Tabmix.isVersion(230)) {// after Bug 855370
-      gBrowser.tabContainer.updateVisibility();
-      return;
-    }
-    var autoHide = TabmixTabbar.hideMode !== 0;
-    if (autoHide != Services.prefs.getBoolPref("browser.tabs.autoHide")) {
-      Services.prefs.setBoolPref("browser.tabs.autoHide", autoHide);
-      if (TabmixTabbar.hideMode == 1)
-        gBrowser.tabContainer.updateVisibility();
-    }
+    gBrowser.tabContainer.updateVisibility();
   },
 
   setTabBarVisibility: function TMP_PO_setTabBarVisibility() {
diff --git a/chrome/content/tab/text.xml b/chrome/content/tab/text.xml
deleted file mode 100644
index 0fe022d..0000000
--- a/chrome/content/tab/text.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-
-<bindings id="tmp_textbindings"
-          xmlns="http://www.mozilla.org/xbl"
-          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-          xmlns:xbl="http://www.mozilla.org/xbl">
-
-  <binding id="tmp-text-link" extends="chrome://global/content/bindings/text.xml#text-link">
-    <implementation>
-      <constructor>
-        <![CDATA[
-           var topWin = Services.wm.getMostRecentWindow("navigator:browser");
-           if (!topWin || topWin.Tabmix.isVersion(200))
-             return;
-           eval("this.open =" + this.open.toString().replace(
-             'if (uri)',
-             'if (typeof win.Tabmix_openURL != "function") win.Tabmix_openURL = Tabmix.getTopWin().Tabmix.openURL.bind(Tabmix); if (uri)'
-           ).replace(
-              'win.open(uri.spec);',
-              'win.Tabmix_openURL(uri.spec, aEvent);'
-           ).replace(
-              'win.open(href);',
-              'win.Tabmix_openURL(href, aEvent);'
-           ));
-        ]]>
-      </constructor>
-    </implementation>
-  </binding>
-
-</bindings>
diff --git a/chrome/content/tabmix.js b/chrome/content/tabmix.js
index a008a4c..c11f0cb 100644
--- a/chrome/content/tabmix.js
+++ b/chrome/content/tabmix.js
@@ -9,29 +9,23 @@
 Tabmix.startup = function TMP_startup() {
   var cmdNewWindow = document.getElementById("cmd_newNavigator");
   var originalNewNavigator = cmdNewWindow.getAttribute("oncommand");
-  // Firefox 20+ implemented per-window Private Browsing
   // When in single window mode allow one normal window and one private window.
   // otherwise open new tab in most recent window of the appropriate type
-  if (this.isVersion(200)) {
-    this._openNewTab = function(aPrivate) {
-      if (this.singleWindowMode) {
-        let win = this.RecentWindow.getMostRecentBrowserWindow({private: aPrivate});
-        if (win) {
-          win.focus();
-          win.BrowserOpenTab();
-          return false;
-        }
+  this._openNewTab = function(aPrivate) {
+    if (this.singleWindowMode) {
+      let win = this.RecentWindow.getMostRecentBrowserWindow({private: aPrivate});
+      if (win) {
+        win.focus();
+        win.BrowserOpenTab();
+        return false;
       }
-      return true;
-    };
-    let command = document.getElementById("Tools:PrivateBrowsing");
-    let originalCode = command.getAttribute("oncommand");
-    Tabmix.setItem(command, "oncommand", "if (Tabmix._openNewTab(true)) {" + originalCode + "}");
-    Tabmix.setItem(cmdNewWindow, "oncommand", "if (Tabmix._openNewTab(false)) {" + originalNewNavigator + "}");
-  } else {
-    Tabmix.setItem(cmdNewWindow, "oncommand", "if (Tabmix.singleWindowMode) BrowserOpenTab(); " +
-                                          "else {" + originalNewNavigator + "}");
-  }
+    }
+    return true;
+  };
+  let command = document.getElementById("Tools:PrivateBrowsing");
+  let originalCode = command.getAttribute("oncommand");
+  Tabmix.setItem(command, "oncommand", "if (Tabmix._openNewTab(true)) {" + originalCode + "}");
+  Tabmix.setItem(cmdNewWindow, "oncommand", "if (Tabmix._openNewTab(false)) {" + originalNewNavigator + "}");
 
   TabmixContext.toggleEventListener(true);
 
@@ -531,13 +525,7 @@ var TMP_eventListener = {
     *  if browser.tabs.autoHide is true we need to make sure extensions.tabmix.hideTabbar
     *  is set to 1 "Hide tabbar when i have only one tab":
     */
-    if (!Tabmix.isVersion(230) &&
-        Services.prefs.getBoolPref("browser.tabs.autoHide") && TabmixTabbar.hideMode === 0) {
-      TabmixTabbar.hideMode = 1;
-      Tabmix.prefs.setIntPref("hideTabbar", TabmixTabbar.hideMode);
-    } else {
-      gTMPprefObserver.setAutoHidePref();
-    }
+    gTMPprefObserver.setAutoHidePref();
 
     if (TabmixTabbar.hideMode == 2)
       gBrowser.tabContainer.visible = false;
@@ -623,8 +611,8 @@ var TMP_eventListener = {
         fullScrToggler.addEventListener("mouseover", this._expandCallback, false);
         fullScrToggler.addEventListener("dragenter", this._expandCallback, false);
         fullScrToggler.hidden = true;
-        let bottombox = document.getElementById("browser-bottombox");
-        bottombox.appendChild(fullScrToggler);
+        let main = document.getElementById("main-window");
+        main.appendChild(fullScrToggler);
 
         if (Tabmix.isVersion(400)) {
           let $LF = '\n    ';
@@ -632,7 +620,7 @@ var TMP_eventListener = {
             'this._isChromeCollapsed = true;',
             'TMP_eventListener._updateMarginBottom(gNavToolbox.style.marginTop);' + $LF +
             '$&' + $LF +
-            'TMP_eventListener.toggleTabbarVisibility(false, aAnimate);'
+            'TMP_eventListener.toggleTabbarVisibility(false);'
           ).toCode();
         } else {
           Tabmix.changeCode(FullScreen, "FullScreen.sample")._replace(
@@ -712,7 +700,7 @@ var TMP_eventListener = {
   },
 
   // for tabs bellow content
-  toggleTabbarVisibility: function(aShow, aAnimate) {
+  toggleTabbarVisibility: function(aShow) {
     let fullScrToggler = document.getElementById("fullscr-bottom-toggler");
     if (TabmixTabbar.position != 1 || !fullScrToggler) {
       return;
@@ -727,19 +715,6 @@ var TMP_eventListener = {
       bottomToolbox.style.marginBottom =
           -(bottomToolbox.getBoundingClientRect().height +
           bottombox.getBoundingClientRect().height) + "px";
-
-      if (Tabmix.isVersion(400) && aAnimate &&
-          Services.prefs.getBoolPref("browser.fullscreen.animate")) {
-        // Hide the fullscreen toggler until the transition ends.
-        let listener = function() {
-          gNavToolbox.removeEventListener("transitionend", listener, true);
-          if (FullScreen._isChromeCollapsed)
-            fullScrToggler.hidden = false;
-        };
-        gNavToolbox.addEventListener("transitionend", listener, true);
-        fullScrToggler.hidden = true;
-      }
-
       // Until Firefox 41 changing the margin trigger resize event that calls
       // updateTabbarBottomPosition
       if (Tabmix.isVersion(410))
@@ -852,8 +827,6 @@ var TMP_eventListener = {
     if (updateNow)
       this.onTabClose_updateTabBar(tab);
 
-    Tabmix.countClosedTabs(tab);
-
     if (Tabmix.selectedTab == tab) {
       Tabmix.selectedTab = null;
       Tabmix.userTypedValue = "";
@@ -875,9 +848,17 @@ var TMP_eventListener = {
 
     var tabBar = gBrowser.tabContainer;
     function _updateTabstrip() {
-      if (tabBar.getAttribute("multibar") == "true" &&
-          Tabmix.tabsUtils.lastTabRowNumber < TabmixTabbar.visibleRows)
-        Tabmix.tabsUtils.updateVerticalTabStrip();
+      // underflow not always fires when Classic theme restorer installed
+      let multibar = tabBar.getAttribute("multibar");
+      if (multibar) {
+        let lastTabRowNumber = Tabmix.tabsUtils.lastTabRowNumber;
+        if (multibar == "true" &&
+            lastTabRowNumber < TabmixTabbar.visibleRows ||
+            multibar == "scrollbar" && Tabmix.extensions.ctr &&
+            lastTabRowNumber <= Tabmix.prefs.getIntPref("tabBarMaxRow")) {
+          Tabmix.tabsUtils.updateVerticalTabStrip();
+        }
+      }
       TabmixTabbar.updateBeforeAndAfter();
     }
 
@@ -936,25 +917,11 @@ var TMP_eventListener = {
     if (tab.hasAttribute("showbutton") &&
         gBrowser.tabContainer.getAttribute("closebuttons") == "activetab")
       tab.style.removeProperty("width");
-
-    // tabBar.updateCurrentBrowser call tabBar._setPositionalAttributes after
-    // TabSelect event.
-    // Since Firefox 220 we call updateBeforeAndAfter from _setPositionalAttributes
-    if (!Tabmix.isVersion(220))
-      TabmixTabbar.updateBeforeAndAfter();
   },
 
   onTabMove: function TMP_EL_onTabMove(aEvent) {
     var tab = aEvent.target;
 
-    // workaround for bug 852952
-    // transitionend is not fired if the new tab is move before transitionend
-    // fixed by bug 850163 - Firefox 23
-    if (Tabmix.isVersion(210) && tab.getAttribute("fadein") == "true" &&
-        !tab._fullyOpen && !tab.closing) {
-      gBrowser.tabContainer._handleNewTab(tab);
-    }
-
     // moveTabTo call _positionPinnedTabs when pinned tab moves
     if (!tab.pinned)
       TabmixTabbar.setFirstTabInRow();
diff --git a/chrome/content/utils.js b/chrome/content/utils.js
index c901d2b..bc5e963 100644
--- a/chrome/content/utils.js
+++ b/chrome/content/utils.js
@@ -24,7 +24,7 @@ var Tabmix = { // jshint ignore:line
   // Show/hide one item (specified via name or the item element itself).
   showItem: function(aItemOrId, aShow) {
     var item = typeof (aItemOrId) == "string" ? document.getElementById(aItemOrId) : aItemOrId;
-    if (item && item.hidden == aShow)
+    if (item && item.hidden == Boolean(aShow))
       item.hidden = !aShow;
   },
 
@@ -75,7 +75,7 @@ var Tabmix = { // jshint ignore:line
     //   user are not in single window mode or
     //   there is no other window with the same privacy type
     return !this.getSingleWindowMode() ||
-      this.isVersion(200) && !this.RecentWindow.getMostRecentBrowserWindow({private: isPrivate});
+      !this.RecentWindow.getMostRecentBrowserWindow({private: isPrivate});
   },
 
   lazy_import: function(aObject, aName, aModule, aSymbol, aFlag, aArg) {
@@ -238,11 +238,8 @@ var Tabmix = { // jshint ignore:line
     Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
     Components.utils.import("resource://gre/modules/Services.jsm");
     this.lazy_import(window, "TabmixSvc", "Services", "TabmixSvc");
-    if (this.isVersion(200)) {
-      let resource = this.isVersion(210) ? "resource:///" : "resource://gre/";
-      XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow",
-                 resource + "modules/RecentWindow.jsm");
-    }
+    XPCOMUtils.defineLazyModuleGetter(this, "RecentWindow",
+                                      "resource:///modules/RecentWindow.jsm");
 
     window.addEventListener("unload", function tabmix_destroy() {
       window.removeEventListener("unload", tabmix_destroy, false);
@@ -251,7 +248,8 @@ var Tabmix = { // jshint ignore:line
 
     var methods = ["changeCode", "setNewFunction", "nonStrictMode",
                    "getObject", "log", "getCallerNameByIndex", "callerName",
-                   "clog", "isCallerInList", "obj", "assert", "trace", "reportError"];
+                   "clog", "isCallerInList", "stackTrace",
+                   "obj", "assert", "trace", "reportError"];
     methods.forEach(function(id) {
       this[id] = function TMP_console_wrapper() {
         return this._getMethod(id, arguments);
diff --git a/chrome/locale/ar/misc.dtd b/chrome/locale/ar/misc.dtd
new file mode 100644
index 0000000..28f324d
--- /dev/null
+++ b/chrome/locale/ar/misc.dtd
@@ -0,0 +1,17 @@
+<!ENTITY searchTabFocus.label "Load in background">
+<!ENTITY searchTabFocus.accesskey "B">
+<!ENTITY renametab.panel.title "تعديل عنوان اللسان">
+<!ENTITY renametab.reset.label "إعادة العنوان الأصلي">
+<!ENTITY title.label "العنوان">
+<!ENTITY default.label "الأصلي">
+<!ENTITY renametab.permanently.label "تغيير اسم هذا اللسان بغض النظر عن عنوانه">
+<!ENTITY renametab.permanently.tooltip "tab with history - the new name will remain when address changes">
+<!ENTITY forum.label "Forum">
+<!ENTITY faq.label "الأسئلة الشائعة">
+<!ENTITY help.label "مساعدة">
+<!ENTITY tabmix.label "تاب مٍكس بلس">
+<!ENTITY reloadtime.label1 "اختر الوقت من القوائم أدناه أو أدخِل الوقت مباشرة من لوحة المفاتيح">
+<!ENTITY specifyreload.label "حدد وقت إعادة التحميل">
+<!ENTITY sanitizer.entry "جلسات تاب مِكس بلس المحفوظة">
+<!ENTITY sanitizer.entry.accesskey "ت">
+<!ENTITY sanitizer.entry.confirm "هل أنت متأكد من رغبتك في مسح جميع بيانات جلساتك المحفوظة متضمنة النُسَخ الإحتياطية؟">
diff --git a/chrome/locale/ar/pref-appearance.dtd b/chrome/locale/ar/pref-appearance.dtd
new file mode 100644
index 0000000..c4edd46
--- /dev/null
+++ b/chrome/locale/ar/pref-appearance.dtd
@@ -0,0 +1,20 @@
+<!ENTITY tabStyles.label "Styles">
+<!ENTITY styles.label "أنماط مخصّصة">
+<!ENTITY currentTab.label "اللسان المختار">
+<!ENTITY unloadedTabs.label "الألسنة غير المحمّلة">
+<!ENTITY unreadTab.label "الألسنة غير المقروءة">
+<!ENTITY hideRGB.label "Hide RGB">
+<!ENTITY showRGB.label "Show RGB">
+<!ENTITY unreadAfterReload.label "set tab as unread after reload">
+<!ENTITY disableBackground.label "Disable custom background colors">
+<!ENTITY squaredTabs.label "Apply background color for squared tabs">
+<!ENTITY otherTabs.label "الألسنة الأخرى">
+<!ENTITY italic.label "مائل">
+<!ENTITY bold.label "عريض">
+<!ENTITY underline.label "خط سفلي">
+<!ENTITY textcolor.label "لون النص">
+<!ENTITY bgColor.label "لون الخلفية">
+<!ENTITY bgTopColor.label "top">
+<!ENTITY bgBottomColor.label "bottom">
+<!ENTITY useThis.label "استخدام هذا النمط لـ">
+<!ENTITY opacity.label "الإعتام">
diff --git a/chrome/locale/ar/pref-filetype.dtd b/chrome/locale/ar/pref-filetype.dtd
new file mode 100644
index 0000000..b72f2fb
--- /dev/null
+++ b/chrome/locale/ar/pref-filetype.dtd
@@ -0,0 +1,5 @@
+<!ENTITY filetype.options "محرّر أنواع الملفات">
+<!ENTITY filetype.add "أضِف">
+<!ENTITY filetype.edit "عدّل">
+<!ENTITY filetype.delete "احذف">
+<!ENTITY filetype.new "نوع ملف جديد:">
diff --git a/chrome/locale/ar/pref-tabmix.dtd b/chrome/locale/ar/pref-tabmix.dtd
new file mode 100644
index 0000000..044cb11
--- /dev/null
+++ b/chrome/locale/ar/pref-tabmix.dtd
@@ -0,0 +1,312 @@
+<!ENTITY tab.links "الروابط">
+<!ENTITY tab.events "الأحداث">
+<!ENTITY tab.mouse "الفأرة">
+<!ENTITY tab.appearance "العرض">
+<!ENTITY tab.menu "القوائم">
+<!ENTITY tab.session "الجلسة">
+<!ENTITY tab.incompatible "خطأ">
+<!ENTITY apply.label "طبّق">
+<!ENTITY settings.export "صدّر الإعدادات">
+<!ENTITY settings.import "استورد الإعدادات">
+<!ENTITY settings.sync "Sync Preferences">
+<!ENTITY settings.default "استعد الإعدادات المبدئية">
+<!ENTITY settings.revert "Revert">
+<!ENTITY generalWindowOpen.label "فتح الروابط التي تُفتح في نافذة جديدة في:">
+<!ENTITY externalLink.useSeparate.label "استخدام تفضيل منفصل للروابط القادمة من تطبيقات أخرى">
+<!ENTITY externalLinkTarget.label "فتح الروابط القادمة من تطبيقات أخرى في:">
+<!ENTITY linkTarget.tab "لسان جديد">
+<!ENTITY linkTarget.window "نافذة جديدة">
+<!ENTITY linkTarget.current "اللسان الحالي">
+<!ENTITY linkTarget.accesskey "ح">
+<!ENTITY divertedWindowOpen.label "JavaScript & Popup restriction:">
+<!ENTITY divertedWindowOpen.all "فتح جميع النوافذ المنبثقة في ألسنة">
+<!ENTITY divertedWindowOpen.some "السماح بتحجيم النوافذ المنبثقة">
+<!ENTITY divertedWindowOpen.none "السماح بجميع النوافذ المنبثقة">
+<!ENTITY linkTarget.label "Open links with a target attribute in current tab">
+<!ENTITY targetIsFrame.label "Open links with target to existing frame in the current tab">
+<!ENTITY download.label "منع الألسنة الفارغة عند تنزيل ملفات">
+<!ENTITY edit.label "عدّل">
+<!ENTITY speLink.label "الإجبار على الفتح في لسان جديد:">
+<!ENTITY speLink.none "لا شيء">
+<!ENTITY speLink.allLinks "جميع الروابط">
+<!ENTITY speLink.external "الروابط المؤدية لمواقع أخرى">
+<!ENTITY singleWindow.label "تفعيل نمط النافذة الموحدة">
+<!ENTITY newTabs.label "الألسنة الجديدة">
+<!ENTITY tabOpen.label "فتح الألسنة">
+<!ENTITY tabFocus.label "Tab Focus">
+<!ENTITY tabClose.label "إغلاق الألسنة">
+<!ENTITY tabMerge.label "دمج الألسنة">
+<!ENTITY tabFeature.label "ميزات الألسنة">
+<!ENTITY newtab.label "تحميل في اللسان الجديد:">
+<!ENTITY replaceLastTabWith.label "عندما أقوم بإغلاق آخر لسان استبدله بـ">
+<!ENTITY newtab.blank "صفحة فارغة">
+<!ENTITY newtab.home "صفحة بداية فيرفكس">
+<!ENTITY newtab.current "الصفحة المُختارة">
+<!ENTITY newtab.duplicate "تكرار الصفحة المختارة مع تأريخها">
+<!ENTITY newtab.location.1 "صفحة لسان جديد">
+<!ENTITY newtab.placeholder.label "Default New Tab Page">
+<!ENTITY location.label.1 "العنوان">
+<!ENTITY focusContent.label "Focus content when loading non blank page">
+<!ENTITY openTabNext.label "فتح اللسان الجديد بجوار اللسان المختار">
+<!ENTITY openOtherTabNext.label "فتح الألسنة الأخرى بجوار اللسان المختار">
+<!ENTITY relatedAfterCurrent.label "فقط إذا كان له علاقة باللسان المختار">
+<!ENTITY openTabNext.tooltip1 "[a][b][c][1][2][3] -> [a][1][2][3][b][c]">
+<!ENTITY openDuplicateNext.label "فتح الألسنة المكرّرة بجوار الأصلية">
+<!ENTITY openTabNext.tooltip "[a][b][c][1][2][3] -> [a][3][2][1][b][c]">
+<!ENTITY openTabNextInverse.label "تغيير ترتيب الفتح">
+<!ENTITY openTabNextInverse.tooltip "[a][3][2][1][b][c] -> [a][1][2][3][b][c]">
+<!ENTITY openTabNextInverse.tooltip1 "فتح اللسان الجديد بجوار اللسان المفتوح مؤخرا من اللسان الحالي">
+<!ENTITY lockTabs.label "إيصاد الألسنة">
+<!ENTITY lockNewTabs.label "إيصاد الألسنة الجديدة">
+<!ENTITY lockAppTabs.label "إيصاد الألسنة المُثبّتة">
+<!ENTITY updateLockState.label "Apply changes to open tabs">
+<!ENTITY openNewTab.label "فتح ألسنة من:">
+<!ENTITY openBookmarks.label "العلامات">
+<!ENTITY openPlacesGroups.label "Groups of bookmarks/history">
+<!ENTITY openPlacesGroups.tooltip "Don't override tabs when opening a group of bookmarks/history">
+<!ENTITY openHistory.label "التأريخ">
+<!ENTITY openUrl.label "شريط العنوان">
+<!ENTITY openSearch.label "شريط البحث">
+<!ENTITY middlecurrent1.label "Middle-click or Control-click opens items in current tab">
+<!ENTITY middlecurrent.tooltip "Only for bookmarks, history, links forced to open in new tab">
+<!ENTITY tabFocus.caption "Focus/Select tabs that open from:">
+<!ENTITY selectTab.label "الروابط">
+<!ENTITY selectDivertedTab.label "Diverted windows">
+<!ENTITY selectTabFromExternal.label "Other applications">
+<!ENTITY selectTabCommand.label "New tab commands">
+<!ENTITY contextMenuSearch.label "Context menu search for">
+<!ENTITY selectTabBH.label "العلامات/التأريخ">
+<!ENTITY duplicateTab.label "Duplicate Tab">
+<!ENTITY inversefocus1.label "Inverse Middle-click or Control-click focus of:">
+<!ENTITY warning.caption.label "التنبيه">
+<!ENTITY warnOnCloseProtected.label "نبهني عند إغلاق نافذة تحتوي ألسنة محمية">
+<!ENTITY warnOnCloseWindow.label "نبهني عند إغلاق نافذة تحتوي عدة ألسنة">
+<!ENTITY lasttab.caption.label "إغلاق اللسان الأخير">
+<!ENTITY keepWindow.label.3.1 "لا تغلق النافذة عند إغلاق اللسان الأخير">
+<!ENTITY keeptab.label "منع اللسان الأخير من الانغلاق">
+<!ENTITY closeOnMerge.label "إغلاق النوافذ بمجرد دمجها">
+<!ENTITY warnOnMerge.label "التنبيه عند إغلاق ألسنة غير مُدمجة">
+<!ENTITY currenttab.caption.label "إغلاق اللسان الحالي">
+<!ENTITY focusTab.labelBegin "عند إغلاق اللسان الحالي، انتقل إلى:">
+<!ENTITY focusTab.firstTab "اللسان الأول">
+<!ENTITY focusTab.leftTab "اللسان الأيسر">
+<!ENTITY focusTab.rightTab "اللسان الأيمن">
+<!ENTITY focusTab.lastTab "اللسان الأخير">
+<!ENTITY focusTab.lastSelectedTab "آخر لسان مختار">
+<!ENTITY focusTab.openerTab "Opener/right tab">
+<!ENTITY focusTab.openerTab.rtl "Opener/left tab">
+<!ENTITY focusTab.lastOpenedTab "أخر لسان مفتوح">
+<!ENTITY undoClose.label "Enable undo close tabs">
+<!ENTITY undoCloseCache.label "Max number of closed tabs to remember:">
+<!ENTITY undoClosepos.label "Restore the tab's original position">
+<!ENTITY menuonlybutton.label "Make the toolbar button display only a list">
+<!ENTITY ctrltab.label "Ctrl-Tab navigates tabs in the most recently used order">
+<!ENTITY cmdtab.label "Cmd-Tab navigates tabs in the most recently used order">
+<!ENTITY ctrltab.tabPreviews "عرض معاينة للسان">
+<!ENTITY ctrltab.popup "Ctrl-Tab displays a tab list popup menu">
+<!ENTITY cmdtab.popup "Cmd-Tab displays a tab list popup menu">
+<!ENTITY tabpopup.mouse "Tab list responds to the mouse">
+<!ENTITY mergeNoTabSelection.label "Merge windows when no tabs are selected">
+<!ENTITY mergeTabSelection.label "Merging after selecting tabs">
+<!ENTITY mergeall.label "دمج جميع النوافذ في نافذة واحدة">
+<!ENTITY mergelastfocused.label "دمج النافذة الحالية فقط مع آخر نافذة مختارة">
+<!ENTITY mergePopups.label "Also take popup windows">
+<!ENTITY popupNextToOpener.label "Place popups next to their openers">
+<!ENTITY activateSlideshow.label "Pressing #1 rotates tabs every">
+<!ENTITY toggleAnimation.label "Disable Open/Close tab animation">
+<!ENTITY reloadEvery.matchAddress.label "Reload a tab regardless of its address">
+<!ENTITY reloadEvery.onReloadButton.label "Show Reload Every menu on Reload button">
+<!ENTITY seconds.label "ثانية\ثوان">
+<!ENTITY minutes.label "دقيقة\دقائق">
+<!ENTITY tabBarAppearance.label "شريط الألسنة">
+<!ENTITY tabAppearance.label "اللسان">
+<!ENTITY toolBarAppearance.label "شريط الأدوات">
+<!ENTITY show.ontabbar.label "اعرض في شريط الألسنة">
+<!ENTITY show.ontab.label "اعرض في اللسان">
+<!ENTITY dragNewTabButton.tooltip "Drag 'New Tab' button to your tab-bar to enable this option.">
+<!ENTITY hideTabBarButton.label "زر غلق اللسان">
+<!ENTITY newTabButton.label "زر فتح لسان جديد">
+<!ENTITY newTabButton.posiotion.left.label "في الجانب الأيسر">
+<!ENTITY newTabButton.posiotion.right.label "في الجانب الأيمن">
+<!ENTITY newTabButton.posiotion.afterlast.label "بعد اللسان الأخير">
+<!ENTITY allTabsButton.label "جميع أزرار الألسنة">
+<!ENTITY tabBarSpace.label "مساحة إضافية في كلا الجانبين">
+<!ENTITY tabBarSpace.tooltip "For clicking and dropping something on tab bar">
+<!ENTITY tabbar.label "Hide tab bar when only one tab is open">
+<!ENTITY moveTabOnDragging.label "When dragging a tab move it directly">
+<!ENTITY dropIndicator.label "Drop indicator">
+<!ENTITY dropIndicator-native.label "Native style">
+<!ENTITY dropIndicator-builtin.label "Built-in style">
+<!ENTITY verticalTabbar.description "Use treeStyleTab or VerticalTab extension to control these preferences.">
+<!ENTITY tabBarPosition.label "الموضع:">
+<!ENTITY tabBarPosition.top.label "علوي (فوق المحتوى)">
+<!ENTITY tabBarPosition.bottom.label "سفلي (تحت المحتوى)">
+<!ENTITY tabScroll.label "عندما لا تلائم الألسنة العرض:">
+<!ENTITY tabScroll.none "يمكن تمريرها دون ظهور أزرار">
+<!ENTITY tabScroll.leftRightButtons "يمكن تمريرها مع ظهور أزرار">
+<!ENTITY tabScroll.rightButtons "يمكن تمريرها مع ظهور أزرار على اليمين">
+<!ENTITY tabScroll.rightButtons.rtl "يمكن تمريرها مع ظهور أزرار على اليسار">
+<!ENTITY tabScroll.multibar "أظهر الألسنة في صفوف متعددة">
+<!ENTITY maxrow.label "أقصى عدد صفوف يمكن عرضه:">
+<!ENTITY pinnedTabScroll.label "Allow pinned tabs to scroll">
+<!ENTITY offsetAmountToScroll.label "When scrolling show part of next out-of-sight tab">
+<!ENTITY smoothScroll.label "تفعيل التمرير السلس">
+<!ENTITY scrolldelay.label "مُهلة التمرير (الوقت بين تكرار التمرير)">
+<!ENTITY currenttab.style.label "اللسان المختار">
+<!ENTITY unloadedtabs.style.label "الألسنة غير المحملة">
+<!ENTITY unreadtabs.style.label "الألسنة غير المقروءة">
+<!ENTITY othertabs.style.label "الألسنة الأخرى">
+<!ENTITY setstyles.label "تخصيص الأنماط">
+<!ENTITY extraIcons.label1 "أيقونات">
+<!ENTITY extraIcons.locked "القفل">
+<!ENTITY extraIcons.protected "الحماية">
+<!ENTITY extraIcons.autoreload "إعادة التحميل التلقائي">
+<!ENTITY extraIcons.hideonpinned "Hide on pinned tabs">
+<!ENTITY progressMeter.label "شريط التحميل على الألسنة">
+<!ENTITY showTabX.labelBegin "زر إغلاق اللسان">
+<!ENTITY showTabX.left "إظهار زر الإغلاق في اليسار">
+<!ENTITY showTabX.rtl "إظهار زر الإغلاق في اليمين">
+<!ENTITY milliseconds.label "مللي ثانية">
+<!-- LOCALIZATION NOTE          change this only if you need to change the width -->
+<!ENTITY showTabX.popup.width "13em">
+<!ENTITY showTabX.always "على الكل">
+<!ENTITY showTabX.current "على المختار">
+<!ENTITY showTabX.hover "on pointed for">
+<!ENTITY showTabX.alwaysExeption "on all tabs wider than">
+<!ENTITY showTabX.currentHover "on current & pointed for">
+<!ENTITY minWidth.label "عرض اللسان:">
+<!ENTITY widthTo.label "إلى">
+<!ENTITY widthPixels.label "بكسل">
+<!ENTITY onLeftDisabled.label "Can't place button on left side with the current theme">
+<!ENTITY flexTabs.label "عرض اللسان يلائم عنوان اللسان">
+<!ENTITY bookastitle.label "استخدام اسم العلامة كعنوان للسان">
+<!-- LOCALIZATION NOTE:          change this only if you need to change the width -->
+<!ENTITY toolbar.description.width "21em">
+<!ENTITY toolbar.description "You can customize which Tab Mix Plus buttons to show in your Toolbar">
+<!ENTITY toolbar.button.label "تخصيص">
+<!ENTITY toolbar.visible.caption "الأزرار الظاهرة">
+<!ENTITY toolbar.novisible.label "ليس هناك أزرار ظاهرة">
+<!ENTITY toolbar.hidden.caption "الأزرار المخفية">
+<!ENTITY toolbar.nohidden.label "ليس هناك أزرار مخفية">
+<!ENTITY mouseGesture.label "إيماءات الفأرة">
+<!ENTITY mouseClick.label "النقر بالفأرة">
+<!ENTITY mouseHoverSelect.labelBegin "Select tab pointed for">
+<!ENTITY tabFlip.label "Switch to last selected tab when clicking current one">
+<!ENTITY tabFlip.delay "Use a delay of">
+<!ENTITY clickFocus.label "Mouse click (down and release) to select a tab">
+<!ENTITY removeEntries.label "Remove Tab Mix Plus menu list entries using middle-click">
+<!ENTITY lockTabSizingOnClose.label "When closing a tab, other tabs should not resize until cursor leaves toolbar region">
+<!ENTITY removeEntries.tooltip "Includes closed tabs, closed windows, and saved sessions">
+<!ENTITY tabbarscrolling.caption "When scrolling over the tab-bar">
+<!ENTITY tabbarscrolling.holdShift.label "Hold Shift while scrolling to switch between these options">
+<!ENTITY tabbarscrolling.selectTab.label "Change selected tab">
+<!ENTITY tabbarscrolling.scrollAllTabs.label "Scroll all tabs">
+<!ENTITY tabbarscrolling.inverse.label "عكس اتجاه التمرير">
+<!ENTITY double.label "نقر مزدوج">
+<!ENTITY middle.label "نقر بالزر الأوسط">
+<!ENTITY ctrl.label "Ctrl-click">
+<!ENTITY cmd.label "Cmd-Click">
+<!ENTITY shift.label "Shift-click">
+<!ENTITY alt.label "Alt-Click">
+<!ENTITY ontab.label "on a tab:">
+<!ENTITY ontabbar.label "on the tabbar:">
+<!ENTITY clicktab.label "Choose command to perform when clicking on tab or tabbar">
+<!ENTITY ontabbar.dblClick.label "Prevent double click on Tab-bar from changing window size.">
+<!ENTITY ontabbar.click.label "Prevent clicking on Tab-bar from dragging the window.">
+<!ENTITY clicktab.default "Firefox default or other extension">
+<!ENTITY clicktab.nothing "Does nothing">
+<!ENTITY clicktab.addtab "Open a new tab">
+<!ENTITY clicktab.duplicatetab "Duplicates the tab">
+<!ENTITY clicktab.duplicatetabw "Duplicates the tab in a new window">
+<!ENTITY clicktab.detachtab "Move the tab to a new window">
+<!ENTITY clicktab.protecttab "Protects the tab">
+<!ENTITY clicktab.locktab "Locks the tab">
+<!ENTITY clicktab.freezetab "Protects and Locks the tab">
+<!ENTITY clicktab.renametab "Renames the tab">
+<!ENTITY clicktab.copyTabUrl "Copies the tab's URL to the clipboard">
+<!ENTITY clicktab.copyUrlFromClipboard "Load URL from clipboard">
+<!ENTITY clicktab.selectMerge "Selects the tab for merging">
+<!ENTITY clicktab.mergeTabs "Merges windows together">
+<!ENTITY clicktab.bookTab "Bookmarks the tab">
+<!ENTITY clicktab.bookTabs "Bookmarks all tabs">
+<!ENTITY clicktab.reloadtab "Reloads the tab">
+<!ENTITY clicktab.reloadtabs "Reloads all tabs">
+<!ENTITY clicktab.reloadothertabs "Reloads other tabs">
+<!ENTITY clicktab.reloadlefttabs "Reloads left tabs">
+<!ENTITY clicktab.reloadrighttabs "Reloads right tabs">
+<!ENTITY clicktab.autoReloadTab "Activate/Deactivate tab auto reload">
+<!ENTITY clicktab.removeall "Close all tabs">
+<!ENTITY clicktab.removeother "Close other tabs">
+<!ENTITY clicktab.removesimilar "Close tabs from similar domain">
+<!ENTITY clicktab.removetoLeft "Close Tabs to the Left">
+<!ENTITY clicktab.removetoRight "Close Tabs to the Right">
+<!ENTITY clicktab.uctab "Reopens last closed tab">
+<!ENTITY clicktab.ucatab "Reopens all closed tabs">
+<!ENTITY clicktab.snapback "SnapBack Tab">
+<!ENTITY clicktab.ietab "Opens the tab in IE">
+<!ENTITY contentLoad "Middle-click loads url from clipboard">
+<!ENTITY context.tab "Tab Context Menu">
+<!ENTITY context.main "Main Context Menu">
+<!ENTITY context.tools "Tools Menu">
+<!ENTITY showOnTabbar.label "Show Tab Context Menu on tabbar">
+<!ENTITY showtabBarContext.label "Show in Tab Context Menu">
+<!ENTITY showContentAreaContext.label "Show in Main Context Menu">
+<!ENTITY showToolsMenu.label "Show in Tools Menu">
+<!ENTITY startupHomePage.label "Show my home page">
+<!ENTITY startupBlankPage.label "Show a blank page">
+<!ENTITY startupLastSession.label "Show my windows and tabs from last time">
+<!ENTITY sm.extension.description1 "Tab Mix Plus detect that Session Manager Extension is installed">
+<!ENTITY sm.extension.description2 "Tab Mix Plus session manager will be disabled">
+<!ENTITY sm.extension.description3 "You can click the button on the right to open Session Manager Options dialog">
+<!ENTITY sm.extension.description4 "Convert My sessions data from Tab Mix Plus format to Session Manager extension format">
+<!ENTITY sm.extension.convert.label "Convert">
+<!ENTITY sm.extension.chooseFile.label0 "Let me choose which data file to convert">
+<!ENTITY sm.extension.chooseFile.label1 "Convert Tab Mix Plus sessions from the current profile">
+<!ENTITY ss.enable.label "Use Firefox's built-in Session Restore feature">
+<!ENTITY ss.enable.tooltip "Uncheck to allow the use with Tab Mix Plus Session Manager">
+<!ENTITY ss.advanced_setting "Advanced Setting">
+<!ENTITY ss.advanced_setting.warning "Don't change these, unless you know what you're doing">
+<!ENTITY ss.interval "Minimum time interval between two state saves">
+<!ENTITY ss.interval.seconds "(in milliseconds)">
+<!ENTITY ss.privacy_level "Save sensitive data (form data, POSTDATA and cookies) for">
+<!ENTITY ss.privacy_level.allsites "All sites">
+<!ENTITY ss.privacy_level.unencrypted "Unencrypted sites only">
+<!ENTITY ss.privacy_level.nosites "No sites at all">
+<!ENTITY ss.postdata.label1 "Maximum amount of POSTDATA to be stored">
+<!ENTITY ss.postdata.label2 "(in bytes, -1 = all of it)">
+<!ENTITY sessionManger.enable "Enable Session Manager">
+<!ENTITY crashRecovery.enable "Enable Crash Recovery">
+<!ENTITY sm.StartExit "Start/Exit">
+<!ENTITY sm.restore "Restore">
+<!ENTITY sm.preserve "Preserve">
+<!ENTITY sm.start "When Browser Starts:">
+<!ENTITY sm.start.restore "Restore">
+<!ENTITY sm.start.ask "Ask Before Restoring">
+<!ENTITY sm.start.nothing "Don't Restore">
+<!ENTITY sm.exit "When Browser Exits:">
+<!ENTITY sm.exit.save "Save Session">
+<!ENTITY sm.exit.ask "Ask Before Saving">
+<!ENTITY sm.exit.nothing "Don't Save">
+<!ENTITY sm.startup "Startup Session:">
+<!ENTITY sm.lastsession "Last Session">
+<!ENTITY sm.previouslast "Previous to Last">
+<!ENTITY sm.chooseifempty "Choose another if empty">
+<!ENTITY sm.restore.options "When Restoring Sessions:">
+<!ENTITY sm.restore.overwrite "Overwrite existing windows">
+<!ENTITY sm.restore.overwriteTabs "And tabs">
+<!ENTITY sm.restore.closedWinList "Save windows in closed windows list">
+<!ENTITY sm.restore.merge "Join multiple windows into one">
+<!ENTITY sm.restore.bypassCache "Bypass cache when restoring">
+<!ENTITY sm.notrestore.label "When not restoring on start">
+<!ENTITY sm.restorePinned.label "Restore my pinned tabs from last time">
+<!ENTITY sm.preserve.options "Preserve Tabs:">
+<!ENTITY sm.preserve.history "History">
+<!ENTITY sm.preserve.protect "Protect Status">
+<!ENTITY sm.preserve.locked "Lock Status">
+<!ENTITY sm.preserve.permission "Permissions">
+<!ENTITY sm.preserve.scroll1 "Scroll Position">
+<!ENTITY sm.restore.winOptions "Preserve Windows:">
+<!ENTITY sm.restore.selectedTab "Selected tab">
+<!ENTITY sm.restore.closedTabs "Closed tabs list">
+<!ENTITY incompatible.extensions "Some of your extensions are incompatible with Tab Mix Plus, it is recommended that you will disable or uninstall those extensions.">
+<!ENTITY incompatible.button.label "Show List">
diff --git a/chrome/locale/ar/session-manager.properties b/chrome/locale/ar/session-manager.properties
new file mode 100644
index 0000000..772f281
--- /dev/null
+++ b/chrome/locale/ar/session-manager.properties
@@ -0,0 +1,122 @@
+sm.saveClosedTab.chkbox.label=Save closed tabs list with this session
+sm.button.continue.label=Continue
+sm.button.continue.accesskey=C
+sm.askBeforSave.title=Session Manager - Save Session
+sm.askBeforSave.msg0=Would you like to save your session?
+sm.askBeforSave.msg2=Only non-private windows will be save to disk
+sm.askBeforSave.msg1=If you don\'t save, next time you start the browser the \'Last Session\' will be empty.
+sm.askBeforSave.button0.label=Save Session
+sm.askBeforSave.button0.accesskey=S
+sm.askBeforSave.button1.label=Don\'t Save
+sm.askBeforSave.button1.accesskey=D
+sm.corrupted.title=Session Manager - Corrupted Database
+sm.corrupted.msg0=Session Manager cannot load its database from corrupted session.rdf.
+sm.corrupted.msg1=The file session.rdf will be deleted, a copy can be found in session.old in your profile. sessions backups are in <profile>/sessionbackups
+sm.areYouSure.msg=Are you sure you want to continue?
+sm.canChooseStartup.msg=You can choose a session to be your new startup session from the list:
+sm.addtoStartup.title=Session Manager - Add to Startup Session
+sm.addtoStartup.msg.windows=You are about to add window(s) to your startup session:
+sm.addtoStartup.msg.tabs=You are about to add tab(s) to your startup session:
+sm.addtoStartup.button0.label=Add to Session
+sm.addtoStartup.button0.accesskey=A
+sm.addtoStartup.button1.label=Don\'t Add
+sm.addtoStartup.button1.accesskey=D
+sm.replaceStartup.title=Session Manager - Override Startup Session
+sm.replaceStartup.msg=You are about to replace your startup session:
+sm.replaceStartup.button0.label=Replace Session
+sm.replaceStartup.button0.accesskey=R
+sm.replaceStartup.button1.label=Don\'t Replace
+sm.replaceStartup.button1.accesskey=D
+sm.removeStartup.title=Session Manager - Delete Startup Session
+sm.removeStartup.msg0=You are about to delete your startup session:
+sm.removeStartup.msg1=Choose a session to be your new startup session from the list:
+sm.removeStartup.button0.label=Delete
+sm.removeStartup.button0.accesskey=D
+sm.removeStartup.button1.label=Don\'t Delete
+sm.removeStartup.button1.accesskey=T
+sm.title=Session Manager
+sm.dontSaveBlank.msg=Session Manager doesn\'t save blank windows
+sm.sessoinSave.error=Error in Session Manager, session didn\'t save
+sm.sessionName.title.rename=Session Manager - Rename Session
+sm.sessionName.title.saveprevious=Session Manager - Save Session
+sm.sessionName.title.savethiswindow=Session Manager - Save This Window
+sm.sessionName.title.saveallwindows=Session Manager - Save All Windows
+sm.sessionName.msg0=Enter Session Name:
+sm.sessionName.msg1=Name must be at least one letter or number.
+sm.sessionName.msg2=This name is already in use!
+sm.sessionName.msg3=Are you sure you want to replace the session?
+sm.sessionName.button0.label=Rename Session
+sm.sessionName.button0.accesskey=R
+sm.sessionName.button1.label=Don\'t Rename
+sm.sessionName.button1.accesskey=D
+sm.session.empty=empty
+sm.session.tabs=T
+sm.session.windows=W
+sm.removeAll.title.session=Session Manager - Delete All Saved Sessions
+sm.removeAll.title.closedwindow=Session Manager - Delete All Closed Windows
+sm.removeAll.msg0=Are you sure you want to delete all your saved sessions?
+sm.removeAll.msg1=If you choose \'Delete\' your startup session will be the \'Last Session\'.
+sm.removeAll.msg2=Are you sure you want to delete all your closed windows?
+sm.sessionMenu.last=Last Session
+sm.sessionMenu.lastDefault=Last Session - Default
+sm.sessionMenu.lastgood=Last Good Session
+sm.sessionMenu.previous=Previous to Last
+sm.sessionMenu.crashed=Crashed Session
+sm.afterCrash.title=Session Manager - Restore after Crash
+sm.afterCrash.chkbox.label=Enable Session Manager
+sm.afterCrash.msg0=Your last session Crashed!
+sm.afterCrash.msg0.again=Your last Crashed session Crashed again!
+sm.afterCrash.msg1=Choose session to restore from the list:
+sm.afterCrash.msg2=Choose how to continue
+sm.afterCrash.msg3=Session Manager is currently disabled, if you enable Session Manager, you will be able to restore crashed sessions, closed sessions, saved sessions and closed windows from the Session Manager menu.
+sm.afterCrash.msg4=You can also restore the crashed session later from the Session Manager menu.
+sm.afterCrash.msg5=but nothing was saved.
+sm.afterCrash.msg6=but there isn\'t any open window in your Crashed session
+sm.afterCrash.msg7=Choose window to restore from Closed Windows list
+sm.afterCrash.msg8=(you can also restore closed windows later from the Closed Windows menu)
+sm.afterCrash.msg9=Your Crashed session is empty!
+sm.afterCrash.msg10=Session Manager did not find any sessions to restore from.
+sm.afterCrash.button0.label=Restore Session
+sm.afterCrash.button0.accesskey=R
+sm.afterCrash.button0.crashed.label=Restore Crashed Session
+sm.afterCrash.button0.crashed.accesskey=R
+sm.afterCrash.button1.label=Don\'t Restore
+sm.afterCrash.button1.accesskey=D
+sm.start.title=Session Manager - Restore Session
+sm.start.chkbox.label=Enable Crash Recovery
+sm.start.msg0=Your Startup session is empty!
+sm.start.msg1=Crash Recovery is currently disabled, if you enable Crash Recovery, you will be able to restore crashed sessions.
+sm.start.msg2=Error while looking for your startup session, your saved startup session does not exist.
+sm.restoreError.msg0=Error in session manager file!
+sm.restoreError.msg1=Delete the session you tried to restore
+sm.disable.msg=Firefox has a built-in session restore feature.
+sm.disable.msg1=Would you like to enable built-in session restore and disable the Tab Mix Plus Session Manager?
+sm.disable.msg2=Would you like to enable Tab Mix Plus Session Manager and disable the built-in session restore?
+sm.extension.convert.msg1=Would you like to convert your sessions data from Tab Mix Plus format to Session Manager extension format?
+sm.extension.convert.msg2=You can do it later from Tab Mix Plus session options window.
+sm.extension.convert.nosessions=There is no session in this file.
+sm.extension.convert.alreadyconverted=This session file have already been converted to Session Manager extension format.
+sm.extension.convert.doitagain=Do you wish to convert them again?
+sm.extension.convert.unable=Unable to convert from session.rdf
+sm.extension.convert.many=sessions converted, would you like to delete any of them?
+sm.extension.convert.one=one session converted, would you like to delete it?
+sm.extension.convert.rename=You will be able to rename the session(s) later from Session Manager menu
+sm.extension.convert.selectfile=Select session.rdf file to convert
+sm.extension.convert.rdffiles=RDF Files
+sm.extension.convert.sessionfiles=Session Files
+sm.tabview.hiddengroups=More tabs restored into hidden groups.
+sm.tabview.hiddengroups.removed=Hidden tab groups was removed.
+sm.tabview.removed=The Tab Groups (Panorama) feature was removed from Firefox.
+sm.tabview.removed.learnMore.label=Learn More
+sm.tabview.removed.learnMore.accesskey=L
+sm.tabview.install.label=Install Tab Groups extension
+sm.tabview.install.accesskey=I
+sm.tabview.backup.session=History Session, backup with groups data
+sm.tabview.backup.crashed=Crashed Session, backup with groups data
+sm.tabview.backup.msg=Tab mix plus Session Manager has saved a backup of your session.
+sm.bookmarks.historySession= History Session
+sm.bookmarks.closedWindow= Closed Window
+sm.bookmarks.sessionFolder=Tab Mix Plus Sessions
+# LOCALIZATION NOTE (sm.bookmarks.migration.windowID):
+# %S is the window number in the session
+sm.bookmarks.migration.windowID= Window %S
diff --git a/chrome/locale/en-US/tabmix.dtd b/chrome/locale/ar/tabmix.dtd
similarity index 51%
copy from chrome/locale/en-US/tabmix.dtd
copy to chrome/locale/ar/tabmix.dtd
index 9626138..c7a2c57 100644
--- a/chrome/locale/en-US/tabmix.dtd
+++ b/chrome/locale/ar/tabmix.dtd
@@ -1,71 +1,69 @@
-<!ENTITY closedtabsbtn.label "Closed Tabs">
-<!ENTITY closedtabsbtn.tooltip "Display Closed Tabs List">
-<!ENTITY sessionbtn.tooltip "Display and Manage your Sessions">
-<!ENTITY tabslistbtn.label "Opened Tabs">
-<!ENTITY tabslistbtn.tooltip "Display Opened Tabs List">
-<!ENTITY closedwindowsbtn.label "Closed Windows">
-<!ENTITY closedwindowsbtn.tooltip "Display Closed Windows List">
+<!ENTITY closedtabsbtn.label "الألسنة المغلقة">
+<!ENTITY closedtabsbtn.tooltip "عرض قائمة الألسنة المغلقة">
+<!ENTITY sessionbtn.tooltip "عرض وإدارة جلساتك">
+<!ENTITY tabslistbtn.label "الألسنة المفتوحة">
+<!ENTITY tabslistbtn.tooltip "عرض قائمة الألسنة المفتوحة">
+<!ENTITY closedwindowsbtn.label "النوافذ المغلقة">
+<!ENTITY closedwindowsbtn.tooltip "عرض قائمة النوافذ المغلقة">
 <!ENTITY page.header.title "Tab Mix Plus Options">
 <!ENTITY options.main.sessionbutton.label "Tab Mix Plus Session Manager">
 <!ENTITY session.Tools "Session Manager">
-<!ENTITY closedWin.label "Closed Windows List">
-<!ENTITY duplicateTabMenu.label "Duplicate Tab">
-<!ENTITY duplicateTabMenu.accesskey "D">
-<!ENTITY duplicateinWin.label "Duplicate to New Window">
-<!ENTITY duplicateinWin.accesskey "W">
-<!ENTITY detachTab.label "Move to New Window">
-<!ENTITY detachTab.accesskey "E">
-<!ENTITY mergeContext.label "Merge Windows">
-<!ENTITY mergeContext.accesskey "M">
-<!ENTITY renametab.label "Rename Tab">
-<!ENTITY renametab.accesskey "M">
-<!ENTITY copytaburl.label "Copy Tab URL">
-<!ENTITY copytaburl.accesskey "Y">
-<!ENTITY reloadother.label "Reload Other Tabs">
-<!ENTITY reloadother.accesskey "O">
-<!ENTITY reloadleft.label "Reload Left Tabs">
-<!ENTITY reloadleft.accesskey "L">
-<!ENTITY reloadright.label "Reload Right Tabs">
-<!ENTITY reloadright.accesskey "I">
-<!ENTITY autoReloadTab.label "Reload Tab Every">
-<!ENTITY autoReloadTab.accesskey "V">
-<!ENTITY autoReloadSite.label "Reload This Site Every">
-<!ENTITY autoReloadSite.accesskey "E">
-<!ENTITY afterthis.label "After This Tab">
-<!ENTITY bookmarktab.label "Bookmark This Tab">
-<!ENTITY undoCloseListMenu.label "Closed Tabs List">
-<!ENTITY undoCloseListMenu.accesskey "L">
-<!ENTITY closeAllTabsMenu.label "Close All Tabs">
-<!ENTITY closeall.accesskey "A">
-<!ENTITY closeSimilarTab.label "Close Similar Tabs">
-<!ENTITY closeSimilarTab.accesskey "S">
+<!ENTITY closedWin.label "قائمة النوافذ المغلقة">
+<!ENTITY duplicateTabMenu.label "كرّر اللسان">
+<!ENTITY duplicateTabMenu.accesskey "ر">
+<!ENTITY duplicateinWin.label "كرّر في نافذة جديدة">
+<!ENTITY duplicateinWin.accesskey "ف">
+<!ENTITY detachTab.label "انقل إلى نافذة جديدة">
+<!ENTITY detachTab.accesskey "ذ">
+<!ENTITY mergeContext.label "دمج النوافذ">
+<!ENTITY mergeContext.accesskey "ج">
+<!ENTITY renametab.label "غيّر تسمية اللسان">
+<!ENTITY renametab.accesskey "س">
+<!ENTITY copytaburl.label "انسخ رابط اللسان">
+<!ENTITY copytaburl.accesskey "خ">
+<!ENTITY reloadother.label "أعِد تحميل الألسنة الأخرى">
+<!ENTITY reloadother.accesskey "م">
+<!ENTITY reloadleft.label "أعِد تحميل الألسنة اليسرى">
+<!ENTITY reloadleft.accesskey "س">
+<!ENTITY reloadright.label "أعِد تحميل الألسنة اليمنى">
+<!ENTITY reloadright.accesskey "م">
+<!ENTITY autoReloadTab.label "أعِد تحميل اللسان كل">
+<!ENTITY autoReloadTab.accesskey "ك">
+<!ENTITY autoReloadSite.label "أعِد تحميل هذا الموقع كل">
+<!ENTITY autoReloadSite.accesskey "ك">
+<!ENTITY afterthis.label "بعد هذا اللسان">
+<!ENTITY bookmarktab.label "علّم هذا اللسان">
+<!ENTITY undoCloseListMenu.label "قائمة الألسنة المغلقة">
+<!ENTITY undoCloseListMenu.accesskey "ق">
+<!ENTITY closeAllTabsMenu.label "أغلق كل الألسنة">
+<!ENTITY closeall.accesskey "غ">
+<!ENTITY closeSimilarTab.label "أغلق الألسنة المشابهة">
+<!ENTITY closeSimilarTab.accesskey "ش">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
-<!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "R">
-<!ENTITY docShellMenu.label "Permissions">
-<!ENTITY docShellMenu.accesskey "P">
-<!ENTITY freezeTabMenu.label "Freeze Tab">
-<!ENTITY freezeTabMenu.accesskey "F">
+<!ENTITY closeleft.accesskey "س">
+<!ENTITY docShellMenu.label "الأذونات">
+<!ENTITY docShellMenu.accesskey "ذ">
+<!ENTITY freezeTabMenu.label "جمّد اللسان">
+<!ENTITY freezeTabMenu.accesskey "ج">
 <!ENTITY protectTabMenu.label "Protect Tab">
 <!ENTITY protectTabMenu.tooltip "Protect tabs from being closed">
 <!ENTITY protectTabMenu.accesskey "P">
 <!ENTITY lockTabMenu.label "Lock Tab">
 <!ENTITY lockTabMenu.tooltip "All links open in new tab">
 <!ENTITY lockTabMenu.accesskey "K">
-<!ENTITY bookmarktabs.label "Bookmark All Tabs">
-<!ENTITY linkhere.label "Open Link in This Tab">
-<!ENTITY linkhere.accesskey "O">
+<!ENTITY bookmarktabs.label "علّم كل الألسنة">
+<!ENTITY linkhere.label "افتح الرابط في هذا اللسان">
+<!ENTITY linkhere.accesskey "ف">
 <!ENTITY linkBackgroundTab.label "Open Link in Background Tab">
 <!ENTITY linkForegroundTab.label "Open Link in Foreground Tab">
 <!ENTITY linkBackgroundTab.accesskey "B">
 <!ENTITY linkForegroundTab.accesskey "F">
-<!ENTITY openalllinks.label "Open Links in New Tabs">
-<!ENTITY openalllinks.accesskey "S">
-<!ENTITY linkwithhistory.label "Open Link in Duplicated Tab">
-<!ENTITY linkwithhistory.accesskey "D">
-<!ENTITY tabsList.label "Opened Tabs List">
-<!ENTITY tabsList.accesskey "L">
+<!ENTITY openalllinks.label "افتح الروابط في ألسنة جديدة">
+<!ENTITY openalllinks.accesskey "ج">
+<!ENTITY linkwithhistory.label "افتح الرابط في اللسان المكرّر">
+<!ENTITY linkwithhistory.accesskey "ك">
+<!ENTITY tabsList.label "قائمة الألسنة المفتوحة">
+<!ENTITY tabsList.accesskey "م">
 <!ENTITY allowImage.label "Image">
 <!ENTITY allowJavascript.label "JavaScript">
 <!ENTITY allowRedirect.label "Redirect">
@@ -79,11 +77,11 @@
 <!ENTITY restoreintab.accesskey "T">
 <!ENTITY restoretab.label "Restore Tab">
 <!ENTITY restoretab.accesskey "R">
-<!ENTITY bookmark.label "Bookmark This Link...">
-<!ENTITY bookmark.accesskey "B">
-<!ENTITY deletelist.label "Delete from the list">
-<!ENTITY deletelist.accesskey "D">
-<!ENTITY settings.label "Preferences">
+<!ENTITY bookmark.label "علّم هذا الرابط...">
+<!ENTITY bookmark.accesskey "ع">
+<!ENTITY deletelist.label "احذف من القائمة">
+<!ENTITY deletelist.accesskey "ح">
+<!ENTITY settings.label "إعدادات">
 <!ENTITY saveWindow.label "Save This Window">
 <!ENTITY saveAllWindows.label "Save All Windows">
 <!ENTITY sm.context.overwrite "Restore, Overwrite Existing Window(s)">
diff --git a/chrome/locale/ar/tabmix.properties b/chrome/locale/ar/tabmix.properties
new file mode 100644
index 0000000..4233e17
--- /dev/null
+++ b/chrome/locale/ar/tabmix.properties
@@ -0,0 +1,49 @@
+extensions.{dc572301-7619-498c-a57d-39143191b318}.description= Tab browsing with an added boost.
+tmp.merge.warning.title= Closing window with non-merged tabs
+tmp.merge.warning.message= The selected tabs will be merged with another window, but the other tabs will now be closed with the current window.
+tmp.merge.warning.checkboxLabel= Always warn me when closing a window with tabs that aren\'t merging.
+tmp.merge.error= At least 2 windows have to be opened before you can merge them
+tmp.merge.private= You can not merge private window with non-private window.
+tmp.importPref.error1= Can not import because it is not a valid file.
+tmp.importPref.error2= Failed to import settings.
+tmp.sessionempty= Next time you start the browser, \'Last Session\' will be empty.
+droptoclose.label= Drop a tab to close it
+droplink.label=Drop at the center to replace the tab or at the sides to create a new tab
+flstOn.label= Tabs Focus to Last Selected - Press F9 to swap preference
+flstOff.label= Tabs Focus to Right - Press F9 to swap preference
+slideshowOn.label=الانتقال التلقائي بين الألسنة يعمل - اضغط F8 لإيقافه
+slideshowOff.label=الانتقال التلقائي بين الأسنة متوقف - اضغط F8 لتشغيله
+undoclosetab.clear.label=نظّف قائمة الألسنة المغلقة
+undoclosetab.clear.accesskey=ظ
+undoClosedWindows.clear.label=نظّف قائمة النوافذ المغلقة
+undoClosedWindows.clear.accesskey=ظ
+protectedtabs.closeWarning.1=You are about to close %S protected tab. Are you sure you want to continue?
+protectedtabs.closeWarning.2=You are about to close %S protected tabs. Are you sure you want to continue?
+protectedtabs.closeWarning.3=You are about to close %S tabs, %S of them protected. Are you sure you want to continue?
+protectedtabs.closeWarning.4=نبهني عند محاولتي إغلاق نافذة تحتوي ألسنة محمية
+window.closeWarning.1=نبهني عند محاولتي إغلاق نافذة تحتوي عدة ألسنة
+closeWindow.label=أغلق النافذة
+confirm_autoreloadPostData_title=تحذير!
+confirm_autoreloadPostData=The page on which you tried to enable Auto Reload contains POSTDATA.\nIf you enable Auto Reload, any action the form carries out (such as an online purchase) will be repeated.\n\nAre you sure that you want to enable Auto Reload?
+confirm_autoreloadPostData_remote=The page on which you tried to enable Auto Reload contains POSTDATA.\nIf you enable Auto Reload, any action the form carries out (such as an online purchase) will be lost.\n\nAre you sure that you want to enable Auto Reload?
+incompatible.title= Tab Mix Plus
+incompatible.msg0= The following extensions are integrated or incompatible with Tab Mix Plus.
+incompatible.msg1=هل ترغب في تعطيل هذه الامتدادات؟
+incompatible.msg2=الامتدادات غير المتوافقة ستتعطل بعد إعادة تشغيل المتصفح.
+incompatible.button0.label=عطّل
+incompatible.button0.accesskey=ع
+incompatible.button1.label=لا تعطّل
+incompatible.button1.accesskey=ل
+incompatible.button2.label=عطّل وأعِد التشغيل
+incompatible.button2.accesskey=و
+incompatible.chkbox.label=عرض هذا التنبيه عند بدء المتصفح
+tabmixoption.error.title= Tab Mix Plus Error
+tabmixoption.error.msg= You must have one browser window to use Tab Mix Plus Options
+# LOCALIZATION NOTE (rowsTooltip.rowscount):
+# Semicolon-separated list of plural forms. See:
+# http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 is the total number of rows
+# The singular form is not considered since this string is used only for
+# multiple rows.
+rowsTooltip.rowscount=;#1 Rows
+rowsTooltip.activetab=Active tab on row #1
diff --git a/chrome/locale/bg-BG/tabmix.dtd b/chrome/locale/bg-BG/tabmix.dtd
index 018eb1e..5fc802a 100644
--- a/chrome/locale/bg-BG/tabmix.dtd
+++ b/chrome/locale/bg-BG/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "б">
 <!ENTITY closeTabsToLeft.label "Затваряне на разположените вляво подпрозорци">
 <!ENTITY closeleft.accesskey "л">
-<!ENTITY closeTabstoRight.label "Затваряне на разположените вдясно подпрозорци">
-<!ENTITY closeright.accesskey "д">
 <!ENTITY docShellMenu.label "Разрешения">
 <!ENTITY docShellMenu.accesskey "Р">
 <!ENTITY freezeTabMenu.label "Замразяване на подпрозореца">
diff --git a/chrome/locale/ca/tabmix.dtd b/chrome/locale/ca/tabmix.dtd
index 1d742d4..9624cee 100644
--- a/chrome/locale/ca/tabmix.dtd
+++ b/chrome/locale/ca/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "Tanca les pestanyes de l'esquerra">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Tanca les pestanyes de la dreta">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "Permisos">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Congela la pestanya">
diff --git a/chrome/locale/cs-CZ/tabmix.dtd b/chrome/locale/cs-CZ/tabmix.dtd
index e46593a..6e7e467 100644
--- a/chrome/locale/cs-CZ/tabmix.dtd
+++ b/chrome/locale/cs-CZ/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "A">
 <!ENTITY closeTabsToLeft.label "Zavřít panely nalevo">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Zavřít panely napravo">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "Oprávnění">
 <!ENTITY docShellMenu.accesskey "O">
 <!ENTITY freezeTabMenu.label "Zmrazit panel">
diff --git a/chrome/locale/da/tabmix.dtd b/chrome/locale/da/tabmix.dtd
index a9be9f7..ec59877 100644
--- a/chrome/locale/da/tabmix.dtd
+++ b/chrome/locale/da/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "k">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "r">
 <!ENTITY docShellMenu.label "Tilladelser">
 <!ENTITY docShellMenu.accesskey "i">
 <!ENTITY freezeTabMenu.label "Frys faneblad">
diff --git a/chrome/locale/de/tabmix.dtd b/chrome/locale/de/tabmix.dtd
index cbdd468..990c8e4 100644
--- a/chrome/locale/de/tabmix.dtd
+++ b/chrome/locale/de/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "h">
 <!ENTITY closeTabsToLeft.label "Linke Tabs schließen">
 <!ENTITY closeleft.accesskey "i">
-<!ENTITY closeTabstoRight.label "Rechte Tabs schließen">
-<!ENTITY closeright.accesskey "e">
 <!ENTITY docShellMenu.label "Berechtigungen für diesen Tab">
 <!ENTITY docShellMenu.accesskey "B">
 <!ENTITY freezeTabMenu.label "Tab einfrieren">
diff --git a/chrome/locale/el/tabmix.dtd b/chrome/locale/el/tabmix.dtd
index ae45936..39812aa 100644
--- a/chrome/locale/el/tabmix.dtd
+++ b/chrome/locale/el/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "π">
 <!ENTITY closeTabsToLeft.label "Κλείσιμο αριστερών καρτελών">
 <!ENTITY closeleft.accesskey "ρ">
-<!ENTITY closeTabstoRight.label "Κλείσιμο δεξιών καρτελών">
-<!ENTITY closeright.accesskey "δ">
 <!ENTITY docShellMenu.label "Δικαιώματα">
 <!ENTITY docShellMenu.accesskey "ι">
 <!ENTITY freezeTabMenu.label "Πάγωμα καρτέλας">
diff --git a/chrome/locale/en-US/tabmix.dtd b/chrome/locale/en-US/tabmix.dtd
index 9626138..2f8af93 100644
--- a/chrome/locale/en-US/tabmix.dtd
+++ b/chrome/locale/en-US/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "Permissions">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Freeze Tab">
diff --git a/chrome/locale/es-ES/tabmix.dtd b/chrome/locale/es-ES/tabmix.dtd
index b5f6773..388890d 100644
--- a/chrome/locale/es-ES/tabmix.dtd
+++ b/chrome/locale/es-ES/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "s">
 <!ENTITY closeTabsToLeft.label "Cerrar pestañas a la izquierda">
 <!ENTITY closeleft.accesskey "i">
-<!ENTITY closeTabstoRight.label "Cerrar pestañas a la derecha">
-<!ENTITY closeright.accesskey "d">
 <!ENTITY docShellMenu.label "Permisos">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Congelar pestaña">
diff --git a/chrome/locale/et-EE/tabmix.dtd b/chrome/locale/et-EE/tabmix.dtd
index f361943..0ef549e 100644
--- a/chrome/locale/et-EE/tabmix.dtd
+++ b/chrome/locale/et-EE/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "Sulge vasakule jäävad kaardid">
 <!ENTITY closeleft.accesskey "V">
-<!ENTITY closeTabstoRight.label "Sulge paremale jäävad kaardid">
-<!ENTITY closeright.accesskey "P">
 <!ENTITY docShellMenu.label "Luba kasutada">
 <!ENTITY docShellMenu.accesskey "B">
 <!ENTITY freezeTabMenu.label "Külmuta kaart">
diff --git a/chrome/locale/eu/misc.dtd b/chrome/locale/eu/misc.dtd
new file mode 100644
index 0000000..089e509
--- /dev/null
+++ b/chrome/locale/eu/misc.dtd
@@ -0,0 +1,17 @@
+<!ENTITY searchTabFocus.label "Load in background">
+<!ENTITY searchTabFocus.accesskey "B">
+<!ENTITY renametab.panel.title "Edit Tab Title">
+<!ENTITY renametab.reset.label "Reset to default title">
+<!ENTITY title.label "Title">
+<!ENTITY default.label "Default">
+<!ENTITY renametab.permanently.label "Rename this tab regardless of its address">
+<!ENTITY renametab.permanently.tooltip "tab with history - the new name will remain when address changes">
+<!ENTITY forum.label "Forum">
+<!ENTITY faq.label "FAQ">
+<!ENTITY help.label "Help">
+<!ENTITY tabmix.label "Tab Mix Plus">
+<!ENTITY reloadtime.label1 "Choose time from the list or enter your own time">
+<!ENTITY specifyreload.label "Specify Reload Time">
+<!ENTITY sanitizer.entry "Tab Mix Plus Saved Sessions">
+<!ENTITY sanitizer.entry.accesskey "T">
+<!ENTITY sanitizer.entry.confirm "Are you sure you want to erase ALL your saved sessions data including backups ?">
diff --git a/chrome/locale/eu/pref-appearance.dtd b/chrome/locale/eu/pref-appearance.dtd
new file mode 100644
index 0000000..9670122
--- /dev/null
+++ b/chrome/locale/eu/pref-appearance.dtd
@@ -0,0 +1,20 @@
+<!ENTITY tabStyles.label "Estiloak">
+<!ENTITY styles.label "Aldatu estiloak">
+<!ENTITY currentTab.label "Oraingo fitxa">
+<!ENTITY unloadedTabs.label "Fitxa kargatu gabeak">
+<!ENTITY unreadTab.label "Fitxa irakurri gabeak">
+<!ENTITY hideRGB.label "RGB ezkutatu">
+<!ENTITY showRGB.label "RGB erakutsi">
+<!ENTITY unreadAfterReload.label "markatu fitxa irakurri gabe gisa birkargatu ondoren">
+<!ENTITY disableBackground.label "Ezgaitu atzeko planoko koloreak ezartzea">
+<!ENTITY squaredTabs.label "Apply background color for squared tabs">
+<!ENTITY otherTabs.label "Beste fitxak">
+<!ENTITY italic.label "Letra etzana">
+<!ENTITY bold.label "Letra lodia">
+<!ENTITY underline.label "Letra azpimarratua">
+<!ENTITY textcolor.label "Testu kolorea">
+<!ENTITY bgColor.label "Atze-planoko kolorea">
+<!ENTITY bgTopColor.label "Goikaldea">
+<!ENTITY bgBottomColor.label "Azpikaldea">
+<!ENTITY useThis.label "erabili estilo hau honentzat">
+<!ENTITY opacity.label "gardentasuna">
diff --git a/chrome/locale/eu/pref-filetype.dtd b/chrome/locale/eu/pref-filetype.dtd
new file mode 100644
index 0000000..4661544
--- /dev/null
+++ b/chrome/locale/eu/pref-filetype.dtd
@@ -0,0 +1,5 @@
+<!ENTITY filetype.options "File Type Editor">
+<!ENTITY filetype.add "Add">
+<!ENTITY filetype.edit "Modify">
+<!ENTITY filetype.delete "Delete">
+<!ENTITY filetype.new "New file type:">
diff --git a/chrome/locale/eu/pref-tabmix.dtd b/chrome/locale/eu/pref-tabmix.dtd
new file mode 100644
index 0000000..cf7669c
--- /dev/null
+++ b/chrome/locale/eu/pref-tabmix.dtd
@@ -0,0 +1,312 @@
+<!ENTITY tab.links "Laserbideak">
+<!ENTITY tab.events "Ekintzak">
+<!ENTITY tab.mouse "Sagua">
+<!ENTITY tab.appearance "Erakutsi">
+<!ENTITY tab.menu "Aukerak">
+<!ENTITY tab.session "Saioa">
+<!ENTITY tab.incompatible "Errorea">
+<!ENTITY apply.label "Aplikatu">
+<!ENTITY settings.export "Exportatze Aukerak">
+<!ENTITY settings.import "Importatze Aukerak">
+<!ENTITY settings.sync "Sync Preferences">
+<!ENTITY settings.default "Berrezarri lehenetsiak">
+<!ENTITY settings.revert "Revert">
+<!ENTITY generalWindowOpen.label "Ireki "leiho berri" linkak horrela:">
+<!ENTITY externalLink.useSeparate.label "Use separate preference for links from other applications">
+<!ENTITY externalLinkTarget.label "Ireki beste aplikazioetatiko linkak horrela:">
+<!ENTITY linkTarget.tab "Fitxa Berria">
+<!ENTITY linkTarget.window "Leiho Berria">
+<!ENTITY linkTarget.current "Gaineko Fitxa">
+<!ENTITY linkTarget.accesskey "C">
+<!ENTITY divertedWindowOpen.label "Mugatu JavaScript eta Popup:">
+<!ENTITY divertedWindowOpen.all "Popup guztiak fitxa gisa ireki">
+<!ENTITY divertedWindowOpen.some "Baimendu edozein popup-leiho neurri">
+<!ENTITY divertedWindowOpen.none "Baimendu edozein popup">
+<!ENTITY linkTarget.label "Ireki fitxategi batera bidaltzen duten linkak gaineko fitxan">
+<!ENTITY targetIsFrame.label "Open links with target to existing frame in the current tab">
+<!ENTITY download.label "Saihest fitxa zuriak fitxategiak deskargatzean">
+<!ENTITY edit.label "Editatu">
+<!ENTITY speLink.label "Fitxa berri gisa irekiarazi:">
+<!ENTITY speLink.none "Ezer ez">
+<!ENTITY speLink.allLinks "Link guztiak">
+<!ENTITY speLink.external "Beste orri baterako linkak">
+<!ENTITY singleWindow.label "Fitxa guztiak leiho bakar batean beti">
+<!ENTITY newTabs.label "Fitxa berriak">
+<!ENTITY tabOpen.label "Fitxak irekitzea">
+<!ENTITY tabFocus.label "Fitxen Hurrenkera">
+<!ENTITY tabClose.label "Fitxak ixtea">
+<!ENTITY tabMerge.label "Fitxak bateratzea">
+<!ENTITY tabFeature.label "Fitxen ezaugarriak">
+<!ENTITY newtab.label "Ireki fitxa berrian:">
+<!ENTITY replaceLastTabWith.label "Azken fitxa itxiz gero, honekin ordeztu:">
+<!ENTITY newtab.blank "Orri zuria">
+<!ENTITY newtab.home "Etxeko orria">
+<!ENTITY newtab.current "Gaineko orria">
+<!ENTITY newtab.duplicate "Bikoiztu orria">
+<!ENTITY newtab.location.1 "New Tab Page">
+<!ENTITY newtab.placeholder.label "Default New Tab Page">
+<!ENTITY location.label.1 "Address">
+<!ENTITY focusContent.label "Focus content when loading non blank page">
+<!ENTITY openTabNext.label "Ireki fitxa berriak gainekoaren ondoan">
+<!ENTITY openOtherTabNext.label "Ireki bestelako fitxak gainekoaren ondoan">
+<!ENTITY relatedAfterCurrent.label "Gaineko fitxarekiko zerikusia badu bakarrik">
+<!ENTITY openTabNext.tooltip1 "[a][b][c][1][2][3]->[a][1][2][3][b][c]">
+<!ENTITY openDuplicateNext.label "Ireki bikoiztutako fitxak originalaren ondoan">
+<!ENTITY openTabNext.tooltip "[a][b][c][1][2][3]->[a][3][2][1][b][c]">
+<!ENTITY openTabNextInverse.label "Aldatu irekitzeko hurrenkera">
+<!ENTITY openTabNextInverse.tooltip "[æ][3][2][1][b][c]->[a][1][2][3][b][c]">
+<!ENTITY openTabNextInverse.tooltip1 "Ireki fitxa berrian gainekoaren aurrekoaren ondoan">
+<!ENTITY lockTabs.label "Kateatu fitxak">
+<!ENTITY lockNewTabs.label "Kateatu fitxa berriak">
+<!ENTITY lockAppTabs.label "Kateatu aplikazioen fitxak">
+<!ENTITY updateLockState.label "Apply changes to open tabs">
+<!ENTITY openNewTab.label "Ireki fitxak hortik:">
+<!ENTITY openBookmarks.label "Lastermarkak">
+<!ENTITY openPlacesGroups.label "Groups of bookmarks/history">
+<!ENTITY openPlacesGroups.tooltip "Don't override tabs when opening a group of bookmarks/history">
+<!ENTITY openHistory.label "Historia">
+<!ENTITY openUrl.label "Helbide barra">
+<!ENTITY openSearch.label "Bilatzaile barra">
+<!ENTITY middlecurrent1.label "Erdiko klikak edo CTRL-klikak gaineko fitxan irekitzen du">
+<!ENTITY middlecurrent.tooltip "Lastermarkak, historia eta derrigorrezko "leiho berri"-linkak bakarrik">
+<!ENTITY tabFocus.caption "Honelako fitxa berriak gainean jarri/hautatu:">
+<!ENTITY selectTab.label "Linkak">
+<!ENTITY selectDivertedTab.label "Leiho besteratuak">
+<!ENTITY selectTabFromExternal.label "Other applications">
+<!ENTITY selectTabCommand.label ""Fitxa berri" komandoak">
+<!ENTITY contextMenuSearch.label "Context menu search for">
+<!ENTITY selectTabBH.label "Lastermarkak/Historia">
+<!ENTITY duplicateTab.label "Bikoiztu fitxa">
+<!ENTITY inversefocus1.label "Erdiko klikak edo CTRL-klikak hautatzen du:">
+<!ENTITY warning.caption.label "Iragarpenak">
+<!ENTITY warnOnCloseProtected.label "Iragarri babestutako fitxak ixtekotan">
+<!ENTITY warnOnCloseWindow.label "Iragarri fitxa bat baino gehiagoko leihoa ixtekoan">
+<!ENTITY lasttab.caption.label "Azken fitxa ixtekotan">
+<!ENTITY keepWindow.label.3.1 "Ez itxi leihoa azken fitxa itxiz gero">
+<!ENTITY keeptab.label "Azken fitxa ezingo da itxi">
+<!ENTITY closeOnMerge.label "Itxi leiho zuriak leihoak bateratuz gero">
+<!ENTITY warnOnMerge.label "Iragarri bateratuko ez diren fitxak ixtekotan">
+<!ENTITY currenttab.caption.label "Gaineko fitxa ixtea">
+<!ENTITY focusTab.labelBegin "Gaineko fitxa ixtean, honako hau hautatu:">
+<!ENTITY focusTab.firstTab "Lehenengo fitxa">
+<!ENTITY focusTab.leftTab "Ezkerreko fitxa">
+<!ENTITY focusTab.rightTab "Eskuineko fitxa">
+<!ENTITY focusTab.lastTab "Azken fitxa">
+<!ENTITY focusTab.lastSelectedTab "Aurretik hautatutako fitxa">
+<!ENTITY focusTab.openerTab "Irekitzailea/eskuineko fitxa">
+<!ENTITY focusTab.openerTab.rtl "Irekitzailea/ezkerreko fitxa">
+<!ENTITY focusTab.lastOpenedTab "Aurretik irekitako fitxa">
+<!ENTITY undoClose.label "Piztu "itxitako fitxa berriz ireki" funtzioa">
+<!ENTITY undoCloseCache.label "Zenbat itxitako fitxak gogoratu:">
+<!ENTITY undoClosepos.label "Birrireki leju berdinean">
+<!ENTITY menuonlybutton.label "Make the toolbar button display only a list">
+<!ENTITY ctrltab.label "Ctrl-Tab navigates tabs in the most recently used order">
+<!ENTITY cmdtab.label "Cmd-Tab navigates tabs in the most recently used order">
+<!ENTITY ctrltab.tabPreviews "Show tab previews">
+<!ENTITY ctrltab.popup "Ctrl-Tab displays a tab list popup menu">
+<!ENTITY cmdtab.popup "Cmd-Tab displays a tab list popup menu">
+<!ENTITY tabpopup.mouse "Tab list responds to the mouse">
+<!ENTITY mergeNoTabSelection.label "Merge windows when no tabs are selected">
+<!ENTITY mergeTabSelection.label "Merging after selecting tabs">
+<!ENTITY mergeall.label "Merge all windows into one">
+<!ENTITY mergelastfocused.label "Merge only current window with last focused">
+<!ENTITY mergePopups.label "Also take popup windows">
+<!ENTITY popupNextToOpener.label "Place popups next to their openers">
+<!ENTITY activateSlideshow.label "Pressing #1 rotates tabs every">
+<!ENTITY toggleAnimation.label "Disable Open/Close tab animation">
+<!ENTITY reloadEvery.matchAddress.label "Reload a tab regardless of its address">
+<!ENTITY reloadEvery.onReloadButton.label "Show Reload Every menu on Reload button">
+<!ENTITY seconds.label "seconds">
+<!ENTITY minutes.label "min">
+<!ENTITY tabBarAppearance.label "Tab Bar">
+<!ENTITY tabAppearance.label "Tab">
+<!ENTITY toolBarAppearance.label "ToolBar">
+<!ENTITY show.ontabbar.label "Show on Tab bar">
+<!ENTITY show.ontab.label "Show on Tab">
+<!ENTITY dragNewTabButton.tooltip "Drag 'New Tab' button to your tab-bar to enable this option.">
+<!ENTITY hideTabBarButton.label "Close tab button">
+<!ENTITY newTabButton.label "New tab button">
+<!ENTITY newTabButton.posiotion.left.label "on Left side">
+<!ENTITY newTabButton.posiotion.right.label "on Right side">
+<!ENTITY newTabButton.posiotion.afterlast.label "After last tab">
+<!ENTITY allTabsButton.label "All tabs button">
+<!ENTITY tabBarSpace.label "Extra spaces on both sides">
+<!ENTITY tabBarSpace.tooltip "For clicking and dropping something on tab bar">
+<!ENTITY tabbar.label "Hide tab bar when only one tab is open">
+<!ENTITY moveTabOnDragging.label "When dragging a tab move it directly">
+<!ENTITY dropIndicator.label "Drop indicator">
+<!ENTITY dropIndicator-native.label "Native style">
+<!ENTITY dropIndicator-builtin.label "Built-in style">
+<!ENTITY verticalTabbar.description "Use treeStyleTab or VerticalTab extension to control these preferences.">
+<!ENTITY tabBarPosition.label "Position:">
+<!ENTITY tabBarPosition.top.label "Top (above content)">
+<!ENTITY tabBarPosition.bottom.label "Bottom (below content)">
+<!ENTITY tabScroll.label "When tabs don't fit width:">
+<!ENTITY tabScroll.none "Scrollable without buttons">
+<!ENTITY tabScroll.leftRightButtons "Scrollable with buttons on both sides">
+<!ENTITY tabScroll.rightButtons "Scrollable with buttons on right side">
+<!ENTITY tabScroll.rightButtons.rtl "Scrollable with buttons on left side">
+<!ENTITY tabScroll.multibar "Multi-row">
+<!ENTITY maxrow.label "Max number of rows to display:">
+<!ENTITY pinnedTabScroll.label "Allow pinned tabs to scroll">
+<!ENTITY offsetAmountToScroll.label "When scrolling show part of next out-of-sight tab">
+<!ENTITY smoothScroll.label "Enable smooth scroll">
+<!ENTITY scrolldelay.label "Scroll Delay (time between scroll repetition)">
+<!ENTITY currenttab.style.label "Current tab">
+<!ENTITY unloadedtabs.style.label "Unloaded tabs">
+<!ENTITY unreadtabs.style.label "Unread tabs">
+<!ENTITY othertabs.style.label "Other tabs">
+<!ENTITY setstyles.label "Customize Styles">
+<!ENTITY extraIcons.label1 "Icons for">
+<!ENTITY extraIcons.locked "Locked">
+<!ENTITY extraIcons.protected "Protected">
+<!ENTITY extraIcons.autoreload "Auto Reload">
+<!ENTITY extraIcons.hideonpinned "Hide on pinned tabs">
+<!ENTITY progressMeter.label "Progress meter on tabs">
+<!ENTITY showTabX.labelBegin "Close tab button">
+<!ENTITY showTabX.left "Place on left side">
+<!ENTITY showTabX.rtl "Place on right side">
+<!ENTITY milliseconds.label "msec">
+<!-- LOCALIZATION NOTE          change this only if you need to change the width -->
+<!ENTITY showTabX.popup.width "13em">
+<!ENTITY showTabX.always "on all">
+<!ENTITY showTabX.current "on current">
+<!ENTITY showTabX.hover "on pointed for">
+<!ENTITY showTabX.alwaysExeption "on all tabs wider than">
+<!ENTITY showTabX.currentHover "on current & pointed for">
+<!ENTITY minWidth.label "Tab Width:">
+<!ENTITY widthTo.label "to">
+<!ENTITY widthPixels.label "pixels">
+<!ENTITY onLeftDisabled.label "Can't place button on left side with the current theme">
+<!ENTITY flexTabs.label "Tab width fits to tab title">
+<!ENTITY bookastitle.label "Use bookmark name as tab title">
+<!-- LOCALIZATION NOTE:          change this only if you need to change the width -->
+<!ENTITY toolbar.description.width "21em">
+<!ENTITY toolbar.description "You can customize which Tab Mix Plus buttons to show in your Toolbar">
+<!ENTITY toolbar.button.label "Customize">
+<!ENTITY toolbar.visible.caption "Visible buttons">
+<!ENTITY toolbar.novisible.label "There are no visible buttons">
+<!ENTITY toolbar.hidden.caption "Hidden buttons">
+<!ENTITY toolbar.nohidden.label "There are no hidden buttons">
+<!ENTITY mouseGesture.label "Mouse Gestures">
+<!ENTITY mouseClick.label "Mouse Clicking">
+<!ENTITY mouseHoverSelect.labelBegin "Select tab pointed for">
+<!ENTITY tabFlip.label "Switch to last selected tab when clicking current one">
+<!ENTITY tabFlip.delay "Use a delay of">
+<!ENTITY clickFocus.label "Mouse click (down and release) to select a tab">
+<!ENTITY removeEntries.label "Remove Tab Mix Plus menu list entries using middle-click">
+<!ENTITY lockTabSizingOnClose.label "When closing a tab, other tabs should not resize until cursor leaves toolbar region">
+<!ENTITY removeEntries.tooltip "Includes closed tabs, closed windows, and saved sessions">
+<!ENTITY tabbarscrolling.caption "When scrolling over the tab-bar">
+<!ENTITY tabbarscrolling.holdShift.label "Hold Shift while scrolling to switch between these options">
+<!ENTITY tabbarscrolling.selectTab.label "Change selected tab">
+<!ENTITY tabbarscrolling.scrollAllTabs.label "Scroll all tabs">
+<!ENTITY tabbarscrolling.inverse.label "Inverse scroll direction">
+<!ENTITY double.label "Double-click">
+<!ENTITY middle.label "Middle-click">
+<!ENTITY ctrl.label "Ctrl-click">
+<!ENTITY cmd.label "Cmd-Click">
+<!ENTITY shift.label "Shift-click">
+<!ENTITY alt.label "Alt-Click">
+<!ENTITY ontab.label "on a tab:">
+<!ENTITY ontabbar.label "on the tabbar:">
+<!ENTITY clicktab.label "Choose command to perform when clicking on tab or tabbar">
+<!ENTITY ontabbar.dblClick.label "Prevent double click on Tab-bar from changing window size.">
+<!ENTITY ontabbar.click.label "Prevent clicking on Tab-bar from dragging the window.">
+<!ENTITY clicktab.default "Firefox default or other extension">
+<!ENTITY clicktab.nothing "Does nothing">
+<!ENTITY clicktab.addtab "Open a new tab">
+<!ENTITY clicktab.duplicatetab "Duplicates the tab">
+<!ENTITY clicktab.duplicatetabw "Duplicates the tab in a new window">
+<!ENTITY clicktab.detachtab "Move the tab to a new window">
+<!ENTITY clicktab.protecttab "Protects the tab">
+<!ENTITY clicktab.locktab "Locks the tab">
+<!ENTITY clicktab.freezetab "Protects and Locks the tab">
+<!ENTITY clicktab.renametab "Renames the tab">
+<!ENTITY clicktab.copyTabUrl "Copies the tab's URL to the clipboard">
+<!ENTITY clicktab.copyUrlFromClipboard "Load URL from clipboard">
+<!ENTITY clicktab.selectMerge "Selects the tab for merging">
+<!ENTITY clicktab.mergeTabs "Merges windows together">
+<!ENTITY clicktab.bookTab "Bookmarks the tab">
+<!ENTITY clicktab.bookTabs "Bookmarks all tabs">
+<!ENTITY clicktab.reloadtab "Reloads the tab">
+<!ENTITY clicktab.reloadtabs "Reloads all tabs">
+<!ENTITY clicktab.reloadothertabs "Reloads other tabs">
+<!ENTITY clicktab.reloadlefttabs "Reloads left tabs">
+<!ENTITY clicktab.reloadrighttabs "Reloads right tabs">
+<!ENTITY clicktab.autoReloadTab "Activate/Deactivate tab auto reload">
+<!ENTITY clicktab.removeall "Close all tabs">
+<!ENTITY clicktab.removeother "Close other tabs">
+<!ENTITY clicktab.removesimilar "Close tabs from similar domain">
+<!ENTITY clicktab.removetoLeft "Close Tabs to the Left">
+<!ENTITY clicktab.removetoRight "Close Tabs to the Right">
+<!ENTITY clicktab.uctab "Reopens last closed tab">
+<!ENTITY clicktab.ucatab "Reopens all closed tabs">
+<!ENTITY clicktab.snapback "SnapBack Tab">
+<!ENTITY clicktab.ietab "Opens the tab in IE">
+<!ENTITY contentLoad "Middle-click loads url from clipboard">
+<!ENTITY context.tab "Tab Context Menu">
+<!ENTITY context.main "Main Context Menu">
+<!ENTITY context.tools "Tools Menu">
+<!ENTITY showOnTabbar.label "Show Tab Context Menu on tabbar">
+<!ENTITY showtabBarContext.label "Show in Tab Context Menu">
+<!ENTITY showContentAreaContext.label "Show in Main Context Menu">
+<!ENTITY showToolsMenu.label "Show in Tools Menu">
+<!ENTITY startupHomePage.label "Show my home page">
+<!ENTITY startupBlankPage.label "Show a blank page">
+<!ENTITY startupLastSession.label "Show my windows and tabs from last time">
+<!ENTITY sm.extension.description1 "Tab Mix Plus detect that Session Manager Extension is installed">
+<!ENTITY sm.extension.description2 "Tab Mix Plus session manager will be disabled">
+<!ENTITY sm.extension.description3 "You can click the button on the right to open Session Manager Options dialog">
+<!ENTITY sm.extension.description4 "Convert My sessions data from Tab Mix Plus format to Session Manager extension format">
+<!ENTITY sm.extension.convert.label "Convert">
+<!ENTITY sm.extension.chooseFile.label0 "Let me choose which data file to convert">
+<!ENTITY sm.extension.chooseFile.label1 "Convert Tab Mix Plus sessions from the current profile">
+<!ENTITY ss.enable.label "Use Firefox's built-in Session Restore feature">
+<!ENTITY ss.enable.tooltip "Uncheck to allow the use with Tab Mix Plus Session Manager">
+<!ENTITY ss.advanced_setting "Advanced Setting">
+<!ENTITY ss.advanced_setting.warning "Don't change these, unless you know what you're doing">
+<!ENTITY ss.interval "Minimum time interval between two state saves">
+<!ENTITY ss.interval.seconds "(in milliseconds)">
+<!ENTITY ss.privacy_level "Save sensitive data (form data, POSTDATA and cookies) for">
+<!ENTITY ss.privacy_level.allsites "All sites">
+<!ENTITY ss.privacy_level.unencrypted "Unencrypted sites only">
+<!ENTITY ss.privacy_level.nosites "No sites at all">
+<!ENTITY ss.postdata.label1 "Maximum amount of POSTDATA to be stored">
+<!ENTITY ss.postdata.label2 "(in bytes, -1 = all of it)">
+<!ENTITY sessionManger.enable "Enable Session Manager">
+<!ENTITY crashRecovery.enable "Enable Crash Recovery">
+<!ENTITY sm.StartExit "Start/Exit">
+<!ENTITY sm.restore "Restore">
+<!ENTITY sm.preserve "Preserve">
+<!ENTITY sm.start "When Browser Starts:">
+<!ENTITY sm.start.restore "Restore">
+<!ENTITY sm.start.ask "Ask Before Restoring">
+<!ENTITY sm.start.nothing "Don't Restore">
+<!ENTITY sm.exit "When Browser Exits:">
+<!ENTITY sm.exit.save "Save Session">
+<!ENTITY sm.exit.ask "Ask Before Saving">
+<!ENTITY sm.exit.nothing "Don't Save">
+<!ENTITY sm.startup "Startup Session:">
+<!ENTITY sm.lastsession "Last Session">
+<!ENTITY sm.previouslast "Previous to Last">
+<!ENTITY sm.chooseifempty "Choose another if empty">
+<!ENTITY sm.restore.options "When Restoring Sessions:">
+<!ENTITY sm.restore.overwrite "Overwrite existing windows">
+<!ENTITY sm.restore.overwriteTabs "And tabs">
+<!ENTITY sm.restore.closedWinList "Save windows in closed windows list">
+<!ENTITY sm.restore.merge "Join multiple windows into one">
+<!ENTITY sm.restore.bypassCache "Bypass cache when restoring">
+<!ENTITY sm.notrestore.label "When not restoring on start">
+<!ENTITY sm.restorePinned.label "Restore my pinned tabs from last time">
+<!ENTITY sm.preserve.options "Preserve Tabs:">
+<!ENTITY sm.preserve.history "History">
+<!ENTITY sm.preserve.protect "Protect Status">
+<!ENTITY sm.preserve.locked "Lock Status">
+<!ENTITY sm.preserve.permission "Permissions">
+<!ENTITY sm.preserve.scroll1 "Scroll Position">
+<!ENTITY sm.restore.winOptions "Preserve Windows:">
+<!ENTITY sm.restore.selectedTab "Selected tab">
+<!ENTITY sm.restore.closedTabs "Closed tabs list">
+<!ENTITY incompatible.extensions "Some of your extensions are incompatible with Tab Mix Plus, it is recommended that you will disable or uninstall those extensions.">
+<!ENTITY incompatible.button.label "Show List">
diff --git a/chrome/locale/eu/session-manager.properties b/chrome/locale/eu/session-manager.properties
new file mode 100644
index 0000000..772f281
--- /dev/null
+++ b/chrome/locale/eu/session-manager.properties
@@ -0,0 +1,122 @@
+sm.saveClosedTab.chkbox.label=Save closed tabs list with this session
+sm.button.continue.label=Continue
+sm.button.continue.accesskey=C
+sm.askBeforSave.title=Session Manager - Save Session
+sm.askBeforSave.msg0=Would you like to save your session?
+sm.askBeforSave.msg2=Only non-private windows will be save to disk
+sm.askBeforSave.msg1=If you don\'t save, next time you start the browser the \'Last Session\' will be empty.
+sm.askBeforSave.button0.label=Save Session
+sm.askBeforSave.button0.accesskey=S
+sm.askBeforSave.button1.label=Don\'t Save
+sm.askBeforSave.button1.accesskey=D
+sm.corrupted.title=Session Manager - Corrupted Database
+sm.corrupted.msg0=Session Manager cannot load its database from corrupted session.rdf.
+sm.corrupted.msg1=The file session.rdf will be deleted, a copy can be found in session.old in your profile. sessions backups are in <profile>/sessionbackups
+sm.areYouSure.msg=Are you sure you want to continue?
+sm.canChooseStartup.msg=You can choose a session to be your new startup session from the list:
+sm.addtoStartup.title=Session Manager - Add to Startup Session
+sm.addtoStartup.msg.windows=You are about to add window(s) to your startup session:
+sm.addtoStartup.msg.tabs=You are about to add tab(s) to your startup session:
+sm.addtoStartup.button0.label=Add to Session
+sm.addtoStartup.button0.accesskey=A
+sm.addtoStartup.button1.label=Don\'t Add
+sm.addtoStartup.button1.accesskey=D
+sm.replaceStartup.title=Session Manager - Override Startup Session
+sm.replaceStartup.msg=You are about to replace your startup session:
+sm.replaceStartup.button0.label=Replace Session
+sm.replaceStartup.button0.accesskey=R
+sm.replaceStartup.button1.label=Don\'t Replace
+sm.replaceStartup.button1.accesskey=D
+sm.removeStartup.title=Session Manager - Delete Startup Session
+sm.removeStartup.msg0=You are about to delete your startup session:
+sm.removeStartup.msg1=Choose a session to be your new startup session from the list:
+sm.removeStartup.button0.label=Delete
+sm.removeStartup.button0.accesskey=D
+sm.removeStartup.button1.label=Don\'t Delete
+sm.removeStartup.button1.accesskey=T
+sm.title=Session Manager
+sm.dontSaveBlank.msg=Session Manager doesn\'t save blank windows
+sm.sessoinSave.error=Error in Session Manager, session didn\'t save
+sm.sessionName.title.rename=Session Manager - Rename Session
+sm.sessionName.title.saveprevious=Session Manager - Save Session
+sm.sessionName.title.savethiswindow=Session Manager - Save This Window
+sm.sessionName.title.saveallwindows=Session Manager - Save All Windows
+sm.sessionName.msg0=Enter Session Name:
+sm.sessionName.msg1=Name must be at least one letter or number.
+sm.sessionName.msg2=This name is already in use!
+sm.sessionName.msg3=Are you sure you want to replace the session?
+sm.sessionName.button0.label=Rename Session
+sm.sessionName.button0.accesskey=R
+sm.sessionName.button1.label=Don\'t Rename
+sm.sessionName.button1.accesskey=D
+sm.session.empty=empty
+sm.session.tabs=T
+sm.session.windows=W
+sm.removeAll.title.session=Session Manager - Delete All Saved Sessions
+sm.removeAll.title.closedwindow=Session Manager - Delete All Closed Windows
+sm.removeAll.msg0=Are you sure you want to delete all your saved sessions?
+sm.removeAll.msg1=If you choose \'Delete\' your startup session will be the \'Last Session\'.
+sm.removeAll.msg2=Are you sure you want to delete all your closed windows?
+sm.sessionMenu.last=Last Session
+sm.sessionMenu.lastDefault=Last Session - Default
+sm.sessionMenu.lastgood=Last Good Session
+sm.sessionMenu.previous=Previous to Last
+sm.sessionMenu.crashed=Crashed Session
+sm.afterCrash.title=Session Manager - Restore after Crash
+sm.afterCrash.chkbox.label=Enable Session Manager
+sm.afterCrash.msg0=Your last session Crashed!
+sm.afterCrash.msg0.again=Your last Crashed session Crashed again!
+sm.afterCrash.msg1=Choose session to restore from the list:
+sm.afterCrash.msg2=Choose how to continue
+sm.afterCrash.msg3=Session Manager is currently disabled, if you enable Session Manager, you will be able to restore crashed sessions, closed sessions, saved sessions and closed windows from the Session Manager menu.
+sm.afterCrash.msg4=You can also restore the crashed session later from the Session Manager menu.
+sm.afterCrash.msg5=but nothing was saved.
+sm.afterCrash.msg6=but there isn\'t any open window in your Crashed session
+sm.afterCrash.msg7=Choose window to restore from Closed Windows list
+sm.afterCrash.msg8=(you can also restore closed windows later from the Closed Windows menu)
+sm.afterCrash.msg9=Your Crashed session is empty!
+sm.afterCrash.msg10=Session Manager did not find any sessions to restore from.
+sm.afterCrash.button0.label=Restore Session
+sm.afterCrash.button0.accesskey=R
+sm.afterCrash.button0.crashed.label=Restore Crashed Session
+sm.afterCrash.button0.crashed.accesskey=R
+sm.afterCrash.button1.label=Don\'t Restore
+sm.afterCrash.button1.accesskey=D
+sm.start.title=Session Manager - Restore Session
+sm.start.chkbox.label=Enable Crash Recovery
+sm.start.msg0=Your Startup session is empty!
+sm.start.msg1=Crash Recovery is currently disabled, if you enable Crash Recovery, you will be able to restore crashed sessions.
+sm.start.msg2=Error while looking for your startup session, your saved startup session does not exist.
+sm.restoreError.msg0=Error in session manager file!
+sm.restoreError.msg1=Delete the session you tried to restore
+sm.disable.msg=Firefox has a built-in session restore feature.
+sm.disable.msg1=Would you like to enable built-in session restore and disable the Tab Mix Plus Session Manager?
+sm.disable.msg2=Would you like to enable Tab Mix Plus Session Manager and disable the built-in session restore?
+sm.extension.convert.msg1=Would you like to convert your sessions data from Tab Mix Plus format to Session Manager extension format?
+sm.extension.convert.msg2=You can do it later from Tab Mix Plus session options window.
+sm.extension.convert.nosessions=There is no session in this file.
+sm.extension.convert.alreadyconverted=This session file have already been converted to Session Manager extension format.
+sm.extension.convert.doitagain=Do you wish to convert them again?
+sm.extension.convert.unable=Unable to convert from session.rdf
+sm.extension.convert.many=sessions converted, would you like to delete any of them?
+sm.extension.convert.one=one session converted, would you like to delete it?
+sm.extension.convert.rename=You will be able to rename the session(s) later from Session Manager menu
+sm.extension.convert.selectfile=Select session.rdf file to convert
+sm.extension.convert.rdffiles=RDF Files
+sm.extension.convert.sessionfiles=Session Files
+sm.tabview.hiddengroups=More tabs restored into hidden groups.
+sm.tabview.hiddengroups.removed=Hidden tab groups was removed.
+sm.tabview.removed=The Tab Groups (Panorama) feature was removed from Firefox.
+sm.tabview.removed.learnMore.label=Learn More
+sm.tabview.removed.learnMore.accesskey=L
+sm.tabview.install.label=Install Tab Groups extension
+sm.tabview.install.accesskey=I
+sm.tabview.backup.session=History Session, backup with groups data
+sm.tabview.backup.crashed=Crashed Session, backup with groups data
+sm.tabview.backup.msg=Tab mix plus Session Manager has saved a backup of your session.
+sm.bookmarks.historySession= History Session
+sm.bookmarks.closedWindow= Closed Window
+sm.bookmarks.sessionFolder=Tab Mix Plus Sessions
+# LOCALIZATION NOTE (sm.bookmarks.migration.windowID):
+# %S is the window number in the session
+sm.bookmarks.migration.windowID= Window %S
diff --git a/chrome/locale/eu/tabmix.dtd b/chrome/locale/eu/tabmix.dtd
new file mode 100644
index 0000000..f9e24da
--- /dev/null
+++ b/chrome/locale/eu/tabmix.dtd
@@ -0,0 +1,131 @@
+<!ENTITY closedtabsbtn.label "Arestian itxitako fitxak">
+<!ENTITY closedtabsbtn.tooltip "Erakutsi itxitako fitxen zerrenda">
+<!ENTITY sessionbtn.tooltip "Display and Manage your Sessions">
+<!ENTITY tabslistbtn.label "Fitxa irekiak">
+<!ENTITY tabslistbtn.tooltip "Erakutsi fitxa irekien zerrenda">
+<!ENTITY closedwindowsbtn.label "Arestian itxitako leihoak">
+<!ENTITY closedwindowsbtn.tooltip "Erakutsi itxitako leihoen zerrenda">
+<!ENTITY page.header.title "Tab Mix Plus Hobespenak">
+<!ENTITY options.main.sessionbutton.label "Tab Mix Plus Session Manager">
+<!ENTITY session.Tools "Session Manager">
+<!ENTITY closedWin.label "Itxitako leihoen zerrenda">
+<!ENTITY duplicateTabMenu.label "Fitxa bikoiztu">
+<!ENTITY duplicateTabMenu.accesskey "Z">
+<!ENTITY duplicateinWin.label "Bikoiztu leiho berri batean">
+<!ENTITY duplicateinWin.accesskey "L">
+<!ENTITY detachTab.label "Mugitu leiho berri batera">
+<!ENTITY detachTab.accesskey "M">
+<!ENTITY mergeContext.label "Batu leihoak">
+<!ENTITY mergeContext.accesskey "B">
+<!ENTITY renametab.label "Aldatu fitxaren izena">
+<!ENTITY renametab.accesskey "M">
+<!ENTITY copytaburl.label "Kopiatu fitxaren URL">
+<!ENTITY copytaburl.accesskey "U">
+<!ENTITY reloadother.label "Birkargatu beste fitxak">
+<!ENTITY reloadother.accesskey "F">
+<!ENTITY reloadleft.label "Birkargatu ezkerreko fitxak">
+<!ENTITY reloadleft.accesskey "E">
+<!ENTITY reloadright.label "Birkargatu eskuineko fitxak">
+<!ENTITY reloadright.accesskey "R">
+<!ENTITY autoReloadTab.label "Birkargatu behin eta berriz">
+<!ENTITY autoReloadTab.accesskey "D">
+<!ENTITY autoReloadSite.label "Reload This Site Every">
+<!ENTITY autoReloadSite.accesskey "E">
+<!ENTITY afterthis.label "Fitxa honen ondoren">
+<!ENTITY bookmarktab.label "Egin fitxa honen laster-marka">
+<!ENTITY undoCloseListMenu.label "Itxitako fitxen zerrenda">
+<!ENTITY undoCloseListMenu.accesskey "X">
+<!ENTITY closeAllTabsMenu.label "Itxi fitxa oro">
+<!ENTITY closeall.accesskey "O">
+<!ENTITY closeSimilarTab.label "Itxi antzeko fitxak">
+<!ENTITY closeSimilarTab.accesskey "Z">
+<!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
+<!ENTITY closeleft.accesskey "E">
+<!ENTITY docShellMenu.label "Baimenak">
+<!ENTITY docShellMenu.accesskey "P">
+<!ENTITY freezeTabMenu.label "Izoztu fitxa">
+<!ENTITY freezeTabMenu.accesskey "F">
+<!ENTITY protectTabMenu.label "Babestu fitxa">
+<!ENTITY protectTabMenu.tooltip "Babestu fitxak itxi ez daitezen">
+<!ENTITY protectTabMenu.accesskey "B">
+<!ENTITY lockTabMenu.label "Lotu Fitxa">
+<!ENTITY lockTabMenu.tooltip "Lotura oro fitxa berri batean ireki">
+<!ENTITY lockTabMenu.accesskey "L">
+<!ENTITY bookmarktabs.label "Egin fitxa guztien laster-markak">
+<!ENTITY linkhere.label "Ireki lotura fitxa honetan">
+<!ENTITY linkhere.accesskey "h">
+<!ENTITY linkBackgroundTab.label "Ireki lotura atzeko planoan">
+<!ENTITY linkForegroundTab.label "Ireki lotura aurreko planoan">
+<!ENTITY linkBackgroundTab.accesskey "a">
+<!ENTITY linkForegroundTab.accesskey "u">
+<!ENTITY openalllinks.label "Ireki loturak fitxa berri batzuetan">
+<!ENTITY openalllinks.accesskey "x">
+<!ENTITY linkwithhistory.label "Ireki lotura bikoiztutako fitxa batean">
+<!ENTITY linkwithhistory.accesskey "z">
+<!ENTITY tabsList.label "Fitxa irekien zerrenda">
+<!ENTITY tabsList.accesskey "i">
+<!ENTITY allowImage.label "Irudia">
+<!ENTITY allowJavascript.label "JavaScript">
+<!ENTITY allowRedirect.label "Redirect">
+<!ENTITY allowPlugin.label "Plug-in">
+<!ENTITY allowFrame.label "Frame">
+<!ENTITY restoreincurrent.label "Birkargatu fitxa honetan">
+<!ENTITY restoreincurrent.accesskey "h">
+<!ENTITY restoreinwin.label "Birkargatu leiho berri batean">
+<!ENTITY restoreinwin.accesskey "b">
+<!ENTITY restoreintab.label "Birkargatu fitxa berri batean">
+<!ENTITY restoreintab.accesskey "f">
+<!ENTITY restoretab.label "Berreskuratu fitxa">
+<!ENTITY restoretab.accesskey "R">
+<!ENTITY bookmark.label "Egin lotura honen laster-marka">
+<!ENTITY bookmark.accesskey "l">
+<!ENTITY deletelist.label "Kendu zerrendatik">
+<!ENTITY deletelist.accesskey "k">
+<!ENTITY settings.label "Hobespenak">
+<!ENTITY saveWindow.label "Gorde leiho hau">
+<!ENTITY saveAllWindows.label "Gorde leiho guztiak">
+<!ENTITY sm.context.overwrite "Berreskuratu, Gainidatzi dagoen leiho(ak)">
+<!ENTITY sm.context.overwrite.key "G">
+<!ENTITY sm.context.restore.new "Berreskuratu leiho berri batzuetan">
+<!ENTITY sm.context.restore.newkey "b">
+<!ENTITY sm.context.replacethis "Replace, With This Window">
+<!ENTITY sm.context.replacethis.key "T">
+<!ENTITY sm.context.replaceall "Replace, With All Windows">
+<!ENTITY sm.context.replaceall.key "A">
+<!ENTITY sm.context.add "Gehitu leiho hau">
+<!ENTITY sm.context.add.key "h">
+<!ENTITY sm.context.addall "Gehitu leiho guztiak">
+<!ENTITY sm.context.addall.key "z">
+<!ENTITY sm.context.save "Gorde">
+<!ENTITY sm.context.save.key "G">
+<!ENTITY sm.context.rename "Aldatu izena">
+<!ENTITY sm.context.rename.key "d">
+<!ENTITY sm.context.bookmarkSession "Bookmark Session">
+<!ENTITY sm.context.bookmarkSession.key "B">
+<!ENTITY sm.context.delete "Ezabatu">
+<!ENTITY sm.context.delete.key "E">
+<!ENTITY sm.context.deleteall "Ezabatu dena">
+<!ENTITY sm.context.deleteall.key "n">
+<!ENTITY sm.context.startup "Set as Startup Session">
+<!ENTITY sm.context.startup.key "P">
+<!ENTITY sm.context.details "Show Counters, Date and Time in Session Menu">
+<!ENTITY sm.context.details.key "C">
+<!ENTITY tab.key "T">
+<!ENTITY window.key "N">
+<!ENTITY merge.key "M">
+<!ENTITY sortedTabs.label "Sorted Tabs">
+<!ENTITY sortedTabs.tooltip "Check to show the list sorted alphabetically">
+<!ENTITY enable.label "Enable">
+<!ENTITY custom.label "Custom">
+<!ENTITY enableTabs.label "Enable All Tabs">
+<!ENTITY disableTabs.label "Disable All Tabs">
+<!ENTITY seconds.label "seconds">
+<!ENTITY minutes.label "minutes">
+<!ENTITY minute.label "minute">
+<!ENTITY hideTabBar.label "Hide the tab bar">
+<!ENTITY hideTabBar.never.label "Never">
+<!ENTITY hideTabBar.never.key "N">
+<!ENTITY hideTabBar.onOneTab.label "When I have only one tab">
+<!ENTITY hideTabBar.onOneTab.key "E">
+<!ENTITY hideTabBar.always.label "Always">
+<!ENTITY hideTabBar.always.key "A">
diff --git a/chrome/locale/eu/tabmix.properties b/chrome/locale/eu/tabmix.properties
new file mode 100644
index 0000000..d547e41
--- /dev/null
+++ b/chrome/locale/eu/tabmix.properties
@@ -0,0 +1,49 @@
+extensions.{dc572301-7619-498c-a57d-39143191b318}.description= Tab browsing with an added boost.
+tmp.merge.warning.title= Closing window with non-merged tabs
+tmp.merge.warning.message= The selected tabs will be merged with another window, but the other tabs will now be closed with the current window.
+tmp.merge.warning.checkboxLabel= Always warn me when closing a window with tabs that aren\'t merging.
+tmp.merge.error= At least 2 windows have to be opened before you can merge them
+tmp.merge.private= You can not merge private window with non-private window.
+tmp.importPref.error1= Can not import because it is not a valid file.
+tmp.importPref.error2= Failed to import settings.
+tmp.sessionempty= Next time you start the browser, \'Last Session\' will be empty.
+droptoclose.label= Drop a tab to close it
+droplink.label=Drop at the center to replace the tab or at the sides to create a new tab
+flstOn.label= Tabs Focus to Last Selected - Press F9 to swap preference
+flstOff.label= Tabs Focus to Right - Press F9 to swap preference
+slideshowOn.label= Tab Rotation is On - Press F8 to turn off
+slideshowOff.label= Tab Rotation Off - Press F8 to turn on
+undoclosetab.clear.label= Clear Closed Tabs List
+undoclosetab.clear.accesskey= C
+undoClosedWindows.clear.label= Clear Closed Windows List
+undoClosedWindows.clear.accesskey= C
+protectedtabs.closeWarning.1=You are about to close %S protected tab. Are you sure you want to continue?
+protectedtabs.closeWarning.2=You are about to close %S protected tabs. Are you sure you want to continue?
+protectedtabs.closeWarning.3=You are about to close %S tabs, %S of them protected. Are you sure you want to continue?
+protectedtabs.closeWarning.4=Warn me when I attempt to close window with protected tabs
+window.closeWarning.1=Warn me when I attempt to close window with multiple tabs
+closeWindow.label=Close window
+confirm_autoreloadPostData_title=Warning!
+confirm_autoreloadPostData=The page on which you tried to enable Auto Reload contains POSTDATA.\nIf you enable Auto Reload, any action the form carries out (such as an online purchase) will be repeated.\n\nAre you sure that you want to enable Auto Reload?
+confirm_autoreloadPostData_remote=The page on which you tried to enable Auto Reload contains POSTDATA.\nIf you enable Auto Reload, any action the form carries out (such as an online purchase) will be lost.\n\nAre you sure that you want to enable Auto Reload?
+incompatible.title= Tab Mix Plus
+incompatible.msg0= The following extensions are integrated or incompatible with Tab Mix Plus.
+incompatible.msg1= Would you like to disable these extensions?
+incompatible.msg2= The incompatible extensions will be disabled after you restart your browser.
+incompatible.button0.label= Disable
+incompatible.button0.accesskey= D
+incompatible.button1.label= Don\'t Disable
+incompatible.button1.accesskey= O
+incompatible.button2.label= Disable and Restart
+incompatible.button2.accesskey= E
+incompatible.chkbox.label= Show this alert when browser starts
+tabmixoption.error.title= Tab Mix Plus Error
+tabmixoption.error.msg= You must have one browser window to use Tab Mix Plus Options
+# LOCALIZATION NOTE (rowsTooltip.rowscount):
+# Semicolon-separated list of plural forms. See:
+# http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 is the total number of rows
+# The singular form is not considered since this string is used only for
+# multiple rows.
+rowsTooltip.rowscount=;#1 Rows
+rowsTooltip.activetab=Active tab on row #1
diff --git a/chrome/locale/fa-IR/tabmix.dtd b/chrome/locale/fa-IR/tabmix.dtd
index 345e572..7b542f2 100644
--- a/chrome/locale/fa-IR/tabmix.dtd
+++ b/chrome/locale/fa-IR/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "ی">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "ی">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "ر">
 <!ENTITY docShellMenu.label "مجوزها">
 <!ENTITY docShellMenu.accesskey "ز">
 <!ENTITY freezeTabMenu.label "فریز کردن برگه">
diff --git a/chrome/locale/fi/misc.dtd b/chrome/locale/fi/misc.dtd
new file mode 100644
index 0000000..b9d909a
--- /dev/null
+++ b/chrome/locale/fi/misc.dtd
@@ -0,0 +1,17 @@
+<!ENTITY searchTabFocus.label "Lataa taustalla">
+<!ENTITY searchTabFocus.accesskey "B">
+<!ENTITY renametab.panel.title "Muokkaa välilehden nimeä">
+<!ENTITY renametab.reset.label "Palauta oletusnimi">
+<!ENTITY title.label "Nimike">
+<!ENTITY default.label "Oletus">
+<!ENTITY renametab.permanently.label "Muuta tämän välilehden nimi sen osoitteesta huolimatta">
+<!ENTITY renametab.permanently.tooltip "Välilehti historian kera - uusi nimi säilyy kun osoite muuttuu">
+<!ENTITY forum.label "Foorumi">
+<!ENTITY faq.label "UKK">
+<!ENTITY help.label "Apua">
+<!ENTITY tabmix.label "Tab Mix Plus">
+<!ENTITY reloadtime.label1 "Valitse aika listalta tai määritä itse">
+<!ENTITY specifyreload.label "Määritä uudelleenlatauksen aikaväli">
+<!ENTITY sanitizer.entry "Tallenneteut Tab Mix Plus -istunnot">
+<!ENTITY sanitizer.entry.accesskey "T">
+<!ENTITY sanitizer.entry.confirm "Oletko varma että haluat poistaa KAIKKI tallennetut tiedot mukaanlukien varmuuskopiot?">
diff --git a/chrome/locale/fi/pref-appearance.dtd b/chrome/locale/fi/pref-appearance.dtd
new file mode 100644
index 0000000..a659b39
--- /dev/null
+++ b/chrome/locale/fi/pref-appearance.dtd
@@ -0,0 +1,20 @@
+<!ENTITY tabStyles.label "Styles">
+<!ENTITY styles.label "Mukauta tyylejä">
+<!ENTITY currentTab.label "Nykyinen välilehti">
+<!ENTITY unloadedTabs.label "Suljetut välilehdet">
+<!ENTITY unreadTab.label "Lukemamattoman välilehdet">
+<!ENTITY hideRGB.label "Hide RGB">
+<!ENTITY showRGB.label "Show RGB">
+<!ENTITY unreadAfterReload.label "set tab as unread after reload">
+<!ENTITY disableBackground.label "Disable custom background colors">
+<!ENTITY squaredTabs.label "Apply background color for squared tabs">
+<!ENTITY otherTabs.label "Muut välilehdet">
+<!ENTITY italic.label "Kursiivi">
+<!ENTITY bold.label "Lihavoitu">
+<!ENTITY underline.label "Alleviivattu">
+<!ENTITY textcolor.label "Tekstin väri">
+<!ENTITY bgColor.label "Taustan väri">
+<!ENTITY bgTopColor.label "top">
+<!ENTITY bgBottomColor.label "bottom">
+<!ENTITY useThis.label "Käytä tätä tyyliä">
+<!ENTITY opacity.label "Läpikuultavuus">
diff --git a/chrome/locale/fi/pref-filetype.dtd b/chrome/locale/fi/pref-filetype.dtd
new file mode 100644
index 0000000..fcdd20e
--- /dev/null
+++ b/chrome/locale/fi/pref-filetype.dtd
@@ -0,0 +1,5 @@
+<!ENTITY filetype.options "Tiedostotyyppien muokkaus">
+<!ENTITY filetype.add "Lisää">
+<!ENTITY filetype.edit "Muokkaa">
+<!ENTITY filetype.delete "Poista">
+<!ENTITY filetype.new "Uusi tiedostotyyppi:">
diff --git a/chrome/locale/fi/pref-tabmix.dtd b/chrome/locale/fi/pref-tabmix.dtd
new file mode 100644
index 0000000..7e996aa
--- /dev/null
+++ b/chrome/locale/fi/pref-tabmix.dtd
@@ -0,0 +1,312 @@
+<!ENTITY tab.links "Linkit">
+<!ENTITY tab.events "Tapahtumat">
+<!ENTITY tab.mouse "Hiiri">
+<!ENTITY tab.appearance "Näyttö">
+<!ENTITY tab.menu "Valikko">
+<!ENTITY tab.session "Istunto">
+<!ENTITY tab.incompatible "Error">
+<!ENTITY apply.label "Käytä">
+<!ENTITY settings.export "Vie asetukset">
+<!ENTITY settings.import "Tuo asetukset">
+<!ENTITY settings.sync "Sync Preferences">
+<!ENTITY settings.default "Palauta oletusasetukset">
+<!ENTITY settings.revert "Revert">
+<!ENTITY generalWindowOpen.label "Avaa uusissa ikkunoissa avautuvat linkit:">
+<!ENTITY externalLink.useSeparate.label "Use separate preference for links from other applications">
+<!ENTITY externalLinkTarget.label "Avaa muista ohjelmista avatut linkit:">
+<!ENTITY linkTarget.tab "Uudella välilehdellä">
+<!ENTITY linkTarget.window "Uuteen ikkunaan">
+<!ENTITY linkTarget.current "Nykyiseen välilehteen">
+<!ENTITY linkTarget.accesskey "C">
+<!ENTITY divertedWindowOpen.label "JavaScript-ponnahdusikkunat:">
+<!ENTITY divertedWindowOpen.all "Avaan kaikki ponnahdusikkunat välilehtiin">
+<!ENTITY divertedWindowOpen.some "Salli kiinteäkokoiset ponnahdusikkunat">
+<!ENTITY divertedWindowOpen.none "Salli kaikki ponnahdusikkunat">
+<!ENTITY linkTarget.label "Avaa linkit, joissa on target-attribuutti, nykyiseen välilehteen">
+<!ENTITY targetIsFrame.label "Open links with target to existing frame in the current tab">
+<!ENTITY download.label "Estä tyhjät välilehdet tiedostoja ladattaessa">
+<!ENTITY edit.label "Muokkaa">
+<!ENTITY speLink.label "Pakota avaus uuteen välilehteen:">
+<!ENTITY speLink.none "Ei käytössä">
+<!ENTITY speLink.allLinks "All links">
+<!ENTITY speLink.external "Linkit muille sivustoille">
+<!ENTITY singleWindow.label "Ota käyttöön yhden ikkunan tila">
+<!ENTITY newTabs.label "New Tabs">
+<!ENTITY tabOpen.label "Välilehtien avaus">
+<!ENTITY tabFocus.label "Välilehtien kohdistus">
+<!ENTITY tabClose.label "Välilehtien sulkeminen">
+<!ENTITY tabMerge.label "Välilehtien yhdistäminen">
+<!ENTITY tabFeature.label "Välilehtien ominaisuudet">
+<!ENTITY newtab.label "Lataa uusiin välilehtiin">
+<!ENTITY replaceLastTabWith.label "Suljettaessa viimeinen välilehti, korvaa se">
+<!ENTITY newtab.blank "tyhjällä sivulla">
+<!ENTITY newtab.home "kotisivulla">
+<!ENTITY newtab.current "Nykyisellä sivulla">
+<!ENTITY newtab.duplicate "Duplicate Page">
+<!ENTITY newtab.location.1 "Uusi välilehtisivu">
+<!ENTITY newtab.placeholder.label "Default New Tab Page">
+<!ENTITY location.label.1 "Osoite">
+<!ENTITY focusContent.label "Focus content when loading non blank page">
+<!ENTITY openTabNext.label "Open new tabs next to current one">
+<!ENTITY openOtherTabNext.label "Open other tabs next to current one">
+<!ENTITY relatedAfterCurrent.label "Only if related to current tab">
+<!ENTITY openTabNext.tooltip1 "[a][b][c][1][2][3] -> [a][1][2][3][b][c]">
+<!ENTITY openDuplicateNext.label "Open duplicated tabs next to original">
+<!ENTITY openTabNext.tooltip "[a][b][c][1][2][3] -> [a][3][2][1][b][c]">
+<!ENTITY openTabNextInverse.label "Change opening order">
+<!ENTITY openTabNextInverse.tooltip "[a][3][2][1][b][c] -> [a][1][2][3][b][c]">
+<!ENTITY openTabNextInverse.tooltip1 "Open new tab next to the tab last opened from the current tab (since it was last selected)">
+<!ENTITY lockTabs.label "Lock tabs">
+<!ENTITY lockNewTabs.label "Lock New tabs">
+<!ENTITY lockAppTabs.label "Lock App tabs">
+<!ENTITY updateLockState.label "Apply changes to open tabs">
+<!ENTITY openNewTab.label "Open tabs from:">
+<!ENTITY openBookmarks.label "Bookmarks">
+<!ENTITY openPlacesGroups.label "Groups of bookmarks/history">
+<!ENTITY openPlacesGroups.tooltip "Don't override tabs when opening a group of bookmarks/history">
+<!ENTITY openHistory.label "History">
+<!ENTITY openUrl.label "Address bar">
+<!ENTITY openSearch.label "Search bar">
+<!ENTITY middlecurrent1.label "Middle-click or Control-click opens items in current tab">
+<!ENTITY middlecurrent.tooltip "Only for bookmarks, history, links forced to open in new tab">
+<!ENTITY tabFocus.caption "Focus/Select tabs that open from:">
+<!ENTITY selectTab.label "Links">
+<!ENTITY selectDivertedTab.label "Diverted windows">
+<!ENTITY selectTabFromExternal.label "Other applications">
+<!ENTITY selectTabCommand.label "New tab commands">
+<!ENTITY contextMenuSearch.label "Ponnahdusvalikkohaku:">
+<!ENTITY selectTabBH.label "Bookmarks/History">
+<!ENTITY duplicateTab.label "Duplicate Tab">
+<!ENTITY inversefocus1.label "Inverse Middle-click or Control-click focus of:">
+<!ENTITY warning.caption.label "Warning">
+<!ENTITY warnOnCloseProtected.label "Warn me when closing window with protected tabs">
+<!ENTITY warnOnCloseWindow.label "Warn me when closing window with multiple tabs">
+<!ENTITY lasttab.caption.label "Closing last tab">
+<!ENTITY keepWindow.label.3.1 "Do not close window when closing last tab">
+<!ENTITY keeptab.label "Prevent last tab from closing">
+<!ENTITY closeOnMerge.label "Close windows once they have merged">
+<!ENTITY warnOnMerge.label "Warn when closing tabs that aren't being merged">
+<!ENTITY currenttab.caption.label "Closing current tab">
+<!ENTITY focusTab.labelBegin "When closing current tab, focus:">
+<!ENTITY focusTab.firstTab "First tab">
+<!ENTITY focusTab.leftTab "Left tab">
+<!ENTITY focusTab.rightTab "Right tab">
+<!ENTITY focusTab.lastTab "Last tab">
+<!ENTITY focusTab.lastSelectedTab "Last selected tab">
+<!ENTITY focusTab.openerTab "Opener/right tab">
+<!ENTITY focusTab.openerTab.rtl "Opener/left tab">
+<!ENTITY focusTab.lastOpenedTab "Last opened tab">
+<!ENTITY undoClose.label "Enable undo close tabs">
+<!ENTITY undoCloseCache.label "Max number of closed tabs to remember:">
+<!ENTITY undoClosepos.label "Restore the tab's original position">
+<!ENTITY menuonlybutton.label "Make the toolbar button display only a list">
+<!ENTITY ctrltab.label "Ctrl-Tab navigates tabs in the most recently used order">
+<!ENTITY cmdtab.label "Cmd-Tab navigates tabs in the most recently used order">
+<!ENTITY ctrltab.tabPreviews "Show tab previews">
+<!ENTITY ctrltab.popup "Ctrl-Tab displays a tab list popup menu">
+<!ENTITY cmdtab.popup "Cmd-Tab displays a tab list popup menu">
+<!ENTITY tabpopup.mouse "Tab list responds to the mouse">
+<!ENTITY mergeNoTabSelection.label "Merge windows when no tabs are selected">
+<!ENTITY mergeTabSelection.label "Merging after selecting tabs">
+<!ENTITY mergeall.label "Merge all windows into one">
+<!ENTITY mergelastfocused.label "Merge only current window with last focused">
+<!ENTITY mergePopups.label "Also take popup windows">
+<!ENTITY popupNextToOpener.label "Place popups next to their openers">
+<!ENTITY activateSlideshow.label "Pressing #1 rotates tabs every">
+<!ENTITY toggleAnimation.label "Disable Open/Close tab animation">
+<!ENTITY reloadEvery.matchAddress.label "Lataa välilehti uudelleen riippumatta sen osoitteesta">
+<!ENTITY reloadEvery.onReloadButton.label "Show Reload Every menu on Reload button">
+<!ENTITY seconds.label "seconds">
+<!ENTITY minutes.label "min">
+<!ENTITY tabBarAppearance.label "Tab Bar">
+<!ENTITY tabAppearance.label "Tab">
+<!ENTITY toolBarAppearance.label "ToolBar">
+<!ENTITY show.ontabbar.label "Show on Tab bar">
+<!ENTITY show.ontab.label "Show on Tab">
+<!ENTITY dragNewTabButton.tooltip "Drag 'New Tab' button to your tab-bar to enable this option.">
+<!ENTITY hideTabBarButton.label "Close tab button">
+<!ENTITY newTabButton.label "New tab button">
+<!ENTITY newTabButton.posiotion.left.label "on Left side">
+<!ENTITY newTabButton.posiotion.right.label "on Right side">
+<!ENTITY newTabButton.posiotion.afterlast.label "After last tab">
+<!ENTITY allTabsButton.label "All tabs button">
+<!ENTITY tabBarSpace.label "Extra spaces on both sides">
+<!ENTITY tabBarSpace.tooltip "For clicking and dropping something on tab bar">
+<!ENTITY tabbar.label "Hide tab bar when only one tab is open">
+<!ENTITY moveTabOnDragging.label "When dragging a tab move it directly">
+<!ENTITY dropIndicator.label "Drop indicator">
+<!ENTITY dropIndicator-native.label "Native style">
+<!ENTITY dropIndicator-builtin.label "Built-in style">
+<!ENTITY verticalTabbar.description "Use treeStyleTab or VerticalTab extension to control these preferences.">
+<!ENTITY tabBarPosition.label "Position:">
+<!ENTITY tabBarPosition.top.label "Top (above content)">
+<!ENTITY tabBarPosition.bottom.label "Bottom (below content)">
+<!ENTITY tabScroll.label "When tabs don't fit width:">
+<!ENTITY tabScroll.none "Scrollable without buttons">
+<!ENTITY tabScroll.leftRightButtons "Scrollable with buttons on left and right sides">
+<!ENTITY tabScroll.rightButtons "Scrollable with buttons on right side">
+<!ENTITY tabScroll.rightButtons.rtl "Scrollable with buttons on left side">
+<!ENTITY tabScroll.multibar "Multi-row">
+<!ENTITY maxrow.label "Max number of rows to display:">
+<!ENTITY pinnedTabScroll.label "Allow pinned tabs to scroll">
+<!ENTITY offsetAmountToScroll.label "Vieritettäessä näytä osa seuraavasta piiloon jäävästä välilehdestä">
+<!ENTITY smoothScroll.label "Käytä pehmeää vieritystä">
+<!ENTITY scrolldelay.label "Scroll Delay (time between scroll repetition)">
+<!ENTITY currenttab.style.label "Current tab">
+<!ENTITY unloadedtabs.style.label "Suljetut välilehdet">
+<!ENTITY unreadtabs.style.label "Unread tabs">
+<!ENTITY othertabs.style.label "Other Tabs">
+<!ENTITY setstyles.label "Customize Styles">
+<!ENTITY extraIcons.label1 "Icons for">
+<!ENTITY extraIcons.locked "Locked">
+<!ENTITY extraIcons.protected "Protected">
+<!ENTITY extraIcons.autoreload "Auto-Reload">
+<!ENTITY extraIcons.hideonpinned "Hide on pinned tabs">
+<!ENTITY progressMeter.label "Progress meter on tabs">
+<!ENTITY showTabX.labelBegin "Close tab button">
+<!ENTITY showTabX.left "Place on left side">
+<!ENTITY showTabX.rtl "Place on right side">
+<!ENTITY milliseconds.label "msec">
+<!-- LOCALIZATION NOTE          change this only if you need to change the width -->
+<!ENTITY showTabX.popup.width "13em">
+<!ENTITY showTabX.always "on all">
+<!ENTITY showTabX.current "on current">
+<!ENTITY showTabX.hover "on pointed for">
+<!ENTITY showTabX.alwaysExeption "on all tabs wider than">
+<!ENTITY showTabX.currentHover "on current & pointed for">
+<!ENTITY minWidth.label "Tab Width:">
+<!ENTITY widthTo.label "to">
+<!ENTITY widthPixels.label "pixels">
+<!ENTITY onLeftDisabled.label "Can't place button on left side with the current theme">
+<!ENTITY flexTabs.label "Tab width fits to tab title">
+<!ENTITY bookastitle.label "Use bookmark name as tab title">
+<!-- LOCALIZATION NOTE:          change this only if you need to change the width -->
+<!ENTITY toolbar.description.width "21em">
+<!ENTITY toolbar.description "You can customize which Tab Mix Plus buttons to show in your Toolbar">
+<!ENTITY toolbar.button.label "Customize">
+<!ENTITY toolbar.visible.caption "Visible buttons">
+<!ENTITY toolbar.novisible.label "There are no visible buttons">
+<!ENTITY toolbar.hidden.caption "Hidden buttons">
+<!ENTITY toolbar.nohidden.label "There are no hidden buttons">
+<!ENTITY mouseGesture.label "Mouse Gestures">
+<!ENTITY mouseClick.label "Mouse Clicking">
+<!ENTITY mouseHoverSelect.labelBegin "Select tab pointed for">
+<!ENTITY tabFlip.label "Switch to last selected tab when clicking current one">
+<!ENTITY tabFlip.delay "Use a delay of">
+<!ENTITY clickFocus.label "Mouse click (down and release) to select a tab">
+<!ENTITY removeEntries.label "Remove Tab Mix Plus menu list entries using middle-click">
+<!ENTITY lockTabSizingOnClose.label "Suljettaessa välilehteä, säilytä muiden välilehtien koko kunnes kursori poistuu työkalupalkin alueelta">
+<!ENTITY removeEntries.tooltip "Includes closed tabs, closed windows, and saved sessions">
+<!ENTITY tabbarscrolling.caption "Vieritettäessä välilehtipalkin päällä">
+<!ENTITY tabbarscrolling.holdShift.label "Pidä Shift pohjassa vieritettäessä vaihtaaksesi näiden valintojen välillä">
+<!ENTITY tabbarscrolling.selectTab.label "Vaihda valittu välilehti">
+<!ENTITY tabbarscrolling.scrollAllTabs.label "Vieritä kaikki välilehdet">
+<!ENTITY tabbarscrolling.inverse.label "Käännä vierityksen suunta">
+<!ENTITY double.label "Double-click">
+<!ENTITY middle.label "Middle-click">
+<!ENTITY ctrl.label "Ctrl-click">
+<!ENTITY cmd.label "Cmd-Click">
+<!ENTITY shift.label "Shift-click">
+<!ENTITY alt.label "Alt-Click">
+<!ENTITY ontab.label "on a tab:">
+<!ENTITY ontabbar.label "on the tabbar:">
+<!ENTITY clicktab.label "Choose command to perform when clicking on tab or tabbar">
+<!ENTITY ontabbar.dblClick.label "Prevent double click on Tab-bar from changing window size.">
+<!ENTITY ontabbar.click.label "Prevent clicking on Tab-bar from dragging the window.">
+<!ENTITY clicktab.default "Firefox default or other extension">
+<!ENTITY clicktab.nothing "Does nothing">
+<!ENTITY clicktab.addtab "Open a new tab">
+<!ENTITY clicktab.duplicatetab "Duplicates the tab">
+<!ENTITY clicktab.duplicatetabw "Duplicates the tab in a new window">
+<!ENTITY clicktab.detachtab "Move the tab to a new window">
+<!ENTITY clicktab.protecttab "Protects the tab">
+<!ENTITY clicktab.locktab "Locks the tab">
+<!ENTITY clicktab.freezetab "Protects and Locks the tab">
+<!ENTITY clicktab.renametab "Renames the tab">
+<!ENTITY clicktab.copyTabUrl "Copies the tab's URL to the clipboard">
+<!ENTITY clicktab.copyUrlFromClipboard "Load URL from clipboard">
+<!ENTITY clicktab.selectMerge "Selects the tab for merging">
+<!ENTITY clicktab.mergeTabs "Merges windows together">
+<!ENTITY clicktab.bookTab "Bookmarks the tab">
+<!ENTITY clicktab.bookTabs "Bookmarks all tabs">
+<!ENTITY clicktab.reloadtab "Reloads the tab">
+<!ENTITY clicktab.reloadtabs "Reloads all tabs">
+<!ENTITY clicktab.reloadothertabs "Reloads other tabs">
+<!ENTITY clicktab.reloadlefttabs "Reloads left tabs">
+<!ENTITY clicktab.reloadrighttabs "Reloads right tabs">
+<!ENTITY clicktab.autoReloadTab "Activate/Deactivate tab auto reload">
+<!ENTITY clicktab.removeall "Close all tabs">
+<!ENTITY clicktab.removeother "Close other tabs">
+<!ENTITY clicktab.removesimilar "Close tabs from similar domain">
+<!ENTITY clicktab.removetoLeft "Close Tabs to the Left">
+<!ENTITY clicktab.removetoRight "Close Tabs to the Right">
+<!ENTITY clicktab.uctab "Reopens last closed tab">
+<!ENTITY clicktab.ucatab "Reopens all closed tabs">
+<!ENTITY clicktab.snapback "SnapBack Tab">
+<!ENTITY clicktab.ietab "Opens the tab in IE">
+<!ENTITY contentLoad "Middle-click loads url from clipboard">
+<!ENTITY context.tab "Tab Context Menu">
+<!ENTITY context.main "Main Context Menu">
+<!ENTITY context.tools "Tools Menu">
+<!ENTITY showOnTabbar.label "Show Tab Context Menu on tabbar">
+<!ENTITY showtabBarContext.label "Show in Tab Context Menu">
+<!ENTITY showContentAreaContext.label "Show in Main Context Menu">
+<!ENTITY showToolsMenu.label "Show in Tools Menu">
+<!ENTITY startupHomePage.label "Show my home page">
+<!ENTITY startupBlankPage.label "Show a blank page">
+<!ENTITY startupLastSession.label "Show my windows and tabs from last time">
+<!ENTITY sm.extension.description1 "Tab Mix Plus detect that Session Manager Extension is installed">
+<!ENTITY sm.extension.description2 "Tab Mix Plus session manager will be disabled">
+<!ENTITY sm.extension.description3 "You can click the button on the right to open Session Manager Options dialog">
+<!ENTITY sm.extension.description4 "Convert My sessions data from Tab Mix Plus format to Session Manager extension format">
+<!ENTITY sm.extension.convert.label "Convert">
+<!ENTITY sm.extension.chooseFile.label0 "Let me choose which data file to convert">
+<!ENTITY sm.extension.chooseFile.label1 "Convert Tab Mix Plus sessions from the current profile">
+<!ENTITY ss.enable.label "Use Firefox's built-in Session Restore feature">
+<!ENTITY ss.enable.tooltip "Uncheck to allow the use with Tab Mix Plus Session Manager">
+<!ENTITY ss.advanced_setting "Advanced Setting">
+<!ENTITY ss.advanced_setting.warning "Don't change these, unless you know what you're doing">
+<!ENTITY ss.interval "Minimum time interval between two state saves">
+<!ENTITY ss.interval.seconds "(in milliseconds)">
+<!ENTITY ss.privacy_level "Save sensitive data (form data, POSTDATA and cookies) for">
+<!ENTITY ss.privacy_level.allsites "All sites">
+<!ENTITY ss.privacy_level.unencrypted "Unencrypted sites only">
+<!ENTITY ss.privacy_level.nosites "No sites at all">
+<!ENTITY ss.postdata.label1 "Maximum amount of POSTDATA to be stored">
+<!ENTITY ss.postdata.label2 "(in bytes, -1 = all of it)">
+<!ENTITY sessionManger.enable "Enable Session Manager">
+<!ENTITY crashRecovery.enable "Enable Crash Recovery">
+<!ENTITY sm.StartExit "Start/Exit">
+<!ENTITY sm.restore "Restore">
+<!ENTITY sm.preserve "Preserve">
+<!ENTITY sm.start "When Browser Starts:">
+<!ENTITY sm.start.restore "Restore">
+<!ENTITY sm.start.ask "Ask Before Restoring">
+<!ENTITY sm.start.nothing "Don't Restore">
+<!ENTITY sm.exit "When Browser Exits:">
+<!ENTITY sm.exit.save "Save Session">
+<!ENTITY sm.exit.ask "Ask Before Saving">
+<!ENTITY sm.exit.nothing "Don't Save">
+<!ENTITY sm.startup "Startup Session:">
+<!ENTITY sm.lastsession "Last Session">
+<!ENTITY sm.previouslast "Previous to Last">
+<!ENTITY sm.chooseifempty "Choose another if empty">
+<!ENTITY sm.restore.options "When Restoring Sessions:">
+<!ENTITY sm.restore.overwrite "Overwrite existing windows">
+<!ENTITY sm.restore.overwriteTabs "And tabs">
+<!ENTITY sm.restore.closedWinList "Save windows in closed windows list">
+<!ENTITY sm.restore.merge "Join multiple windows into one">
+<!ENTITY sm.restore.bypassCache "Bypass cache when restoring">
+<!ENTITY sm.notrestore.label "When not restoring on start">
+<!ENTITY sm.restorePinned.label "Restore my pinned tabs from last time">
+<!ENTITY sm.preserve.options "Preserve Tabs:">
+<!ENTITY sm.preserve.history "History">
+<!ENTITY sm.preserve.protect "Protect Status">
+<!ENTITY sm.preserve.locked "Lock Status">
+<!ENTITY sm.preserve.permission "Permissions">
+<!ENTITY sm.preserve.scroll1 "Scroll Position">
+<!ENTITY sm.restore.winOptions "Preserve Windows:">
+<!ENTITY sm.restore.selectedTab "Selected tab">
+<!ENTITY sm.restore.closedTabs "Closed tabs list">
+<!ENTITY incompatible.extensions "Some of your extensions are incompatible with Tab Mix Plus, it is recommended that you will disable or uninstall those extensions.">
+<!ENTITY incompatible.button.label "Show List">
diff --git a/chrome/locale/fi/session-manager.properties b/chrome/locale/fi/session-manager.properties
new file mode 100644
index 0000000..772f281
--- /dev/null
+++ b/chrome/locale/fi/session-manager.properties
@@ -0,0 +1,122 @@
+sm.saveClosedTab.chkbox.label=Save closed tabs list with this session
+sm.button.continue.label=Continue
+sm.button.continue.accesskey=C
+sm.askBeforSave.title=Session Manager - Save Session
+sm.askBeforSave.msg0=Would you like to save your session?
+sm.askBeforSave.msg2=Only non-private windows will be save to disk
+sm.askBeforSave.msg1=If you don\'t save, next time you start the browser the \'Last Session\' will be empty.
+sm.askBeforSave.button0.label=Save Session
+sm.askBeforSave.button0.accesskey=S
+sm.askBeforSave.button1.label=Don\'t Save
+sm.askBeforSave.button1.accesskey=D
+sm.corrupted.title=Session Manager - Corrupted Database
+sm.corrupted.msg0=Session Manager cannot load its database from corrupted session.rdf.
+sm.corrupted.msg1=The file session.rdf will be deleted, a copy can be found in session.old in your profile. sessions backups are in <profile>/sessionbackups
+sm.areYouSure.msg=Are you sure you want to continue?
+sm.canChooseStartup.msg=You can choose a session to be your new startup session from the list:
+sm.addtoStartup.title=Session Manager - Add to Startup Session
+sm.addtoStartup.msg.windows=You are about to add window(s) to your startup session:
+sm.addtoStartup.msg.tabs=You are about to add tab(s) to your startup session:
+sm.addtoStartup.button0.label=Add to Session
+sm.addtoStartup.button0.accesskey=A
+sm.addtoStartup.button1.label=Don\'t Add
+sm.addtoStartup.button1.accesskey=D
+sm.replaceStartup.title=Session Manager - Override Startup Session
+sm.replaceStartup.msg=You are about to replace your startup session:
+sm.replaceStartup.button0.label=Replace Session
+sm.replaceStartup.button0.accesskey=R
+sm.replaceStartup.button1.label=Don\'t Replace
+sm.replaceStartup.button1.accesskey=D
+sm.removeStartup.title=Session Manager - Delete Startup Session
+sm.removeStartup.msg0=You are about to delete your startup session:
+sm.removeStartup.msg1=Choose a session to be your new startup session from the list:
+sm.removeStartup.button0.label=Delete
+sm.removeStartup.button0.accesskey=D
+sm.removeStartup.button1.label=Don\'t Delete
+sm.removeStartup.button1.accesskey=T
+sm.title=Session Manager
+sm.dontSaveBlank.msg=Session Manager doesn\'t save blank windows
+sm.sessoinSave.error=Error in Session Manager, session didn\'t save
+sm.sessionName.title.rename=Session Manager - Rename Session
+sm.sessionName.title.saveprevious=Session Manager - Save Session
+sm.sessionName.title.savethiswindow=Session Manager - Save This Window
+sm.sessionName.title.saveallwindows=Session Manager - Save All Windows
+sm.sessionName.msg0=Enter Session Name:
+sm.sessionName.msg1=Name must be at least one letter or number.
+sm.sessionName.msg2=This name is already in use!
+sm.sessionName.msg3=Are you sure you want to replace the session?
+sm.sessionName.button0.label=Rename Session
+sm.sessionName.button0.accesskey=R
+sm.sessionName.button1.label=Don\'t Rename
+sm.sessionName.button1.accesskey=D
+sm.session.empty=empty
+sm.session.tabs=T
+sm.session.windows=W
+sm.removeAll.title.session=Session Manager - Delete All Saved Sessions
+sm.removeAll.title.closedwindow=Session Manager - Delete All Closed Windows
+sm.removeAll.msg0=Are you sure you want to delete all your saved sessions?
+sm.removeAll.msg1=If you choose \'Delete\' your startup session will be the \'Last Session\'.
+sm.removeAll.msg2=Are you sure you want to delete all your closed windows?
+sm.sessionMenu.last=Last Session
+sm.sessionMenu.lastDefault=Last Session - Default
+sm.sessionMenu.lastgood=Last Good Session
+sm.sessionMenu.previous=Previous to Last
+sm.sessionMenu.crashed=Crashed Session
+sm.afterCrash.title=Session Manager - Restore after Crash
+sm.afterCrash.chkbox.label=Enable Session Manager
+sm.afterCrash.msg0=Your last session Crashed!
+sm.afterCrash.msg0.again=Your last Crashed session Crashed again!
+sm.afterCrash.msg1=Choose session to restore from the list:
+sm.afterCrash.msg2=Choose how to continue
+sm.afterCrash.msg3=Session Manager is currently disabled, if you enable Session Manager, you will be able to restore crashed sessions, closed sessions, saved sessions and closed windows from the Session Manager menu.
+sm.afterCrash.msg4=You can also restore the crashed session later from the Session Manager menu.
+sm.afterCrash.msg5=but nothing was saved.
+sm.afterCrash.msg6=but there isn\'t any open window in your Crashed session
+sm.afterCrash.msg7=Choose window to restore from Closed Windows list
+sm.afterCrash.msg8=(you can also restore closed windows later from the Closed Windows menu)
+sm.afterCrash.msg9=Your Crashed session is empty!
+sm.afterCrash.msg10=Session Manager did not find any sessions to restore from.
+sm.afterCrash.button0.label=Restore Session
+sm.afterCrash.button0.accesskey=R
+sm.afterCrash.button0.crashed.label=Restore Crashed Session
+sm.afterCrash.button0.crashed.accesskey=R
+sm.afterCrash.button1.label=Don\'t Restore
+sm.afterCrash.button1.accesskey=D
+sm.start.title=Session Manager - Restore Session
+sm.start.chkbox.label=Enable Crash Recovery
+sm.start.msg0=Your Startup session is empty!
+sm.start.msg1=Crash Recovery is currently disabled, if you enable Crash Recovery, you will be able to restore crashed sessions.
+sm.start.msg2=Error while looking for your startup session, your saved startup session does not exist.
+sm.restoreError.msg0=Error in session manager file!
+sm.restoreError.msg1=Delete the session you tried to restore
+sm.disable.msg=Firefox has a built-in session restore feature.
+sm.disable.msg1=Would you like to enable built-in session restore and disable the Tab Mix Plus Session Manager?
+sm.disable.msg2=Would you like to enable Tab Mix Plus Session Manager and disable the built-in session restore?
+sm.extension.convert.msg1=Would you like to convert your sessions data from Tab Mix Plus format to Session Manager extension format?
+sm.extension.convert.msg2=You can do it later from Tab Mix Plus session options window.
+sm.extension.convert.nosessions=There is no session in this file.
+sm.extension.convert.alreadyconverted=This session file have already been converted to Session Manager extension format.
+sm.extension.convert.doitagain=Do you wish to convert them again?
+sm.extension.convert.unable=Unable to convert from session.rdf
+sm.extension.convert.many=sessions converted, would you like to delete any of them?
+sm.extension.convert.one=one session converted, would you like to delete it?
+sm.extension.convert.rename=You will be able to rename the session(s) later from Session Manager menu
+sm.extension.convert.selectfile=Select session.rdf file to convert
+sm.extension.convert.rdffiles=RDF Files
+sm.extension.convert.sessionfiles=Session Files
+sm.tabview.hiddengroups=More tabs restored into hidden groups.
+sm.tabview.hiddengroups.removed=Hidden tab groups was removed.
+sm.tabview.removed=The Tab Groups (Panorama) feature was removed from Firefox.
+sm.tabview.removed.learnMore.label=Learn More
+sm.tabview.removed.learnMore.accesskey=L
+sm.tabview.install.label=Install Tab Groups extension
+sm.tabview.install.accesskey=I
+sm.tabview.backup.session=History Session, backup with groups data
+sm.tabview.backup.crashed=Crashed Session, backup with groups data
+sm.tabview.backup.msg=Tab mix plus Session Manager has saved a backup of your session.
+sm.bookmarks.historySession= History Session
+sm.bookmarks.closedWindow= Closed Window
+sm.bookmarks.sessionFolder=Tab Mix Plus Sessions
+# LOCALIZATION NOTE (sm.bookmarks.migration.windowID):
+# %S is the window number in the session
+sm.bookmarks.migration.windowID= Window %S
diff --git a/chrome/locale/en-US/tabmix.dtd b/chrome/locale/fi/tabmix.dtd
similarity index 61%
copy from chrome/locale/en-US/tabmix.dtd
copy to chrome/locale/fi/tabmix.dtd
index 9626138..270226a 100644
--- a/chrome/locale/en-US/tabmix.dtd
+++ b/chrome/locale/fi/tabmix.dtd
@@ -1,53 +1,51 @@
-<!ENTITY closedtabsbtn.label "Closed Tabs">
-<!ENTITY closedtabsbtn.tooltip "Display Closed Tabs List">
-<!ENTITY sessionbtn.tooltip "Display and Manage your Sessions">
-<!ENTITY tabslistbtn.label "Opened Tabs">
-<!ENTITY tabslistbtn.tooltip "Display Opened Tabs List">
-<!ENTITY closedwindowsbtn.label "Closed Windows">
-<!ENTITY closedwindowsbtn.tooltip "Display Closed Windows List">
-<!ENTITY page.header.title "Tab Mix Plus Options">
-<!ENTITY options.main.sessionbutton.label "Tab Mix Plus Session Manager">
-<!ENTITY session.Tools "Session Manager">
-<!ENTITY closedWin.label "Closed Windows List">
-<!ENTITY duplicateTabMenu.label "Duplicate Tab">
-<!ENTITY duplicateTabMenu.accesskey "D">
-<!ENTITY duplicateinWin.label "Duplicate to New Window">
-<!ENTITY duplicateinWin.accesskey "W">
-<!ENTITY detachTab.label "Move to New Window">
-<!ENTITY detachTab.accesskey "E">
-<!ENTITY mergeContext.label "Merge Windows">
-<!ENTITY mergeContext.accesskey "M">
-<!ENTITY renametab.label "Rename Tab">
-<!ENTITY renametab.accesskey "M">
-<!ENTITY copytaburl.label "Copy Tab URL">
-<!ENTITY copytaburl.accesskey "Y">
-<!ENTITY reloadother.label "Reload Other Tabs">
-<!ENTITY reloadother.accesskey "O">
-<!ENTITY reloadleft.label "Reload Left Tabs">
-<!ENTITY reloadleft.accesskey "L">
-<!ENTITY reloadright.label "Reload Right Tabs">
-<!ENTITY reloadright.accesskey "I">
-<!ENTITY autoReloadTab.label "Reload Tab Every">
-<!ENTITY autoReloadTab.accesskey "V">
-<!ENTITY autoReloadSite.label "Reload This Site Every">
+<!ENTITY closedtabsbtn.label "Suljetut välilehdet">
+<!ENTITY closedtabsbtn.tooltip "Näytä lista suljetuista välilehdistä">
+<!ENTITY sessionbtn.tooltip "Katsele ja hallinnoi istuntojasi">
+<!ENTITY tabslistbtn.label "Avatut välilehdet">
+<!ENTITY tabslistbtn.tooltip "Näytä lista avatuista välilehdistä">
+<!ENTITY closedwindowsbtn.label "Suljetut ikkunat">
+<!ENTITY closedwindowsbtn.tooltip "Näytä lista suljetuista ikkunoista">
+<!ENTITY page.header.title "Tab Mix Plus - Asetukset">
+<!ENTITY options.main.sessionbutton.label "Tab Mix Plus Istuntojenhallinta">
+<!ENTITY session.Tools "Istuntojenhallinta">
+<!ENTITY closedWin.label "Lista suljetuista ikkunoista">
+<!ENTITY duplicateTabMenu.label "Monista välilehti">
+<!ENTITY duplicateTabMenu.accesskey "M">
+<!ENTITY duplicateinWin.label "Monista uuteen ikkunaan">
+<!ENTITY duplicateinWin.accesskey "I">
+<!ENTITY detachTab.label "Siirrä uuteen ikkunaan">
+<!ENTITY detachTab.accesskey "S">
+<!ENTITY mergeContext.label "Yhdistä ikkunat">
+<!ENTITY mergeContext.accesskey "Y">
+<!ENTITY renametab.label "Uudelleennimeä välilehti">
+<!ENTITY renametab.accesskey "N">
+<!ENTITY copytaburl.label "Kopioi välilehden URL-osoite">
+<!ENTITY copytaburl.accesskey "K">
+<!ENTITY reloadother.label "Päivitä muut välilehdet">
+<!ENTITY reloadother.accesskey "P">
+<!ENTITY reloadleft.label "Päivitä vasenmanpuoleiset välilehdet">
+<!ENTITY reloadleft.accesskey "V">
+<!ENTITY reloadright.label "Päivitä oikeanpuoleiset välilehdet">
+<!ENTITY reloadright.accesskey "O">
+<!ENTITY autoReloadTab.label "Välilehden päivitysväli">
+<!ENTITY autoReloadTab.accesskey "L">
+<!ENTITY autoReloadSite.label "Lataa tämä sivusto joka">
 <!ENTITY autoReloadSite.accesskey "E">
-<!ENTITY afterthis.label "After This Tab">
-<!ENTITY bookmarktab.label "Bookmark This Tab">
-<!ENTITY undoCloseListMenu.label "Closed Tabs List">
-<!ENTITY undoCloseListMenu.accesskey "L">
-<!ENTITY closeAllTabsMenu.label "Close All Tabs">
+<!ENTITY afterthis.label "Tämän välilehden jälkeen">
+<!ENTITY bookmarktab.label "Lisää tämä välilehti kirjanmerkkeihin">
+<!ENTITY undoCloseListMenu.label "Lista suljetuista välilehdistä">
+<!ENTITY undoCloseListMenu.accesskey "U">
+<!ENTITY closeAllTabsMenu.label "Sulje kaikki välilehdet">
 <!ENTITY closeall.accesskey "A">
-<!ENTITY closeSimilarTab.label "Close Similar Tabs">
-<!ENTITY closeSimilarTab.accesskey "S">
+<!ENTITY closeSimilarTab.label "Sulje samankaltaiset ikkunat">
+<!ENTITY closeSimilarTab.accesskey "M">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
-<!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "R">
-<!ENTITY docShellMenu.label "Permissions">
-<!ENTITY docShellMenu.accesskey "P">
-<!ENTITY freezeTabMenu.label "Freeze Tab">
-<!ENTITY freezeTabMenu.accesskey "F">
-<!ENTITY protectTabMenu.label "Protect Tab">
+<!ENTITY closeleft.accesskey "V">
+<!ENTITY docShellMenu.label "Oikeudet">
+<!ENTITY docShellMenu.accesskey "O">
+<!ENTITY freezeTabMenu.label "Jäädytä välilehti">
+<!ENTITY freezeTabMenu.accesskey "J">
+<!ENTITY protectTabMenu.label "Suojaa välilehti">
 <!ENTITY protectTabMenu.tooltip "Protect tabs from being closed">
 <!ENTITY protectTabMenu.accesskey "P">
 <!ENTITY lockTabMenu.label "Lock Tab">
@@ -83,7 +81,7 @@
 <!ENTITY bookmark.accesskey "B">
 <!ENTITY deletelist.label "Delete from the list">
 <!ENTITY deletelist.accesskey "D">
-<!ENTITY settings.label "Preferences">
+<!ENTITY settings.label "Settings">
 <!ENTITY saveWindow.label "Save This Window">
 <!ENTITY saveAllWindows.label "Save All Windows">
 <!ENTITY sm.context.overwrite "Restore, Overwrite Existing Window(s)">
diff --git a/chrome/locale/fi/tabmix.properties b/chrome/locale/fi/tabmix.properties
new file mode 100644
index 0000000..36b4e52
--- /dev/null
+++ b/chrome/locale/fi/tabmix.properties
@@ -0,0 +1,49 @@
+extensions.{dc572301-7619-498c-a57d-39143191b318}.description=Vauhditettua välilehtiselausta.
+tmp.merge.warning.title=Irralliset välilehdet suljettavassa ikkunassa
+tmp.merge.warning.message=Valitut välilehdet yhdistetään toiseen ikkunaan, mutta muut suljetaan ikkunan mukana.
+tmp.merge.warning.checkboxLabel=Varoita minua aina kun suljettavassa ikkunassa on irrallisia välilehtiä.
+tmp.merge.error=Vähintään 2 ikkunaa täytyy olla auki ennen kuin voit yhdistää niitä
+tmp.merge.private= You can not merge private window with non-private window.
+tmp.importPref.error1=Tuonti epäonnistui koska tiedosto ei ole kelvollinen.
+tmp.importPref.error2=Asetusten tuonti epäonnistui.
+tmp.sessionempty=Seuraavan kerran kun käynnistät selaimen \"Edellinen istunto\" on tyhjä.
+droptoclose.label=Pudota välilehti sulkeaksesi sen
+droplink.label=Pudota keskelle korvataksesi välilehden tai reunoille luodaksesi uuden välilehden
+flstOn.label=Valitse viimeksi valittu välilehti - Vaihda valintaa painamalla F9
+flstOff.label=Valitse oikeanpuoleinen välilehti - Vaihda valintaa painamalla F9
+slideshowOn.label=Välilehtien kierrätys on päällä - Käännä pois päältä painamalla F8
+slideshowOff.label=Välilehtien kierrätys on pois päältä - Käännä päälle painamalla F8
+undoclosetab.clear.label=Tyhjennä suljettujen välilehtien lista
+undoclosetab.clear.accesskey=T
+undoClosedWindows.clear.label=Tyhjennä suljettujen ikkunoiden lista
+undoClosedWindows.clear.accesskey=T
+protectedtabs.closeWarning.1=Olet sulkemassa suojatun välilehden. Oletko varma että haluat jatkaa?
+protectedtabs.closeWarning.2=Olet sulkemassa %S suojattua välilehteä. Oletko varma että haluat jatkaa?
+protectedtabs.closeWarning.3=Olet sulkamassa %S välilehteä, joista %S on suojattuja. Oletko varma että haluat jatkaa?
+protectedtabs.closeWarning.4=Varoita, kun yritän sulkea ikkunan, jossa on suojattuja välilehtiä
+window.closeWarning.1=Varoita, kun yritän sulkea ikkunan, jossa on useita välilehtiä
+closeWindow.label=Sulje ikkuna
+confirm_autoreloadPostData_title=Varoitus!
+confirm_autoreloadPostData=Yrität ottaa käyttöön automaattisen päivityksen sivulla, jolla on lomaketietoja.nJos otat automaattisen päivityksen käyttöön, lomaketietojen lähetyksestä seuraavat tapahtumat (esim. maksutapahtumat) tullaan toistamaan.nnOletko varma että haluat ottaa automaattisen päivityksen käyttöön?
+confirm_autoreloadPostData_remote=The page on which you tried to enable Auto Reload contains POSTDATA.\nIf you enable Auto Reload, any action the form carries out (such as an online purchase) will be lost.\n\nAre you sure that you want to enable Auto Reload?
+incompatible.title=Tab Mix Plus
+incompatible.msg0=Seuraavat laajennukset eivät ole yhteensopivia Tab Mix Plussan kanssa tai ne ovat osa toiminnallisuutta.
+incompatible.msg1=Haluatko poistaa nämä laajennukset käytöstä?
+incompatible.msg2=Yhteensopimattomat laajennukset otetaan pois käytöstä, kun käynnistät selaimen uudelleen.
+incompatible.button0.label=Poista käytöstä
+incompatible.button0.accesskey=P
+incompatible.button1.label=Älä poista
+incompatible.button1.accesskey=Ä
+incompatible.button2.label=Poista käytöstä ja käynnistä uudelleen
+incompatible.button2.accesskey=K
+incompatible.chkbox.label=Näytä tämä hälytys kun selain käynnistyy
+tabmixoption.error.title=Tab Mix Plus - Virhe
+tabmixoption.error.msg=Sinulla täytyy olla vähintään yksi ikkuna jotta voit käyttää Tab Mix Plussan asetuksia.
+# LOCALIZATION NOTE (rowsTooltip.rowscount):
+# Semicolon-separated list of plural forms. See:
+# http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 is the total number of rows
+# The singular form is not considered since this string is used only for
+# multiple rows.
+rowsTooltip.rowscount=;#1 Rows
+rowsTooltip.activetab=Active tab on row #1
diff --git a/chrome/locale/fr/tabmix.dtd b/chrome/locale/fr/tabmix.dtd
index 243fa31..e375e7a 100644
--- a/chrome/locale/fr/tabmix.dtd
+++ b/chrome/locale/fr/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "i">
 <!ENTITY closeTabsToLeft.label "Fermer les onglets à gauche">
 <!ENTITY closeleft.accesskey "g">
-<!ENTITY closeTabstoRight.label "fermer les onglets à droite">
-<!ENTITY closeright.accesskey "d">
 <!ENTITY docShellMenu.label "Permissions">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Geler l'onglet">
diff --git a/chrome/locale/he-IL/tabmix.dtd b/chrome/locale/he-IL/tabmix.dtd
index 6cc0b90..a9e3937 100644
--- a/chrome/locale/he-IL/tabmix.dtd
+++ b/chrome/locale/he-IL/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "ז">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "ש">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "י">
 <!ENTITY docShellMenu.label "הרשאות">
 <!ENTITY docShellMenu.accesskey "ה">
 <!ENTITY freezeTabMenu.label "הקפא לשונית">
diff --git a/chrome/locale/hr-HR/tabmix.dtd b/chrome/locale/hr-HR/tabmix.dtd
index d95df9a..199f578 100644
--- a/chrome/locale/hr-HR/tabmix.dtd
+++ b/chrome/locale/hr-HR/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "č">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "l">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "d">
 <!ENTITY docShellMenu.label "Dopuštenja">
 <!ENTITY docShellMenu.accesskey "p">
 <!ENTITY freezeTabMenu.label "Zamrzni karticu">
diff --git a/chrome/locale/hu-HU/tabmix.dtd b/chrome/locale/hu-HU/tabmix.dtd
index c9f0fcb..55cf6eb 100644
--- a/chrome/locale/hu-HU/tabmix.dtd
+++ b/chrome/locale/hu-HU/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "z">
 <!ENTITY closeTabsToLeft.label "Balra lévő lapok bezárása">
 <!ENTITY closeleft.accesskey "a">
-<!ENTITY closeTabstoRight.label "Jobbra lévő lapok bezárása">
-<!ENTITY closeright.accesskey "o">
 <!ENTITY docShellMenu.label "Engedélyek">
 <!ENTITY docShellMenu.accesskey "E">
 <!ENTITY freezeTabMenu.label "Lapfagyasztás">
diff --git a/chrome/locale/it/pref-tabmix.dtd b/chrome/locale/it/pref-tabmix.dtd
index ffba784..c3be441 100644
--- a/chrome/locale/it/pref-tabmix.dtd
+++ b/chrome/locale/it/pref-tabmix.dtd
@@ -178,6 +178,7 @@
 
 
 
+
 -->
 <!ENTITY showTabX.popup.width "13em">
 <!ENTITY showTabX.always "sempre">
@@ -202,6 +203,7 @@
 
 
 
+
 -->
 <!ENTITY toolbar.description.width "21em">
 <!ENTITY toolbar.description "È possibile personalizzare quali pulsanti di Tab Mix Plus mostrare nelle barre degli strumenti">
diff --git a/chrome/locale/it/tabmix.dtd b/chrome/locale/it/tabmix.dtd
index 4af0d95..d2c591a 100644
--- a/chrome/locale/it/tabmix.dtd
+++ b/chrome/locale/it/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "h">
 <!ENTITY closeTabsToLeft.label "Chiudi le schede a sinistra">
 <!ENTITY closeleft.accesskey "s">
-<!ENTITY closeTabstoRight.label "Chiudi le schede a destra">
-<!ENTITY closeright.accesskey "d">
 <!ENTITY docShellMenu.label "Permetti">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Congela scheda">
diff --git a/chrome/locale/ja/tabmix.dtd b/chrome/locale/ja/tabmix.dtd
index 48748a6..7d2727f 100644
--- a/chrome/locale/ja/tabmix.dtd
+++ b/chrome/locale/ja/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "左側のタブをすべて閉じる">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "右側のタブをすべて閉じる">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "機能の許可">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "タブを凍結">
diff --git a/chrome/locale/ko-KR/tabmix.dtd b/chrome/locale/ko-KR/tabmix.dtd
index 0658cb7..ce7a104 100644
--- a/chrome/locale/ko-KR/tabmix.dtd
+++ b/chrome/locale/ko-KR/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "기능 사용 여부">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "탭 얼리기">
diff --git a/chrome/locale/lv-LV/misc.dtd b/chrome/locale/lv-LV/misc.dtd
new file mode 100644
index 0000000..69cffa0
--- /dev/null
+++ b/chrome/locale/lv-LV/misc.dtd
@@ -0,0 +1,17 @@
+<!ENTITY searchTabFocus.label "Ielādēt fonā">
+<!ENTITY searchTabFocus.accesskey "L">
+<!ENTITY renametab.panel.title "Rediģēt cilnes nosaukumu">
+<!ENTITY renametab.reset.label "Atstatīt uz noklusēto nosaukumu">
+<!ENTITY title.label "Nosaukums">
+<!ENTITY default.label "Noklusētais">
+<!ENTITY renametab.permanently.label "Pārdēvēt šo cilni neatkarīgi no tās adreses">
+<!ENTITY renametab.permanently.tooltip "cilne ar vēsturi - jaunais nosaukums arī adresei izmainoties">
+<!ENTITY forum.label "Forums">
+<!ENTITY faq.label "BUJ">
+<!ENTITY help.label "Palīdzība">
+<!ENTITY tabmix.label "Tab Mix Plus">
+<!ENTITY reloadtime.label1 "Izvēlieties laiku no saraksta vai arī ievadiet savu laiku">
+<!ENTITY specifyreload.label "Norādīt pārlādēšanas laiku">
+<!ENTITY sanitizer.entry "Tab Mix Plus saglabātās sesijas">
+<!ENTITY sanitizer.entry.accesskey "T">
+<!ENTITY sanitizer.entry.confirm "Vai esat pārliecināts, ka vēlaties izdzēst VISAS jūsu saglabātās sesijas, ieskaitot rezerves kopijas?">
diff --git a/chrome/locale/lv-LV/pref-appearance.dtd b/chrome/locale/lv-LV/pref-appearance.dtd
new file mode 100644
index 0000000..d14d0a2
--- /dev/null
+++ b/chrome/locale/lv-LV/pref-appearance.dtd
@@ -0,0 +1,20 @@
+<!ENTITY tabStyles.label "Styles">
+<!ENTITY styles.label "Pielāgot stilus">
+<!ENTITY currentTab.label "Pašreizējā cilne">
+<!ENTITY unloadedTabs.label "Neielādētās cilnes">
+<!ENTITY unreadTab.label "Nelasītās cilnes">
+<!ENTITY hideRGB.label "Paslēpt RGB">
+<!ENTITY showRGB.label "Rādīt RGB">
+<!ENTITY unreadAfterReload.label "pēc pārlādēšanas iestatīt cilni kā nelasītu">
+<!ENTITY disableBackground.label "Disable custom background colors">
+<!ENTITY squaredTabs.label "Pielietot fona krāsu kvadrātveida cilnēm">
+<!ENTITY otherTabs.label "Citas cilnes">
+<!ENTITY italic.label "Slīpraksts">
+<!ENTITY bold.label "Treknraksts">
+<!ENTITY underline.label "Pasvītrots">
+<!ENTITY textcolor.label "Teksta krāsa">
+<!ENTITY bgColor.label "Fona krāsa">
+<!ENTITY bgTopColor.label "augša">
+<!ENTITY bgBottomColor.label "apakša">
+<!ENTITY useThis.label "izmantot šo stilu priekš">
+<!ENTITY opacity.label "caurspīdība">
diff --git a/chrome/locale/lv-LV/pref-filetype.dtd b/chrome/locale/lv-LV/pref-filetype.dtd
new file mode 100644
index 0000000..5c3b681
--- /dev/null
+++ b/chrome/locale/lv-LV/pref-filetype.dtd
@@ -0,0 +1,5 @@
+<!ENTITY filetype.options "Failu tipu redaktors">
+<!ENTITY filetype.add "Pievienot">
+<!ENTITY filetype.edit "Mainīt">
+<!ENTITY filetype.delete "Dzēst">
+<!ENTITY filetype.new "Jauns faila tips:">
diff --git a/chrome/locale/lv-LV/pref-tabmix.dtd b/chrome/locale/lv-LV/pref-tabmix.dtd
new file mode 100644
index 0000000..c5458e7
--- /dev/null
+++ b/chrome/locale/lv-LV/pref-tabmix.dtd
@@ -0,0 +1,312 @@
+<!ENTITY tab.links "Saites">
+<!ENTITY tab.events "Notikumi">
+<!ENTITY tab.mouse "Pele">
+<!ENTITY tab.appearance "Izskats">
+<!ENTITY tab.menu "Izvēlne">
+<!ENTITY tab.session "Sesija">
+<!ENTITY tab.incompatible "Kļūda">
+<!ENTITY apply.label "Pielietot">
+<!ENTITY settings.export "Eksportēt iestatījumus">
+<!ENTITY settings.import "Importēt iestatījumus">
+<!ENTITY settings.sync "Sinhronizēt iestatījumus">
+<!ENTITY settings.default "Atjaunot noklusējumus">
+<!ENTITY settings.revert "Atgriezt">
+<!ENTITY generalWindowOpen.label "Saites, kas atveras jaunā logā, atvērt:">
+<!ENTITY externalLink.useSeparate.label "Saitēm no citām lietotnēm izmantot atsevišķu iestatījumu">
+<!ENTITY externalLinkTarget.label "Saites no citām lietotnēm atvērt:">
+<!ENTITY linkTarget.tab "Jaunā cilnē">
+<!ENTITY linkTarget.window "Jaunā logā">
+<!ENTITY linkTarget.current "Pašreizējā cilnē">
+<!ENTITY linkTarget.accesskey "C">
+<!ENTITY divertedWindowOpen.label "JavaScript uzlecošie logi:">
+<!ENTITY divertedWindowOpen.all "Atvērt visus uzlecošos logus cilnēs">
+<!ENTITY divertedWindowOpen.some "Atļaut uzlecošos logus ar mainītu izmēru">
+<!ENTITY divertedWindowOpen.none "Atļaut visus uzlecošos logus">
+<!ENTITY linkTarget.label "Atvērt saites ar mērķa atribūtu pašreizējā cilnē">
+<!ENTITY targetIsFrame.label "Open links with target to existing frame in the current tab">
+<!ENTITY download.label "Nepieļaut tukšas cilnes, lejupielādējot failus">
+<!ENTITY edit.label "Rediģēt">
+<!ENTITY speLink.label "Piespiest atvērt jaunā cilnē:">
+<!ENTITY speLink.none "Neko">
+<!ENTITY speLink.allLinks "Visas saites">
+<!ENTITY speLink.external "Saites uz citām vietnēm">
+<!ENTITY singleWindow.label "Ieslēgt viena loga režīmu">
+<!ENTITY newTabs.label "Jaunas cilnes">
+<!ENTITY tabOpen.label "Ciļņu atvēršana">
+<!ENTITY tabFocus.label "Ciļņu fokuss">
+<!ENTITY tabClose.label "Ciļņu aizvēršana">
+<!ENTITY tabMerge.label "Ciļņu apvienošana">
+<!ENTITY tabFeature.label "Ciļņu iespējas">
+<!ENTITY newtab.label "Jaunajās cilnēs ielādēt:">
+<!ENTITY replaceLastTabWith.label "Aizverot pēdējo cilni, aizvietot to ar">
+<!ENTITY newtab.blank "Tukšu lapu">
+<!ENTITY newtab.home "Mājas lapu">
+<!ENTITY newtab.current "Pašreizējo lapu">
+<!ENTITY newtab.duplicate "Dublikāta lapu">
+<!ENTITY newtab.location.1 "Jaunas cilnes lapa">
+<!ENTITY newtab.placeholder.label "Noklusētā jaunas cilnes lapa">
+<!ENTITY location.label.1 "Adrese">
+<!ENTITY focusContent.label "Ielādējot ne-tukšu lapu, fokusēties uz saturu">
+<!ENTITY openTabNext.label "Jaunas cilnes atvērt pēc pašreizējās">
+<!ENTITY openOtherTabNext.label "Citas cilnes atvērt pēc pašreizējās">
+<!ENTITY relatedAfterCurrent.label "Tikai, ja attiecas uz pašreizējo cilni">
+<!ENTITY openTabNext.tooltip1 "[a][b][c][1][2][3] -> [a][1][2][3][b][c]">
+<!ENTITY openDuplicateNext.label "Dublicētās cilnes atvērt blakus oriģinālajai">
+<!ENTITY openTabNext.tooltip "[a][b][c][1][2][3] -> [a][3][2][1][b][c]">
+<!ENTITY openTabNextInverse.label "Mainīt atvēršanas kārtību">
+<!ENTITY openTabNextInverse.tooltip "[a][3][2][1][b][c] -> [a][1][2][3][b][c]">
+<!ENTITY openTabNextInverse.tooltip1 "Jaunu cilni atvērt aiz cilnes, kas atvērta no pašreizējās cilnes (kopš tā pēdējo reizi tika izvēlēta)">
+<!ENTITY lockTabs.label "Noslēgt cilnes">
+<!ENTITY lockNewTabs.label "Noslēgt jaunās cilnes">
+<!ENTITY lockAppTabs.label "Noslēgt lietotņu cilnes">
+<!ENTITY updateLockState.label "Pielietot izmaiņas atvērtajām cilnēm">
+<!ENTITY openNewTab.label "Atvērt cilnes no:">
+<!ENTITY openBookmarks.label "Grāmatzīmes">
+<!ENTITY openPlacesGroups.label "Grāmatzījmu/Vēstures grupas">
+<!ENTITY openPlacesGroups.tooltip "Don't override tabs when opening a group of bookmarks/history">
+<!ENTITY openHistory.label "Vēsture">
+<!ENTITY openUrl.label "Adrešu josla">
+<!ENTITY openSearch.label "Meklēšanas josla">
+<!ENTITY middlecurrent1.label "Vidējais klikšķis vai Control-klikšķis atver vienumus pašreizējā cilnē">
+<!ENTITY middlecurrent.tooltip "Jaunā cilnē piespiedu kārtā atvērt tikai grāmatzīmes, vēsturi un saites">
+<!ENTITY tabFocus.caption "Fokusēt/Izvēlēties cilnes, kas atvērtas no:">
+<!ENTITY selectTab.label "Saitēm">
+<!ENTITY selectDivertedTab.label "Novirzīta loga">
+<!ENTITY selectTabFromExternal.label "Citām lietotnēm">
+<!ENTITY selectTabCommand.label "Jaunas cilnes komandām">
+<!ENTITY contextMenuSearch.label "Konteksta izvēles meklēšana">
+<!ENTITY selectTabBH.label "Grāmatzīmes/Vēsture">
+<!ENTITY duplicateTab.label "Dublicēt cilni">
+<!ENTITY inversefocus1.label "Apgriezt vidējā klikšķa vai Control-klikšķa fokusu:">
+<!ENTITY warning.caption.label "Brīdinājums">
+<!ENTITY warnOnCloseProtected.label "Brīdināt mani, kad tiek aizvērts logs ar aizsargātām cilnēm">
+<!ENTITY warnOnCloseWindow.label "Brīdināt mani, kad tiek aizvērts logs ar vairākām cilnēm">
+<!ENTITY lasttab.caption.label "Aizverot pēdējo cilni">
+<!ENTITY keepWindow.label.3.1 "Neaizvērt logu, kad tiek aizvērta pēdējā cilne">
+<!ENTITY keeptab.label "Novērst pēdējās cilnes aizvēršanu">
+<!ENTITY closeOnMerge.label "Aizvērt logus, tiklīdz tie tiek apvienoti">
+<!ENTITY warnOnMerge.label "Brīdināt, kad aizver cilnes, kuras netiek apvienotas">
+<!ENTITY currenttab.caption.label "Aizverot pašreizējo cilni">
+<!ENTITY focusTab.labelBegin "Aizverot pašreizējo cilni, fokusēties:">
+<!ENTITY focusTab.firstTab "Pirmo cilni">
+<!ENTITY focusTab.leftTab "Cilni pa kreisi">
+<!ENTITY focusTab.rightTab "Cilni pa labi">
+<!ENTITY focusTab.lastTab "Pēdējo cilni">
+<!ENTITY focusTab.lastSelectedTab "Pēdējo izvēlēto cilni">
+<!ENTITY focusTab.openerTab "Atvērēju/labo cilni">
+<!ENTITY focusTab.openerTab.rtl "Atvērēju/kreiso cilni">
+<!ENTITY focusTab.lastOpenedTab "Pēdējo atvērto cilni">
+<!ENTITY undoClose.label "Ieslēgt aizvērto ciļņu atsaukšanu">
+<!ENTITY undoCloseCache.label "Maksimālais skaits aizvērto ciļņu, ko atcerēties:">
+<!ENTITY undoClosepos.label "Atjaunot cilnes oriģinālo pozīciju">
+<!ENTITY menuonlybutton.label "Rīkjoslas pogā parāda tikai sarakstu">
+<!ENTITY ctrltab.label "Ctrl-Tab pārslēdz cilnes nesenās izmantošanas kārtībā">
+<!ENTITY cmdtab.label "Cmd-Tab pārslēdz cilnes nesenās izmantošanas kārtībā">
+<!ENTITY ctrltab.tabPreviews "Rādīt ciļņu priekšskatījumus">
+<!ENTITY ctrltab.popup "Ctrl-Tab parāda ciļņu saraksta uzlecošo izvēlni">
+<!ENTITY cmdtab.popup "Cmd-Tab parāda ciļņu saraksta uzlecošo izvēlni">
+<!ENTITY tabpopup.mouse "Ciļņu saraksts reaģē uz peli">
+<!ENTITY mergeNoTabSelection.label "Apvienot logus, kad nav izvēlēta neviena cilne">
+<!ENTITY mergeTabSelection.label "Apvienošana pēc ciļņu atlases">
+<!ENTITY mergeall.label "Apvienot visus logus vienā">
+<!ENTITY mergelastfocused.label "Apvienot tikai pašreizējo logu ar pēdējo fokusēto">
+<!ENTITY mergePopups.label "Paņemt arī uzlecošos logus">
+<!ENTITY popupNextToOpener.label "Novietot uzlecošos logus aiz to atvērējiem">
+<!ENTITY activateSlideshow.label "#1 nospiešana rotē cilnes katras">
+<!ENTITY toggleAnimation.label "Atslēgt atvēršanas/aizvēršanas animāciju">
+<!ENTITY reloadEvery.matchAddress.label "Pārlādēt cilni neatkarīgi no tās adreses">
+<!ENTITY reloadEvery.onReloadButton.label "Rādīt izvēlni 'Pārlādēt katras' uz pogas 'Pārlādēt'">
+<!ENTITY seconds.label "sekundes">
+<!ENTITY minutes.label "minūtes">
+<!ENTITY tabBarAppearance.label "Ciļņu josla">
+<!ENTITY tabAppearance.label "Cilne">
+<!ENTITY toolBarAppearance.label "Rīkjosla">
+<!ENTITY show.ontabbar.label "Rādīt uz ciļņu joslas">
+<!ENTITY show.ontab.label "Rādīt uz cilnes">
+<!ENTITY dragNewTabButton.tooltip "Lai ieslēgtu šo opciju, pārnesiet pogu 'Jauna cilne' uz ciļņu joslas.">
+<!ENTITY hideTabBarButton.label "Poga 'Aizvērt cilni'">
+<!ENTITY newTabButton.label "Poga 'Jauna cilne'">
+<!ENTITY newTabButton.posiotion.left.label "kreisajā pusē">
+<!ENTITY newTabButton.posiotion.right.label "labajā pusē">
+<!ENTITY newTabButton.posiotion.afterlast.label "Pēc pēdējās cilnes">
+<!ENTITY allTabsButton.label "Poga 'Visas cilnes'">
+<!ENTITY tabBarSpace.label "Papildu atstarpe abās pusēs">
+<!ENTITY tabBarSpace.tooltip "Klikšķināšanai un kaut kā nomešanai uz ciļņu joslas">
+<!ENTITY tabbar.label "Paslēpt ciļņu joslu, ja ir atvērta tikai viena cilne">
+<!ENTITY moveTabOnDragging.label "Pārnesot cilni, darīt to tieši">
+<!ENTITY dropIndicator.label "Nomešanas indikators">
+<!ENTITY dropIndicator-native.label "Natīvais stils">
+<!ENTITY dropIndicator-builtin.label "Iebūvētais stils">
+<!ENTITY verticalTabbar.description "Lietot treeStyleTab vai VerticalTab paplašinājumu, lai regulētu šos iestatījumus.">
+<!ENTITY tabBarPosition.label "Pozīcija:">
+<!ENTITY tabBarPosition.top.label "Augšā (virs satura)">
+<!ENTITY tabBarPosition.bottom.label "Apakšā (zem satura)">
+<!ENTITY tabScroll.label "Kad cilnes nesatilpst platumā:">
+<!ENTITY tabScroll.none "Ritināmas bez pogām">
+<!ENTITY tabScroll.leftRightButtons "Ritināmas ar pogām abās pusēs">
+<!ENTITY tabScroll.rightButtons "Ritināmas ar pogām labajā pusē">
+<!ENTITY tabScroll.rightButtons.rtl "Ritināmas ar pogām kreisajā pusē">
+<!ENTITY tabScroll.multibar "Vairākās rindās">
+<!ENTITY maxrow.label "Maksimālais rādāmo rindu skaits:">
+<!ENTITY pinnedTabScroll.label "Allow pinned tabs to scroll">
+<!ENTITY offsetAmountToScroll.label "Ritinot rādīt daļu no nākamās neredzamās cilnes">
+<!ENTITY smoothScroll.label "Ieslēgt gludo ritināšanu">
+<!ENTITY scrolldelay.label "Ritināšanas aizture (laiks starp ritināšanas atkārtošanu)">
+<!ENTITY currenttab.style.label "Pašreizējā cilne">
+<!ENTITY unloadedtabs.style.label "Neielādētās cilnes">
+<!ENTITY unreadtabs.style.label "Nelasītās cilnes">
+<!ENTITY othertabs.style.label "Citas cilnes">
+<!ENTITY setstyles.label "Pielāgot stilus">
+<!ENTITY extraIcons.label1 "Ikonas priekš">
+<!ENTITY extraIcons.locked "Slēgts">
+<!ENTITY extraIcons.protected "Aizsargāts">
+<!ENTITY extraIcons.autoreload "Automātiski pārlādēt">
+<!ENTITY extraIcons.hideonpinned "Uz piespraustām cilnēm paslēpt">
+<!ENTITY progressMeter.label "Progresa josla uz cilnēm">
+<!ENTITY showTabX.labelBegin "Cilnes aizvēršanas poga">
+<!ENTITY showTabX.left "Novietot kreisajā pusē">
+<!ENTITY showTabX.rtl "Novietot labajā pusē">
+<!ENTITY milliseconds.label "msek.">
+<!-- LOCALIZATION NOTE          change this only if you need to change the width -->
+<!ENTITY showTabX.popup.width "13em">
+<!ENTITY showTabX.always "uz visām">
+<!ENTITY showTabX.current "uz pašreizējās">
+<!ENTITY showTabX.hover "zem kursora esošās">
+<!ENTITY showTabX.alwaysExeption "uz visām cilnēm, kas platākas nekā">
+<!ENTITY showTabX.currentHover "uz pašreizējās un zem kursora esošās">
+<!ENTITY minWidth.label "Cilnes platums:">
+<!ENTITY widthTo.label "līdz">
+<!ENTITY widthPixels.label "pikseļi">
+<!ENTITY onLeftDisabled.label "Can't place button on left side with the current theme">
+<!ENTITY flexTabs.label "Cilnes platums pielāgojas cilnes nosaukumam">
+<!ENTITY bookastitle.label "Lietot grāmatzīmju nosaukumu kā cilnes nosaukumu">
+<!-- LOCALIZATION NOTE:          change this only if you need to change the width -->
+<!ENTITY toolbar.description.width "21em">
+<!ENTITY toolbar.description "Varat izvēlēties, kuras Tab Mix Plus pogas rādīt savā rīkjoslā">
+<!ENTITY toolbar.button.label "Pielāgot">
+<!ENTITY toolbar.visible.caption "Redzamas pogas">
+<!ENTITY toolbar.novisible.label "Nav redzamu pogu">
+<!ENTITY toolbar.hidden.caption "Slēptās pogas">
+<!ENTITY toolbar.nohidden.label "Nav slēpto pogu">
+<!ENTITY mouseGesture.label "Peles žesti">
+<!ENTITY mouseClick.label "Peles klikšķināšana">
+<!ENTITY mouseHoverSelect.labelBegin "Izvēlēties zem kursora esošo cilni">
+<!ENTITY tabFlip.label "Pārslēgties uz pēdējo izvēlēto cilni, noklikšķinot uz pašreizējās">
+<!ENTITY tabFlip.delay "Lietot aizturi">
+<!ENTITY clickFocus.label "Peles klikšķis (nospiest un atlaist), lai izvēlētos cilni">
+<!ENTITY removeEntries.label "Izņemt Tab Mix Plus izvēlnes ierakstus, izmantojot vidējo klikšķi">
+<!ENTITY lockTabSizingOnClose.label "Aizverot cilni, citām cilnēm nemainīt izmēru līdz kursors neatstāj rīkjoslas apgabalu">
+<!ENTITY removeEntries.tooltip "Ieskaitot aizvērtās cilnes, aizvērtos logus un saglabātās sesijas">
+<!ENTITY tabbarscrolling.caption "Ritinot virs ciļņu joslas">
+<!ENTITY tabbarscrolling.holdShift.label "Ritinot turiet nospiestu Shift, lai pārslēgtos starp šīm opcijām">
+<!ENTITY tabbarscrolling.selectTab.label "Mainīt izvēlēto cilni">
+<!ENTITY tabbarscrolling.scrollAllTabs.label "Ritināt visas cilnes">
+<!ENTITY tabbarscrolling.inverse.label "Apgriezt ritināšanas virzienu">
+<!ENTITY double.label "Dubultklikšķis">
+<!ENTITY middle.label "Vidējais klikšķis">
+<!ENTITY ctrl.label "Ctrl-klikšķis">
+<!ENTITY cmd.label "Cmd-klikšķis">
+<!ENTITY shift.label "Shift-klikšķis">
+<!ENTITY alt.label "Alt-klikšķis">
+<!ENTITY ontab.label "uz cilnes:">
+<!ENTITY ontabbar.label "uz ciļņu joslas:">
+<!ENTITY clicktab.label "Izvēlieties komandu, ko izpildīt, noklikšķinot uz ciļņu joslas">
+<!ENTITY ontabbar.dblClick.label "Neļaut loga izmēra maiņu, kad tiek noklikšķināts uz ciļņu joslas.">
+<!ENTITY ontabbar.click.label "Novērst loga pārnešanu, noklikšķinot uz ciļņu joslas.">
+<!ENTITY clicktab.default "Firefox noklusētais vai cits paplašinājums">
+<!ENTITY clicktab.nothing "Nedara neko">
+<!ENTITY clicktab.addtab "Atvērt jaunu cilni">
+<!ENTITY clicktab.duplicatetab "Dublicē cilni">
+<!ENTITY clicktab.duplicatetabw "Dublicē cilni jaunā logā">
+<!ENTITY clicktab.detachtab "Pārvietot cilni uz jaunu logu">
+<!ENTITY clicktab.protecttab "Aizsargā cilni">
+<!ENTITY clicktab.locktab "Noslēdz cilni">
+<!ENTITY clicktab.freezetab "Aizsargā un noslēdz cilni">
+<!ENTITY clicktab.renametab "Pārdēvē cilni">
+<!ENTITY clicktab.copyTabUrl "Kopē cilnes URL uz starpliktuvi">
+<!ENTITY clicktab.copyUrlFromClipboard "Ielādēt URL no starpliktuves">
+<!ENTITY clicktab.selectMerge "Izvēlas cilni apvienošanai">
+<!ENTITY clicktab.mergeTabs "Apvieno logus">
+<!ENTITY clicktab.bookTab "Pievieno cilni grāmatzīmēm">
+<!ENTITY clicktab.bookTabs "Pievieno gŗāmatzīmēm visas cilnes">
+<!ENTITY clicktab.reloadtab "Pārlādē cilni">
+<!ENTITY clicktab.reloadtabs "Pārlādē visas cilnes">
+<!ENTITY clicktab.reloadothertabs "Pārlādē citas cilnes">
+<!ENTITY clicktab.reloadlefttabs "Pārlādē kreisās cilnes">
+<!ENTITY clicktab.reloadrighttabs "Pārlāde labās cilnes">
+<!ENTITY clicktab.autoReloadTab "Ieslēgt/Atslēgt ciļņu automātisko pārlādēšanu">
+<!ENTITY clicktab.removeall "Aizvērt visas cilnes">
+<!ENTITY clicktab.removeother "Aizvērt citas cilnes">
+<!ENTITY clicktab.removesimilar "Aizvērt cilnes no līdzīga domēna">
+<!ENTITY clicktab.removetoLeft "Aizvērt cilnes pa kreisi">
+<!ENTITY clicktab.removetoRight "Aizvērt cilnes pa labi">
+<!ENTITY clicktab.uctab "Atkārtoti atvērt pēdējo aizvērto cilni">
+<!ENTITY clicktab.ucatab "Atkārtoti atvērt visas aizvērtās cilnes">
+<!ENTITY clicktab.snapback "SnapBack cilne">
+<!ENTITY clicktab.ietab "Atver cilni pārlūkā IE">
+<!ENTITY contentLoad "Vidējais klikšķis ielādē cilni no starpliktuves">
+<!ENTITY context.tab "Cilnes konteksta izvēlne">
+<!ENTITY context.main "Galvenā konteksta izvēlne">
+<!ENTITY context.tools "Rīku izvēlne">
+<!ENTITY showOnTabbar.label "Show Tab Context Menu on tabbar">
+<!ENTITY showtabBarContext.label "Rādīt cilnes konteksta izvēlnē">
+<!ENTITY showContentAreaContext.label "Rādīt galvenajā konteksta izvēlnē">
+<!ENTITY showToolsMenu.label "Rādīt rīku izvēlnē">
+<!ENTITY startupHomePage.label "Rādīt manu mājas lapu">
+<!ENTITY startupBlankPage.label "Rādīt tukšu lapu">
+<!ENTITY startupLastSession.label "Rādīt manus logus un cilnes no iepriekšējās reizes">
+<!ENTITY sm.extension.description1 "Tab Mix Plus konstatēja, ka ir instalēts paplašinājums Session Manager">
+<!ENTITY sm.extension.description2 "Tab Mix Plus sesiju pārvaldnieks tiks atslēgts">
+<!ENTITY sm.extension.description3 "Lai atvērtu Session Manager opciju logu, varat noklikšķināt uz pogas pa labi">
+<!ENTITY sm.extension.description4 "Pārveidot manu sesiju datus no Tab Mix Plus formāta uz Session Manager paplašinājuma formātu">
+<!ENTITY sm.extension.convert.label "Pārveidot">
+<!ENTITY sm.extension.chooseFile.label0 "Ļaut man izvēlēties, kuru datu failu pārveidot">
+<!ENTITY sm.extension.chooseFile.label1 "Pārveidot Tab Mix Plus sesijas no pašreizējā profila">
+<!ENTITY ss.enable.label "Lietot Firefox iebūvēto sesijas atjaunošanas iespēju">
+<!ENTITY ss.enable.tooltip "Neatzīmējiet, lai ļautu izmantot Tab Mix Plus sesiju pārvaldnieku">
+<!ENTITY ss.advanced_setting "Paplašinātie iestatījumi">
+<!ENTITY ss.advanced_setting.warning "Nemainiet šos, ja vien nezinat, ko darat">
+<!ENTITY ss.interval "Minimālais laika intervāls starp divām stāvokļa saglabāšanas reizēm">
+<!ENTITY ss.interval.seconds "(milisekundēs)">
+<!ENTITY ss.privacy_level "Saglabāt jutīgus datus (formu dati, POSTDATA un sīkdatnes)">
+<!ENTITY ss.privacy_level.allsites "Visām vietnēm">
+<!ENTITY ss.privacy_level.unencrypted "Tikai nešifrētām vietnēm">
+<!ENTITY ss.privacy_level.nosites "Nevienai vietnei">
+<!ENTITY ss.postdata.label1 "Maksimālais glabājamais POSTDATA datu apjoms">
+<!ENTITY ss.postdata.label2 "(baitos, -1=visi)">
+<!ENTITY sessionManger.enable "Ieslēgt sesiju pārvaldnieku">
+<!ENTITY crashRecovery.enable "Ieslēgt pēcavārijas atkopšanu">
+<!ENTITY sm.StartExit "Palaist/Iziet">
+<!ENTITY sm.restore "Atjaunot">
+<!ENTITY sm.preserve "Saglabāt">
+<!ENTITY sm.start "Kad tiek palaists pārlūks:">
+<!ENTITY sm.start.restore "Atjaunot">
+<!ENTITY sm.start.ask "Jautāt pirms atjaunošanas">
+<!ENTITY sm.start.nothing "Neatjaunot">
+<!ENTITY sm.exit "Kad pārlūks tiek aizvērts">
+<!ENTITY sm.exit.save "Saglabāt sesiju">
+<!ENTITY sm.exit.ask "Jautāt pirms saglabāšanas">
+<!ENTITY sm.exit.nothing "Nesaglabāt">
+<!ENTITY sm.startup "Palaižamā sesija:">
+<!ENTITY sm.lastsession "Pēdējā sesija">
+<!ENTITY sm.previouslast "Priekšpēdējā">
+<!ENTITY sm.chooseifempty "Izvēlēties citu, jau tukša">
+<!ENTITY sm.restore.options "Atjaunojot sesijas:">
+<!ENTITY sm.restore.overwrite "Pārrakstīt esošos logus">
+<!ENTITY sm.restore.overwriteTabs "Un cilnes">
+<!ENTITY sm.restore.closedWinList "Saglabāt logus aizvērto logu sarakstā">
+<!ENTITY sm.restore.merge "Apvienot vairākus logus vienā">
+<!ENTITY sm.restore.bypassCache "Atjaunojot apiet kešatmiņu">
+<!ENTITY sm.notrestore.label "Kad neatjauno palaižot">
+<!ENTITY sm.restorePinned.label "Restore my pinned tabs from last time">
+<!ENTITY sm.preserve.options "Saglabāt ciļņu:">
+<!ENTITY sm.preserve.history "Vēsturi">
+<!ENTITY sm.preserve.protect "Aizsargāšanas statusu">
+<!ENTITY sm.preserve.locked "Noslēgšanas statusu">
+<!ENTITY sm.preserve.permission "Atļaujas">
+<!ENTITY sm.preserve.scroll1 "Ritināšanas pozīciju">
+<!ENTITY sm.restore.winOptions "Saglabāt logu:">
+<!ENTITY sm.restore.selectedTab "Izvēlēto cilni">
+<!ENTITY sm.restore.closedTabs "Aizvērto ciļņu sarakstu">
+<!ENTITY incompatible.extensions "Daži no jūsu paplašinājumiem nav savietojami ar Tab Mix Plus, vēlams šos paplašinājumus atslēgt vai atinstalēt.">
+<!ENTITY incompatible.button.label "Rādīt sarakstu">
diff --git a/chrome/locale/lv-LV/session-manager.properties b/chrome/locale/lv-LV/session-manager.properties
new file mode 100644
index 0000000..628c184
--- /dev/null
+++ b/chrome/locale/lv-LV/session-manager.properties
@@ -0,0 +1,122 @@
+sm.saveClosedTab.chkbox.label=Saglabāt aizvērto ciļņu sarakstu ar šo sesiju
+sm.button.continue.label=Turpināt
+sm.button.continue.accesskey=C
+sm.askBeforSave.title=Sesiju pārvaldnieks – saglabāt sesiju
+sm.askBeforSave.msg0=Vai vēlaties saglabāt savu sesiju?
+sm.askBeforSave.msg2=Uz diska tiks saglabāti tikai ne-privātie logi
+sm.askBeforSave.msg1=Ja nesaglabāsiet, nākamreiz, palaižot pārlūku, \'Pēdējā sesija\' būs tukšs.
+sm.askBeforSave.button0.label=Saglabāt sesiju
+sm.askBeforSave.button0.accesskey=S
+sm.askBeforSave.button1.label=Nesaglabāt
+sm.askBeforSave.button1.accesskey=N
+sm.corrupted.title=Sesiju pārvaldnieks – bojāta datubāze
+sm.corrupted.msg0=Sesiju pārvaldnieks nevar ielādēt tā datubāzi no bojātā faila sesion.rdf.
+sm.corrupted.msg1=Fails session.rdf tiks dzēsts, kopija ir atrodama failā session.old jūsu profila mapē. Sesiju rezerves kopijas ir mapē <profils>/sessionbackups
+sm.areYouSure.msg=Vai tiešām vēlaties turpināt?
+sm.canChooseStartup.msg=Sarakstā varat izvēlēties sesiju, kura būt jūsu jaunā sākuma sesija:
+sm.addtoStartup.title=Sesiju pārvaldnieks – pievienot sākuma sesijai
+sm.addtoStartup.msg.windows=Jūs gatavojaties pievienot logu(s) savai sākuma sesijai:
+sm.addtoStartup.msg.tabs=Jūs gatavojaties pievienot cilni(es) savai sākuma sesijai:
+sm.addtoStartup.button0.label=Pievienot sesijai
+sm.addtoStartup.button0.accesskey=P
+sm.addtoStartup.button1.label=Nepievienot
+sm.addtoStartup.button1.accesskey=N
+sm.replaceStartup.title=Sesiju pārvaldnieks – aizstāt sākuma sesiju
+sm.replaceStartup.msg=Jūs gatavojaties aizvietot savu sākuma sesiju:
+sm.replaceStartup.button0.label=Aizvietot sesiju
+sm.replaceStartup.button0.accesskey=A
+sm.replaceStartup.button1.label=Neaizvietot
+sm.replaceStartup.button1.accesskey=V
+sm.removeStartup.title=Sesiju pārvaldnieks – dzēst sākuma sesiju
+sm.removeStartup.msg0=Jūs gatavojaties dzēst savu sākuma sesiju:
+sm.removeStartup.msg1=Izvēlieties savu jauno sākuma sesiju no saraksta:
+sm.removeStartup.button0.label=Dzēst
+sm.removeStartup.button0.accesskey=D
+sm.removeStartup.button1.label=Nedzēst
+sm.removeStartup.button1.accesskey=N
+sm.title=Sesiju pārvaldnieks
+sm.dontSaveBlank.msg=Sesiju pārvadnieks nesaglabā tukšus logus
+sm.sessoinSave.error=Kļūda sesiju pārvadniekā, sesija netika saglabāta
+sm.sessionName.title.rename=Sesiju pārvadnieks – pārdēvēt sesiju
+sm.sessionName.title.saveprevious=Sesiju pārvadnieks – saglabāt sesiju
+sm.sessionName.title.savethiswindow=Sesiju pārvadnieks – saglabāt šo logu
+sm.sessionName.title.saveallwindows=Sesiju pārvadnieks – saglabāt visus logus
+sm.sessionName.msg0=Ievadiet sesijas nosaukumu:
+sm.sessionName.msg1=Nosaukumā jābūt vismaz vienam burtam vai ciparam.
+sm.sessionName.msg2=Šis nosaukums jau tiek izmantots!
+sm.sessionName.msg3=Vai tiešām vēlaties aizvietot šo sesiju?
+sm.sessionName.button0.label=Pārdēvēt sesiju
+sm.sessionName.button0.accesskey=P
+sm.sessionName.button1.label=Nepārdēvēt
+sm.sessionName.button1.accesskey=D
+sm.session.empty=tukšs
+sm.session.tabs=C
+sm.session.windows=L
+sm.removeAll.title.session=Sesiju pārvaldnieks - dzēst visas saglabātās sesijas
+sm.removeAll.title.closedwindow=Sesiju pārvaldnieks - dzēst visus aizvērtos logus
+sm.removeAll.msg0=Vai tiešām vēlaties dzēst visas jūsu saglabātās sesijas?
+sm.removeAll.msg1=Ja izvēlēsieties \'Dzēst\', jūsu palaišanas sesija būs \'Pēdējā sesija\'.
+sm.removeAll.msg2=Vai tiešām vēlaties dzēst visus jūsu aizvērtos logus?
+sm.sessionMenu.last=Pēdējā sesija
+sm.sessionMenu.lastDefault=Pēdējā sesija - noklusējums
+sm.sessionMenu.lastgood=Pēdējā labā sesija
+sm.sessionMenu.previous=Priekšpēdējā
+sm.sessionMenu.crashed=Avarējusī sesija
+sm.afterCrash.title=Sesiju pārvaldnieks - atjaunot pēc avārijas
+sm.afterCrash.chkbox.label=Ieslēgt sesiju pārvaldnieku
+sm.afterCrash.msg0=Jūsu pēdējā sesija avarēja!
+sm.afterCrash.msg0.again=Jūsu pēdējā avarējusī sesija atkal avarēja!
+sm.afterCrash.msg1=Izvēlieties atjaunojamo sesiju no saraksta:
+sm.afterCrash.msg2=Izvēlieties, kā turpināt
+sm.afterCrash.msg3=Sesiju pārvaldnieks pašreiz ir atslēgts, ja to ieslēgsiet, sesiju pārvaldnieka izvēlnē varēsiet atjaunot avarējušas sesijas, aizvērtas sesijas, saglabātas sesijas, kā arī aizvērtus logus.
+sm.afterCrash.msg4=Avarējušo sesiju varat arī atjaunot vēlāk no sesiju pārvaldnieka izvēlnes.
+sm.afterCrash.msg5=bet nekas netika saglabāts.
+sm.afterCrash.msg6=bet jūsu avarējušajā sesijā nav atvērtu logu
+sm.afterCrash.msg7=No aizvērto logu saraksta izvēlieties logu, ko atjaunot
+sm.afterCrash.msg8=(aizvērtos logus varat atjaunot arī vēlāk no aizvērto logu izvēlnes)
+sm.afterCrash.msg9=Jūsu avarējusī sesija ir tukša!
+sm.afterCrash.msg10=Sesiju pārvaldnieks neatrada sesijas, no kurām atjaunot.
+sm.afterCrash.button0.label=Atjaunot sesiju
+sm.afterCrash.button0.accesskey=A
+sm.afterCrash.button0.crashed.label=Atjaunot avarējušo sesiju
+sm.afterCrash.button0.crashed.accesskey=A
+sm.afterCrash.button1.label=Neajaunot
+sm.afterCrash.button1.accesskey=N
+sm.start.title=Sesiju pārvaldnieks - atjaunot sesiju
+sm.start.chkbox.label=Ieslēgt pēcavārijas atjaunošanu
+sm.start.msg0=Jūsu palaišanas sesija ir tukša!
+sm.start.msg1=Pēcavārijas apkope pašreiz ir atslēgta; ja to ieslēgsiet, varēsiet atjaunot avarējušas sesijas.
+sm.start.msg2=Kļūda meklējot jūsu palaišanas sesiju, jūsu saglabātā palaišanas sesija neeksistē.
+sm.restoreError.msg0=Kļūda sesiju pārvaldnieka failā!
+sm.restoreError.msg1=Dzēst sesiju, ko mēģinājāt atjaunot
+sm.disable.msg=Firefox ir iebūvētā sesiju atjaunošanas iespēja.
+sm.disable.msg1=Vai vēlaties ieslēgt iebūvēto sesiju atjaunošanu un atslēgt Tab Mix Plus sesiju pārvaldnieku?
+sm.disable.msg2=Vai vēlaties ieslēgt Tab Mix Plus sesiju pārvaldnieku un atslēgt iebūvēto sesiju atjaunošanu?
+sm.extension.convert.msg1=Vai vēlaties pārveidot savu sesiju datus no Tab Mix Plus formātu uz Session Manager paplašinājuma formātu?
+sm.extension.convert.msg2=Varat izdarīt to vēlāk no Tab Mix Plus sesiju opciju loga.
+sm.extension.convert.nosessions=Šajā failā nav sesiju.
+sm.extension.convert.alreadyconverted=Šis sesiju fails jau ir pārveidots Session Manager paplašinājuma formātā.
+sm.extension.convert.doitagain=Vai vēlaties to pārveidot vēlreiz?
+sm.extension.convert.unable=Neizdevās pārveidot no session.rdf
+sm.extension.convert.many=sesijas pārveidotas, vai kādu no tām vēlaties dzēst?
+sm.extension.convert.one=viena sesija pārveidota, vai vēlaties to dzēst?
+sm.extension.convert.rename=Sesijas varēsiet pārdēvēt vēlāk no sesiju pārvaldnieka izvēlnes
+sm.extension.convert.selectfile=Izvēlieties pārveidojamo session.rdf failu
+sm.extension.convert.rdffiles=RDF faili
+sm.extension.convert.sessionfiles=Sesiju faili
+sm.tabview.hiddengroups=Vairāk ciļņu atjaunots slēptajās grupās.
+sm.tabview.hiddengroups.removed=Hidden tab groups was removed.
+sm.tabview.removed=The Tab Groups (Panorama) feature was removed from Firefox.
+sm.tabview.removed.learnMore.label=Learn More
+sm.tabview.removed.learnMore.accesskey=L
+sm.tabview.install.label=Install Tab Groups extension
+sm.tabview.install.accesskey=I
+sm.tabview.backup.session=History Session, backup with groups data
+sm.tabview.backup.crashed=Crashed Session, backup with groups data
+sm.tabview.backup.msg=Tab mix plus Session Manager has saved a backup of your session.
+sm.bookmarks.historySession= History Session
+sm.bookmarks.closedWindow= Closed Window
+sm.bookmarks.sessionFolder=Tab Mix Plus Sessions
+# LOCALIZATION NOTE (sm.bookmarks.migration.windowID):
+# %S is the window number in the session
+sm.bookmarks.migration.windowID= Window %S
diff --git a/chrome/locale/lv-LV/tabmix.dtd b/chrome/locale/lv-LV/tabmix.dtd
new file mode 100644
index 0000000..2fa9126
--- /dev/null
+++ b/chrome/locale/lv-LV/tabmix.dtd
@@ -0,0 +1,131 @@
+<!ENTITY closedtabsbtn.label "Aizvērtās cilnes">
+<!ENTITY closedtabsbtn.tooltip "Parādīt aizvērto ciļņu sarakstu">
+<!ENTITY sessionbtn.tooltip "Parādīt un pārvaldīt jūsu sesijas">
+<!ENTITY tabslistbtn.label "Atvērtās cilnes">
+<!ENTITY tabslistbtn.tooltip "Parādīt atvērto ciļņu sarakstu">
+<!ENTITY closedwindowsbtn.label "Aizvērtie logi">
+<!ENTITY closedwindowsbtn.tooltip "Parādīt aizvērto logu sarakstu">
+<!ENTITY page.header.title "Tab Mix Plus opcijas">
+<!ENTITY options.main.sessionbutton.label "Tab Mix Plus sesiju pārvaldnieks">
+<!ENTITY session.Tools "Sesiju pārvaldnieks">
+<!ENTITY closedWin.label "Aizvērto logu saraksts">
+<!ENTITY duplicateTabMenu.label "Dublicēt cilni">
+<!ENTITY duplicateTabMenu.accesskey "D">
+<!ENTITY duplicateinWin.label "Dublicēt uz jaunu logu">
+<!ENTITY duplicateinWin.accesskey "L">
+<!ENTITY detachTab.label "Pārvietot uz jaunu logu">
+<!ENTITY detachTab.accesskey "P">
+<!ENTITY mergeContext.label "Apvienot logus">
+<!ENTITY mergeContext.accesskey "A">
+<!ENTITY renametab.label "Pārdēvēt cilni">
+<!ENTITY renametab.accesskey "C">
+<!ENTITY copytaburl.label "Kopēt cilnes URL">
+<!ENTITY copytaburl.accesskey "O">
+<!ENTITY reloadother.label "Pārlādēt citas cilnes">
+<!ENTITY reloadother.accesskey "R">
+<!ENTITY reloadleft.label "Pārlādēt kreisās cilnes">
+<!ENTITY reloadleft.accesskey "K">
+<!ENTITY reloadright.label "Pārlādēt labās cilnes">
+<!ENTITY reloadright.accesskey "L">
+<!ENTITY autoReloadTab.label "Pārlādēt cilni katras">
+<!ENTITY autoReloadTab.accesskey "P">
+<!ENTITY autoReloadSite.label "Pārlādēt šo vietni katras">
+<!ENTITY autoReloadSite.accesskey "V">
+<!ENTITY afterthis.label "Pēc šīs cilnes">
+<!ENTITY bookmarktab.label "Pievienot šo cilni grāmatzīmēm">
+<!ENTITY undoCloseListMenu.label "Aizvērto ciļņu saraksts">
+<!ENTITY undoCloseListMenu.accesskey "S">
+<!ENTITY closeAllTabsMenu.label "Aizvērt visas cilnes">
+<!ENTITY closeall.accesskey "Z">
+<!ENTITY closeSimilarTab.label "Aizvērt līdzīgās cilnes">
+<!ENTITY closeSimilarTab.accesskey "L">
+<!ENTITY closeTabsToLeft.label "Aizvērt cilnes pa kreisi">
+<!ENTITY closeleft.accesskey "K">
+<!ENTITY docShellMenu.label "Atļaujas">
+<!ENTITY docShellMenu.accesskey "J">
+<!ENTITY freezeTabMenu.label "Sasaldēt cilni">
+<!ENTITY freezeTabMenu.accesskey "S">
+<!ENTITY protectTabMenu.label "Aizsargāt cilni">
+<!ENTITY protectTabMenu.tooltip "Aizsargāt cilnes no aizvēršanas">
+<!ENTITY protectTabMenu.accesskey "Z">
+<!ENTITY lockTabMenu.label "Noslēgt cilni">
+<!ENTITY lockTabMenu.tooltip "Visas saites atvērt jaunā cilnē">
+<!ENTITY lockTabMenu.accesskey "K">
+<!ENTITY bookmarktabs.label "Pievienot grāmatzīmēm visas cilnes">
+<!ENTITY linkhere.label "Atvērt saiti šajā cilnē">
+<!ENTITY linkhere.accesskey "T">
+<!ENTITY linkBackgroundTab.label "Atvērt saiti fona cilnē">
+<!ENTITY linkForegroundTab.label "Atvērt saiti priekšplāna cilnē">
+<!ENTITY linkBackgroundTab.accesskey "F">
+<!ENTITY linkForegroundTab.accesskey "P">
+<!ENTITY openalllinks.label "Atvērt saites jaunās cilnēs">
+<!ENTITY openalllinks.accesskey "J">
+<!ENTITY linkwithhistory.label "Atvērt saiti dublicētā cilnē">
+<!ENTITY linkwithhistory.accesskey "D">
+<!ENTITY tabsList.label "Atvērto ciļņu saraksts">
+<!ENTITY tabsList.accesskey "K">
+<!ENTITY allowImage.label "Attēls">
+<!ENTITY allowJavascript.label "JavaScript">
+<!ENTITY allowRedirect.label "Pārvirzīt">
+<!ENTITY allowPlugin.label "Spraudnis">
+<!ENTITY allowFrame.label "Rāmis">
+<!ENTITY restoreincurrent.label "Atjaunot uz pašreizējo cilni">
+<!ENTITY restoreincurrent.accesskey "T">
+<!ENTITY restoreinwin.label "Atjaunot uz jaunu logu">
+<!ENTITY restoreinwin.accesskey "L">
+<!ENTITY restoreintab.label "Atjaunot uz jaunu cilni">
+<!ENTITY restoreintab.accesskey "U">
+<!ENTITY restoretab.label "Atjaunot cilni">
+<!ENTITY restoretab.accesskey "N">
+<!ENTITY bookmark.label "Pievienot grāmatzīmēm šo saiti">
+<!ENTITY bookmark.accesskey "G">
+<!ENTITY deletelist.label "Dzēst no saraksta">
+<!ENTITY deletelist.accesskey "D">
+<!ENTITY settings.label "Iestatījumi">
+<!ENTITY saveWindow.label "Saglabāt šo logu">
+<!ENTITY saveAllWindows.label "Saglabāt visus logus">
+<!ENTITY sm.context.overwrite "Atjaunot, pārrakstīt esošos logus">
+<!ENTITY sm.context.overwrite.key "P">
+<!ENTITY sm.context.restore.new "Atjaunot uz jaunu logu">
+<!ENTITY sm.context.restore.newkey "J">
+<!ENTITY sm.context.replacethis "Aizvietot ar šo logu">
+<!ENTITY sm.context.replacethis.key "A">
+<!ENTITY sm.context.replaceall "Aizvietot ar visiem logiem">
+<!ENTITY sm.context.replaceall.key "V">
+<!ENTITY sm.context.add "Pievienot šo logu">
+<!ENTITY sm.context.add.key "L">
+<!ENTITY sm.context.addall "Pievienot visus logus">
+<!ENTITY sm.context.addall.key "I">
+<!ENTITY sm.context.save "Saglabāt">
+<!ENTITY sm.context.save.key "S">
+<!ENTITY sm.context.rename "Pārdēvēt">
+<!ENTITY sm.context.rename.key "P">
+<!ENTITY sm.context.bookmarkSession "Bookmark Session">
+<!ENTITY sm.context.bookmarkSession.key "B">
+<!ENTITY sm.context.delete "Dzēst">
+<!ENTITY sm.context.delete.key "D">
+<!ENTITY sm.context.deleteall "Dzēst visu">
+<!ENTITY sm.context.deleteall.key "V">
+<!ENTITY sm.context.startup "Iestatīt kā palaišanas sesiju">
+<!ENTITY sm.context.startup.key "P">
+<!ENTITY sm.context.details "Rādīt skaitītājus, datumu un laiku sesiju izvēlnē">
+<!ENTITY sm.context.details.key "S">
+<!ENTITY tab.key "C">
+<!ENTITY window.key "L">
+<!ENTITY merge.key "A">
+<!ENTITY sortedTabs.label "Sakārtotās cilnes">
+<!ENTITY sortedTabs.tooltip "Atzīmējiet, lai sarakstu rādītu alfabētiski sakārtotu">
+<!ENTITY enable.label "Ieslēgt">
+<!ENTITY custom.label "Pielāgots">
+<!ENTITY enableTabs.label "Ieslēgt visas cilnes">
+<!ENTITY disableTabs.label "Atslēgt visas cilnes">
+<!ENTITY seconds.label "sekundes">
+<!ENTITY minutes.label "minūtes">
+<!ENTITY minute.label "minūte">
+<!ENTITY hideTabBar.label "Paslēpt ciļņu joslu">
+<!ENTITY hideTabBar.never.label "Nekad">
+<!ENTITY hideTabBar.never.key "N">
+<!ENTITY hideTabBar.onOneTab.label "Kad atvērta tikai viena cilne">
+<!ENTITY hideTabBar.onOneTab.key "E">
+<!ENTITY hideTabBar.always.label "Vienmēr">
+<!ENTITY hideTabBar.always.key "V">
diff --git a/chrome/locale/lv-LV/tabmix.properties b/chrome/locale/lv-LV/tabmix.properties
new file mode 100644
index 0000000..4dcffa2
--- /dev/null
+++ b/chrome/locale/lv-LV/tabmix.properties
@@ -0,0 +1,49 @@
+extensions.{dc572301-7619-498c-a57d-39143191b318}.description=Uzlabota pārlūkošana ar cilnēm
+tmp.merge.warning.title=Aizver logus ar neapvienotajām cilnēm
+tmp.merge.warning.message=Izvēlētās cilnes tiks apvienotas ar citu logu, bet citas cilnes tagad tiks aizvērtas līdz ar pašreizējo logu.
+tmp.merge.warning.checkboxLabel=Vienmēr brīdināt mani, kad aizver logu ar cilnēm, kas netiek apvienotas.
+tmp.merge.error=Jābūt atvērtiem vismaz diviem logiem, pirms varat tos apvienot
+tmp.merge.private=Jūs nevarat apvienot privāto ar ne-privāto logu.
+tmp.importPref.error1=Nevar importēt, jo tas nav derīgs fails.
+tmp.importPref.error2=Iestatījumus neizdevās importēt.
+tmp.sessionempty=Nākamreiz, kad palaidīsiet pārlūku, \'Iepriekšējā sesija\' būs tukša.
+droptoclose.label=Nometiet cilni, lai to aizvērtu
+droplink.label=Nometiet centrā, lai cilni aizvietotu, vai sānos, lai izveidotu jaunu cilni
+flstOn.label=Cilnes fokuss uz pēdējo izvēlēto - nospiediet F9, lai apmainītu iestatījumu
+flstOff.label=Cilnes fokuss pa labi - nospiediet F9, lai apmainītu iestatījumu
+slideshowOn.label=Ciļņu rotācija ir ieslēgta - nospiediet F8, lai izslēgtu
+slideshowOff.label=Ciļņu rotācija ir izslēgta - nospiediet F8, lai ieslēgtu
+undoclosetab.clear.label=Notīrīt aizvērto ciļņu sarakstu
+undoclosetab.clear.accesskey=C
+undoClosedWindows.clear.label=Notīrīt aizvērto logu sarakstu
+undoClosedWindows.clear.accesskey=C
+protectedtabs.closeWarning.1=Jūs gatavojaties aizvērt %S aizsargātu cilni. Vai tiešām vēlaties turpināt?
+protectedtabs.closeWarning.2=Jūs gatavojaties aizvērt %S aizsargātas cilnes. Vai tiešām vēlaties turpināt?
+protectedtabs.closeWarning.3=Jūs gatavojaties aizvērt %S cilnes, %S no tām aizsargātas. Vai tiešām vēlaties turpināt?
+protectedtabs.closeWarning.4=Brīdināt mani, kad mēģinu aizvērtu logu ar aizsargātām cilnēm
+window.closeWarning.1=Brīdināt mani, kad mēģinu aizvērtu logu ar vairākām cilnēm
+closeWindow.label=Aizvērt logu
+confirm_autoreloadPostData_title=Brīdinājums!
+confirm_autoreloadPostData=Vietne, kurā mēģinājāt ieslēgt automātisko pārlādēšanu, satur POSTDATA.\nJa ieslēgsiet automātisko pārlādēšanu, jebkāda darbība, ko ievades forma izpilda (piem., tiešsaistes pirkums), tiks atkārtota.\n\nVai tiešām vēlaties ieslēgt automātisko pārlādēšanu?
+confirm_autoreloadPostData_remote=The page on which you tried to enable Auto Reload contains POSTDATA.\nIf you enable Auto Reload, any action the form carries out (such as an online purchase) will be lost.\n\nAre you sure that you want to enable Auto Reload?
+incompatible.title=Tab Mix Plus
+incompatible.msg0=Sekojošie paplašinājumu ir iekļauti Tab Mix Plus vai nav ar to saderīgi.
+incompatible.msg1=Vai vēlaties atslēgt šos paplašinājumus?
+incompatible.msg2=Nesaderīgie paplašinājumi tiks atslēgti pēc tam, kad pārstartēsiet savu pārlūku.
+incompatible.button0.label=Atslēgt
+incompatible.button0.accesskey=A
+incompatible.button1.label=Neatslēgt
+incompatible.button1.accesskey=N
+incompatible.button2.label=Atslēgt un pārstartēt
+incompatible.button2.accesskey=T
+incompatible.chkbox.label=Parādīt šo brīdinājumu, palaižot pārlūku
+tabmixoption.error.title=Tab Mix Plus kļūda
+tabmixoption.error.msg=Lai lietotu Tab Mix Plus opcijas, jābūt vienam pārlūka logam
+# LOCALIZATION NOTE (rowsTooltip.rowscount):
+# Semicolon-separated list of plural forms. See:
+# http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 is the total number of rows
+# The singular form is not considered since this string is used only for
+# multiple rows.
+rowsTooltip.rowscount=;#1 Rows
+rowsTooltip.activetab=Active tab on row #1
diff --git a/chrome/locale/nl/tabmix.dtd b/chrome/locale/nl/tabmix.dtd
index 1402066..6c8bb3e 100644
--- a/chrome/locale/nl/tabmix.dtd
+++ b/chrome/locale/nl/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "G">
 <!ENTITY closeTabsToLeft.label "Tabbladen links afsluiten">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Tabbladen rechts afsluiten">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "Toestemmingen">
 <!ENTITY docShellMenu.accesskey "T">
 <!ENTITY freezeTabMenu.label "Tabblad bevriezen">
diff --git a/chrome/locale/pl/tabmix.dtd b/chrome/locale/pl/tabmix.dtd
index f7deac5..5c9f24e 100644
--- a/chrome/locale/pl/tabmix.dtd
+++ b/chrome/locale/pl/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "P">
 <!ENTITY closeTabsToLeft.label "Zamknij karty po lewej stronie">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Zamknij karty po prawej stronie">
-<!ENTITY closeright.accesskey "S">
 <!ENTITY docShellMenu.label "Zezwolenia">
 <!ENTITY docShellMenu.accesskey "E">
 <!ENTITY freezeTabMenu.label "Zamroź kartę">
diff --git a/chrome/locale/pt-BR/tabmix.dtd b/chrome/locale/pt-BR/tabmix.dtd
index fed79fe..f81d643 100644
--- a/chrome/locale/pt-BR/tabmix.dtd
+++ b/chrome/locale/pt-BR/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "Fechar abas para a esquerda">
 <!ENTITY closeleft.accesskey "Q">
-<!ENTITY closeTabstoRight.label "Fechar abas para a direita">
-<!ENTITY closeright.accesskey "T">
 <!ENTITY docShellMenu.label "Permissões">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Congelar aba">
diff --git a/chrome/locale/pt-PT/tabmix.dtd b/chrome/locale/pt-PT/tabmix.dtd
index 4bac9a1..3458eb9 100644
--- a/chrome/locale/pt-PT/tabmix.dtd
+++ b/chrome/locale/pt-PT/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "h">
 <!ENTITY closeTabsToLeft.label "Fechar os separadores à esquerda">
 <!ENTITY closeleft.accesskey "q">
-<!ENTITY closeTabstoRight.label "Fechar os separadores à direita">
-<!ENTITY closeright.accesskey "d">
 <!ENTITY docShellMenu.label "Permissões">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Congelar separador">
diff --git a/chrome/locale/ro/tabmix.dtd b/chrome/locale/ro/tabmix.dtd
index cae357d..a0d2a6f 100644
--- a/chrome/locale/ro/tabmix.dtd
+++ b/chrome/locale/ro/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "i">
 <!ENTITY closeTabsToLeft.label "Închide filele din stânga">
 <!ENTITY closeleft.accesskey "s">
-<!ENTITY closeTabstoRight.label "Închide filele din dreapta">
-<!ENTITY closeright.accesskey "d">
 <!ENTITY docShellMenu.label "Permisiuni">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Îngheață fila">
diff --git a/chrome/locale/ru-RU/session-manager.properties b/chrome/locale/ru-RU/session-manager.properties
index c90e94d..c853b34 100644
--- a/chrome/locale/ru-RU/session-manager.properties
+++ b/chrome/locale/ru-RU/session-manager.properties
@@ -106,17 +106,17 @@ sm.extension.convert.rdffiles=RDF-файлы
 sm.extension.convert.sessionfiles=Файлы сессии
 sm.tabview.hiddengroups=Больше вкладок восстановлено в скрытых группах.
 sm.tabview.hiddengroups.removed=Hidden tab groups was removed.
-sm.tabview.removed=The Tab Groups (Panorama) feature was removed from Firefox.
-sm.tabview.removed.learnMore.label=Learn More
-sm.tabview.removed.learnMore.accesskey=L
-sm.tabview.install.label=Install Tab Groups extension
-sm.tabview.install.accesskey=I
+sm.tabview.removed=Функция групп вкладок (Panorama) была удалена из Firefox.
+sm.tabview.removed.learnMore.label=Узнать больше
+sm.tabview.removed.learnMore.accesskey=з
+sm.tabview.install.label=Установить расширение Tab Groups
+sm.tabview.install.accesskey=У
 sm.tabview.backup.session=History Session, backup with groups data
 sm.tabview.backup.crashed=Crashed Session, backup with groups data
-sm.tabview.backup.msg=Tab mix plus Session Manager has saved a backup of your session.
-sm.bookmarks.historySession= History Session
-sm.bookmarks.closedWindow= Closed Window
-sm.bookmarks.sessionFolder=Tab Mix Plus Sessions
+sm.tabview.backup.msg=Менеджер сессий Tab Mix Plus сохранил резервную копию вашей сессии.
+sm.bookmarks.historySession=История сессий
+sm.bookmarks.closedWindow=Закрытое окно
+sm.bookmarks.sessionFolder=Сессии Tab Mix Plus
 # LOCALIZATION NOTE (sm.bookmarks.migration.windowID):
 # %S is the window number in the session
-sm.bookmarks.migration.windowID= Window %S
+sm.bookmarks.migration.windowID=Окно %S
diff --git a/chrome/locale/ru-RU/tabmix.dtd b/chrome/locale/ru-RU/tabmix.dtd
index c3044d9..fb0b035 100644
--- a/chrome/locale/ru-RU/tabmix.dtd
+++ b/chrome/locale/ru-RU/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "ж">
 <!ENTITY closeTabsToLeft.label "Закрыть вкладки слева">
 <!ENTITY closeleft.accesskey "л">
-<!ENTITY closeTabstoRight.label "Закрыть вкладки справа">
-<!ENTITY closeright.accesskey "п">
 <!ENTITY docShellMenu.label "Установить разрешения">
 <!ENTITY docShellMenu.accesskey "р">
 <!ENTITY freezeTabMenu.label "Заморозить вкладку">
@@ -102,8 +100,8 @@
 <!ENTITY sm.context.save.key "х">
 <!ENTITY sm.context.rename "Переименовать">
 <!ENTITY sm.context.rename.key "П">
-<!ENTITY sm.context.bookmarkSession "Bookmark Session">
-<!ENTITY sm.context.bookmarkSession.key "B">
+<!ENTITY sm.context.bookmarkSession "Сессия закладок">
+<!ENTITY sm.context.bookmarkSession.key "е">
 <!ENTITY sm.context.delete "Удалить">
 <!ENTITY sm.context.delete.key "У">
 <!ENTITY sm.context.deleteall "Удалить все">
diff --git a/chrome/locale/sk-SK/tabmix.dtd b/chrome/locale/sk-SK/tabmix.dtd
index 4276667..8dfafc6 100644
--- a/chrome/locale/sk-SK/tabmix.dtd
+++ b/chrome/locale/sk-SK/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "Zatvoriť karty naľavo">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Zatvoriť karty napravo">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "Oprávnenia">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Zmraziť kartu">
diff --git a/chrome/locale/sr/tabmix.dtd b/chrome/locale/sr/tabmix.dtd
index 8e8a1ae..0a52bb3 100644
--- a/chrome/locale/sr/tabmix.dtd
+++ b/chrome/locale/sr/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "с">
 <!ENTITY closeTabsToLeft.label "Затвори картице са леве стране">
 <!ENTITY closeleft.accesskey "л">
-<!ENTITY closeTabstoRight.label "Затвори картице са десне стране">
-<!ENTITY closeright.accesskey "д">
 <!ENTITY docShellMenu.label "Дозволе">
 <!ENTITY docShellMenu.accesskey "в">
 <!ENTITY freezeTabMenu.label "Замрзни картицу">
diff --git a/chrome/locale/sv-SE/tabmix.dtd b/chrome/locale/sv-SE/tabmix.dtd
index 44e6a13..f9cd7e8 100644
--- a/chrome/locale/sv-SE/tabmix.dtd
+++ b/chrome/locale/sv-SE/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "l">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "v">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "h">
 <!ENTITY docShellMenu.label "Rättigheter">
 <!ENTITY docShellMenu.accesskey "R">
 <!ENTITY freezeTabMenu.label "Frys flik">
diff --git a/chrome/locale/tr/tabmix.dtd b/chrome/locale/tr/tabmix.dtd
index 9de69ee..f5358da 100644
--- a/chrome/locale/tr/tabmix.dtd
+++ b/chrome/locale/tr/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "B">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "O">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "Ğ">
 <!ENTITY docShellMenu.label "İzinler">
 <!ENTITY docShellMenu.accesskey "İ">
 <!ENTITY freezeTabMenu.label "Sekmeyi dondur">
diff --git a/chrome/locale/uk-UA/tabmix.dtd b/chrome/locale/uk-UA/tabmix.dtd
index 1d8c345..a64a75c 100644
--- a/chrome/locale/uk-UA/tabmix.dtd
+++ b/chrome/locale/uk-UA/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "Закрити всі вкладки Ліворуч">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "Закрити всі вкладки Праворуч">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "Дозволи">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "Заморозити вкладку">
diff --git a/chrome/locale/vi/tabmix.dtd b/chrome/locale/vi/tabmix.dtd
index a181e0a..92b6940 100644
--- a/chrome/locale/vi/tabmix.dtd
+++ b/chrome/locale/vi/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "u">
 <!ENTITY closeTabsToLeft.label "Close Tabs to the Left">
 <!ENTITY closeleft.accesskey "r">
-<!ENTITY closeTabstoRight.label "Close Tabs to the Right">
-<!ENTITY closeright.accesskey "P">
 <!ENTITY docShellMenu.label "Quyền hạn">
 <!ENTITY docShellMenu.accesskey "Q">
 <!ENTITY freezeTabMenu.label "Đông cứng Thẻ">
diff --git a/chrome/locale/zh-CN/tabmix.dtd b/chrome/locale/zh-CN/tabmix.dtd
index 7723ddb..5a36dbe 100644
--- a/chrome/locale/zh-CN/tabmix.dtd
+++ b/chrome/locale/zh-CN/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "关闭标签页的左边">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "关闭右侧标签页">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "网页许可">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "冻结标签页">
diff --git a/chrome/locale/zh-TW/tabmix.dtd b/chrome/locale/zh-TW/tabmix.dtd
index 03d380e..9c9a9f4 100644
--- a/chrome/locale/zh-TW/tabmix.dtd
+++ b/chrome/locale/zh-TW/tabmix.dtd
@@ -41,8 +41,6 @@
 <!ENTITY closeSimilarTab.accesskey "S">
 <!ENTITY closeTabsToLeft.label "關閉左側分頁">
 <!ENTITY closeleft.accesskey "L">
-<!ENTITY closeTabstoRight.label "關閉右側分頁">
-<!ENTITY closeright.accesskey "R">
 <!ENTITY docShellMenu.label "網頁內容允許">
 <!ENTITY docShellMenu.accesskey "P">
 <!ENTITY freezeTabMenu.label "保護並鎖定分頁">
diff --git a/chrome/skin/tab.css b/chrome/skin/tab.css
index 20529a5..3ef5267 100644
--- a/chrome/skin/tab.css
+++ b/chrome/skin/tab.css
@@ -165,8 +165,12 @@ toolbar[mode="full"] .tabmix-button[type="menu"] {
 
 /* ::::: Fullscreen pseudo-toolbar ::::: */
 #fullscr-bottom-toggler {
+  bottom: 0;
+  left: 0;
+  width: 100%;
   height: 1px;
-  background: black;
+  position: fixed;
+  z-index: 2147483647;
 }
 
 /*
diff --git a/install.rdf b/install.rdf
index 4257fb2..d90721e 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
   <RDF:Description RDF:about="urn:mozilla:install-manifest"
                    NS1:id="{dc572301-7619-498c-a57d-39143191b318}"
                    NS1:name="Tab Mix Plus"
-                   NS1:version="0.4.2.2"
+                   NS1:version="0.4.2.3pre.160319a1"
                    NS1:type="2"
                    NS1:multiprocessCompatible="true"
                    NS1:description="Tab browsing with an added boost."
diff --git a/modules/ContentClick.jsm b/modules/ContentClick.jsm
index 68acfc9..d15b236 100644
--- a/modules/ContentClick.jsm
+++ b/modules/ContentClick.jsm
@@ -454,12 +454,7 @@ ContentClickInternal = {
   contentLinkClick: function(event, browser, focusedWindow) {
     this._contentLinkClick(event, browser, focusedWindow);
     if (event.__hrefFromOnClick) {
-      if (TabmixSvc.version(220))
-        event.stopImmediatePropagation();
-      else {
-        event.stopPropagation();
-        browser.ownerDocument.defaultView.contentAreaClick(event);
-      }
+      event.stopImmediatePropagation();
     }
     this.resetData();
   },
@@ -978,11 +973,10 @@ ContentClickInternal = {
     let isValidWindow = function(aWindow) {
       // window is valid only if both source and destination are in the same
       // privacy state and multiProcess state
-      if ((TabmixSvc.version(200) &&
-           PrivateBrowsingUtils.isWindowPrivate(window) !=
-           PrivateBrowsingUtils.isWindowPrivate(aWindow)) ||
-          (TabmixSvc.version(320) &&
-           window.gMultiProcessBrowser != aWindow.gMultiProcessBrowser)) {
+      if (PrivateBrowsingUtils.isWindowPrivate(window) !=
+          PrivateBrowsingUtils.isWindowPrivate(aWindow) ||
+          TabmixSvc.version(320) &&
+          window.gMultiProcessBrowser != aWindow.gMultiProcessBrowser) {
         return false;
       }
       return true;
diff --git a/modules/MergeWindows.jsm b/modules/MergeWindows.jsm
index fccadae..1b86a58 100644
--- a/modules/MergeWindows.jsm
+++ b/modules/MergeWindows.jsm
@@ -7,6 +7,9 @@ const Cu = Components.utils;
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://tabmixplus/Services.jsm");
 
+XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
+  "resource://gre/modules/PrivateBrowsingUtils.jsm");
+
 //////////////////////////////////////////////////////////////////////
 // The Original Code is the Merge Window function of "Duplicate Tab"//
 // extension for Mozilla Firefox.                                   //
@@ -33,7 +36,7 @@ this.MergeWindows = {
     var selectedTabs = tabbrowser.tabContainer.getElementsByAttribute("mergeselected", true);
     let options = {
       skipPopup: !this.prefs.getBoolPref("mergePopups"),
-      private: TabmixSvc.version(200) ? this.isWindowPrivate(aWindow) : false,
+      private: this.isWindowPrivate(aWindow),
       tabsSelected: selectedTabs.length > 0,
       multiple: mergeAllWindows && !selectedTabs.length
     };
@@ -98,8 +101,7 @@ this.MergeWindows = {
 
   mergePopUpsToNewWindow: function(aWindows, aPrivate) {
     var features = "chrome,all,dialog=no";
-    if (TabmixSvc.version(200))
-      features += aPrivate ? ",private" : ",non-private";
+    features += aPrivate ? ",private" : ",non-private";
     var newWindow = aWindows[0].openDialog("chrome://browser/content/browser.xul",
         "_blank", features, null);
     let mergePopUps = function _mergePopUps() {
@@ -201,16 +203,10 @@ this.MergeWindows = {
     return !aWindow.toolbar.visible;
   },
 
-  // we use it only for Fireofx 20+, before that always return false
   isWindowPrivate: function() {
     delete this.isWindowPrivate;
-    if (TabmixSvc.version(200)) {
-      Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
-      this.isWindowPrivate = aWindow => PrivateBrowsingUtils.isWindowPrivate(aWindow);
-      return this.isWindowPrivate(arguments[0]);
-    }
-    this.isWindowPrivate = () => false;
-    return false;
+    this.isWindowPrivate = aWindow => PrivateBrowsingUtils.isWindowPrivate(aWindow);
+    return this.isWindowPrivate(arguments[0]);
   },
 
   /*
diff --git a/modules/Services.jsm b/modules/Services.jsm
index 66e2197..c567c70 100644
--- a/modules/Services.jsm
+++ b/modules/Services.jsm
@@ -182,8 +182,7 @@ this.TabmixSvc = {
 
       Services.obs.addObserver(this, "quit-application", true);
 
-      if (isVersion(190))
-        Cu.import("resource://tabmixplus/DownloadLastDir.jsm");
+      Cu.import("resource://tabmixplus/DownloadLastDir.jsm");
 
       Cu.import("resource://tabmixplus/Places.jsm");
       TabmixPlacesUtils.init(aWindow);
@@ -230,17 +229,6 @@ this.TabmixSvc = {
     tabStateCache.saveTabAttributes(tab, attrib, save);
   },
 
-  get ss() {
-    delete this.ss;
-    if (isVersion(250, 250)) {
-      let tmp = {};
-      Cu.import("resource:///modules/sessionstore/SessionStore.jsm", tmp);
-      return (this.ss = tmp.SessionStore);
-    }
-    return (this.ss = Cc["@mozilla.org/browser/sessionstore;1"].
-                     getService(Ci.nsISessionStore));
-  },
-
   sm: {
     lastSessionPath: null,
     persistTabAttributeSet: false,
@@ -285,10 +273,8 @@ XPCOMUtils.defineLazyGetter(TabmixSvc, "australis", function() {
 });
 
 XPCOMUtils.defineLazyGetter(TabmixSvc, "prefs", function() {
-  let svc = isVersion(230) ? "resource://gre/modules/Preferences.jsm" :
-                             "resource://services-common/preferences.js";
   let tmp = {};
-  Cu.import(svc, tmp);
+  Cu.import("resource://gre/modules/Preferences.jsm", tmp);
   return new tmp.Preferences("");
 });
 
@@ -332,6 +318,12 @@ XPCOMUtils.defineLazyModuleGetter(TabmixSvc, "FileUtils",
 XPCOMUtils.defineLazyModuleGetter(TabmixSvc, "console",
   "resource://tabmixplus/log.jsm");
 
+XPCOMUtils.defineLazyGetter(TabmixSvc, "ss", function() {
+  let tmp = {};
+  Cu.import("resource:///modules/sessionstore/SessionStore.jsm", tmp);
+  return tmp.SessionStore;
+});
+
 XPCOMUtils.defineLazyGetter(TabmixSvc, "SessionStoreGlobal", function() {
   return Cu.getGlobalForObject(this.ss);
 });
@@ -356,8 +348,9 @@ tabStateCache = {
   },
 
   saveTabAttributes: function(tab, attrib, save = true) {
-    if (!isVersion(250))
+    if (TabmixSvc.isPaleMoon) {
       return;
+    }
 
     // force Sessionstore to save our persisted tab attributes
     if (save) {
diff --git a/modules/Shortcuts.jsm b/modules/Shortcuts.jsm
index a4fc5d4..4f2a5e2 100644
--- a/modules/Shortcuts.jsm
+++ b/modules/Shortcuts.jsm
@@ -8,6 +8,9 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://tabmixplus/Services.jsm");
 
+XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
+                                  "resource://gre/modules/PrivateBrowsingUtils.jsm");
+
 var KeyConfig;
 this.Shortcuts = {
   keys: {
@@ -63,7 +66,6 @@ this.Shortcuts = {
   updatingShortcuts: false,
   prefBackup: null,
   initialized: false,
-  permanentPrivateBrowsing: false,
   keyConfigInstalled: false,
 
   initService: function(aWindow) {
@@ -71,15 +73,6 @@ this.Shortcuts = {
       return;
     this.initialized = true;
 
-    if (TabmixSvc.version(200)) {
-      let tmp = {};
-      Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm", tmp);
-      this.permanentPrivateBrowsing = tmp.PrivateBrowsingUtils.permanentPrivateBrowsing;
-    } else {
-      this.permanentPrivateBrowsing = Cc["@mozilla.org/privatebrowsing;1"].
-          getService(Ci.nsIPrivateBrowsingService).autoStarted;
-    }
-
     // update keys initial value and label
     // get our key labels from shortcutsLabels.xml
     let $ = id => id && aWindow.document.getElementById(id);
@@ -282,7 +275,7 @@ this.Shortcuts = {
 
   _getChangedKeys: function TMP_SC__getChangedKeys(aOptions) {
     let shortcuts = !aOptions.onChange && this.prefBackup || this._getShortcutsPref();
-    let disableSessionKeys = this.permanentPrivateBrowsing ||
+    let disableSessionKeys = PrivateBrowsingUtils.permanentPrivateBrowsing ||
         !this.prefs.getBoolPref("sessions.manager");
     let changedKeys = {}, onOpen = aOptions.onOpen;
     for (let key of Object.keys(this.keys)) {
diff --git a/modules/SingleWindowModeUtils.jsm b/modules/SingleWindowModeUtils.jsm
index aca1221..533cbf3 100644
--- a/modules/SingleWindowModeUtils.jsm
+++ b/modules/SingleWindowModeUtils.jsm
@@ -6,18 +6,9 @@ const {interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://tabmixplus/Services.jsm");
+Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 
 this.SingleWindowModeUtils = {
-  initialized: false,
-  initService: function() {
-    if (this.initialized)
-      return;
-    this.initialized = true;
-
-    if (TabmixSvc.version(200))
-      Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
-  },
-
  /**
   * @brief Locate a browser window.
   *
@@ -30,14 +21,12 @@ this.SingleWindowModeUtils = {
   getBrowserWindow: function(aExclude) {
     // on per-window private browsing mode,
     // allow to open one normal window and one private window in single window mode
-    var checkPrivacy = TabmixSvc.version(200);
-    var isPrivate = checkPrivacy && PrivateBrowsingUtils.isWindowPrivate(aExclude);
+    var isPrivate = PrivateBrowsingUtils.isWindowPrivate(aExclude);
 
     function isSuitableBrowserWindow(win) {
       return (!win.closed && win.document.readyState == "complete" &&
               win.toolbar.visible && win != aExclude &&
-              (!checkPrivacy ||
-                PrivateBrowsingUtils.isWindowPrivate(win) == isPrivate));
+              PrivateBrowsingUtils.isWindowPrivate(win) == isPrivate);
     }
 
     var windows = Services.wm.getEnumerator("navigator:browser");
@@ -56,7 +45,6 @@ this.SingleWindowModeUtils = {
     if (!aWindow.arguments || aWindow.arguments.length === 0)
       return false;
 
-    this.initService();
     aWindow.addEventListener("load", function _onLoad(aEvent) {
       let window = aEvent.currentTarget;
       window.removeEventListener("load", _onLoad, false);
@@ -163,10 +151,6 @@ this.SingleWindowModeUtils = {
       // if we don't add this here BrowserShutdown fails
       newWindow.FullZoom.init = function() {};
       newWindow.FullZoom.destroy = function() {};
-      if (!TabmixSvc.version(230)) {
-        newWindow.PlacesStarButton.updateState = function() {};
-        newWindow.PlacesStarButton.uninit = function() {};
-      }
       newWindow.OfflineApps.uninit = function() {};
       newWindow.IndexedDBPromptHelper.init();
       var obs = Services.obs;
diff --git a/modules/extensions/TabGroupsManager.jsm b/modules/extensions/TabGroupsManager.jsm
index 94749b5..a627b3c 100644
--- a/modules/extensions/TabGroupsManager.jsm
+++ b/modules/extensions/TabGroupsManager.jsm
@@ -82,8 +82,6 @@ this.TMP_TabGroupsManager = {
       '  let jsonText = this.getLiteralValue(rdfNodeWindow, "tgm_jsonText");' +
       '  TabGroupsManager.session.groupRestored = 1;' +
       '  if (jsonText) {' +
-      '    /* make sure sessionstore is init */' +
-      '    TMP_SessionStore.initService();' +
       '    if ("__SSi" in window)' +
       '      TabmixSvc.ss.setWindowValue(window, "TabGroupsManagerAllGroupsData", decodeURI(jsonText));' +
       '    TabGroupsManager.allGroups.loadAllGroupsData();' +
diff --git a/modules/log.jsm b/modules/log.jsm
index b0e329c..ae68f48 100644
--- a/modules/log.jsm
+++ b/modules/log.jsm
@@ -177,6 +177,16 @@ this.console = {
     return false;
   },
 
+  stackTrace: function TMP_console_stackTrace() {
+    let stack = this._getStackExcludingInternal().join("\n");
+
+    return {
+      contain: function(...names) {
+        return names.some(name => stack.indexOf(name) > -1);
+      },
+    };
+  },
+
 /*
 options = {
   msg: msg

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/tabmixplus.git



More information about the Pkg-mozext-commits mailing list