[Pkg-mozext-commits] [SCM] Advertisement filter extension for the Iceweasel/Iceape branch, master, updated. debian/1.3.10-3-1-ga886e4d

Fabrizio Regalli fabreg at fabreg.it
Tue Dec 20 11:25:55 UTC 2011


The following commit has been merged in the master branch:
commit a886e4dc2429b3784e40b5bcb0b289fbd738579a
Author: Fabrizio Regalli <fabreg at fabreg.it>
Date:   Tue Dec 20 12:25:26 2011 +0100

    Imported Upstream version 2.0.1

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 845ca06..0000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.pc
diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
index c06d8c0..20a1ef1 100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@ -2,13 +2,13 @@ Manifest-Version: 1.0
 
 Name: chrome.manifest
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: O3qmW0EIitSjDCNQOfPeTQ==
-SHA1-Digest: G+hcO7+wZkom6p2I8CYIHnZgGaA=
+MD5-Digest: JFGxKUN5h+liyW6lFpVMNQ==
+SHA1-Digest: 4FUqB8B2/is3Rh1O54YSE2qGAbc=
 
 Name: chrome/adblockplus.jar
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: GFTBdv/NRwHXeeJAReNjBA==
-SHA1-Digest: pJ0QWOPgjQtBEC0zHoW4C2hn/nY=
+MD5-Digest: K2rGooYpen86EtCpuauJpA==
+SHA1-Digest: IPGLfhoAEk8uo1I5Q2+jDrQm8v0=
 
 Name: components/Initializer.js
 Digest-Algorithms: MD5 SHA1
@@ -17,13 +17,13 @@ SHA1-Digest: c863HtNQXl+yQMKglsoaODf4EAI=
 
 Name: defaults/patterns.ini
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: /NdLKO98x9Y1mw4vxxPmrA==
-SHA1-Digest: 3v8WC1VjhTrIsZXC0gGLh7e1l8E=
+MD5-Digest: 3tcnW6WgkZm2L0BEwzDzCg==
+SHA1-Digest: XQ7t6bomvIo/MBF6nqLRorrX/YI=
 
 Name: defaults/preferences/adblockplus.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: mQ93Q22nRIq5iBvsbUk8zw==
-SHA1-Digest: yGNl6bo/1mf/0BcBNtb4d+7XvpE=
+MD5-Digest: 3tymLeIwOz82eXzrqMxNyQ==
+SHA1-Digest: Rs9G+us9WwSmqtKSz9igi4hu4fo=
 
 Name: icon.png
 Digest-Algorithms: MD5 SHA1
@@ -37,68 +37,73 @@ SHA1-Digest: 0Njp3F/pdQ8Ne3KwBsgvLA4vaso=
 
 Name: install.rdf
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9U21SV4+oE+seGLCSQUEVQ==
-SHA1-Digest: /IyM9J719HdzZGhTXowo8kSoLIU=
+MD5-Digest: gr10eKhUIz0qNHSiVwcy2g==
+SHA1-Digest: L2Yghlwn+FxdHQd6z8p+rhrzV3Q=
 
 Name: modules/AppIntegration.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: RDc11X7/hVEEHDxAQIsHcQ==
-SHA1-Digest: rkyEHMmrNEw8k6jVOTE7CvUYp5M=
+MD5-Digest: shmn9enMrd8HlZpuzkLBdg==
+SHA1-Digest: Rln77qRilZiTgISCvPVQKMI/JYA=
 
 Name: modules/AppIntegrationFennec.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 76XG7CqYwCWSFjwOnZoQhQ==
-SHA1-Digest: RgpgdWwUWWZFJrWH1I81FgcML+k=
+MD5-Digest: vP6kJHEScRBU5BKmXtQJVw==
+SHA1-Digest: CJ4QYfjnxfuFgxzg4ryK5vq1Ew8=
 
 Name: modules/Bootstrap.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: OgioNUFGJi4RdbtkDHN2MA==
-SHA1-Digest: o9ZaI7zpgABLP1ElhouE/M0ifds=
+MD5-Digest: GHYlXrLBDxIq2iLQcQPE9w==
+SHA1-Digest: lW7Ona/LczwC/Z/MGoq6wyr3JTY=
 
 Name: modules/ContentPolicy.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: SRVKOLce1aDFRxDtBgzAuA==
-SHA1-Digest: R1ghPR4sKofS6plI231Xx6R11i4=
+MD5-Digest: UvdoCG4gTEMZ4Fo5OqqHvQ==
+SHA1-Digest: zcwEUPQmBrVzRkGxN40pnXCj87c=
 
 Name: modules/ContentPolicyRemote.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5kbTz5IY7zKoPcrjvGgziw==
-SHA1-Digest: Wh8GX1SuqwjkbNMOTdP7URKdd3k=
+MD5-Digest: 7r8ILnv6yALnAHil3zPgwg==
+SHA1-Digest: zA55D36mKcIZs/IlcdIPD22TZ3U=
 
 Name: modules/ElemHide.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: QYNsBNt67KOVEEI3SYgxOw==
-SHA1-Digest: gUxEfSaIk1/J2JTmhtHku5hxfv8=
+MD5-Digest: qhEb5U5SWQGz46XPX1iyrg==
+SHA1-Digest: K6WRbmN9YDyfP8aEfGwfwKF2e9Y=
 
 Name: modules/ElemHideRemote.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: jw8ynYVX5HUT4oyo2EY0uw==
-SHA1-Digest: Tdgp8YqXNGmIygdL1Uy9PkR4cWI=
+MD5-Digest: ahLYpkc1XDtFVshrwp+m/w==
+SHA1-Digest: hnwIQ0T5uDyf/VNReWWVJtf+vvg=
 
 Name: modules/FilterClasses.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: gvyyo5aPUiswshNsXjqGOg==
-SHA1-Digest: k8SUoDOBpUu5+Wqdyv0KE7Elh3U=
+MD5-Digest: KOzuByI/SnMDKfzu2r05Sg==
+SHA1-Digest: L63ggBXCGFp6LJwaJI3dtTSEdzE=
 
 Name: modules/FilterListener.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: NmSXLFE8zb9yME/bSRxDaA==
-SHA1-Digest: xjN0VcYOIsGpZ+YbkqsolqsiSkE=
+MD5-Digest: 17yJfT7wXwhfWxtQSBOg4Q==
+SHA1-Digest: V25z5HyZJUClx7DzrUcOjTB2+k0=
+
+Name: modules/FilterNotifier.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XT5R6dnHK8/OpK6toYugYQ==
+SHA1-Digest: JDaTXZMq+wHUjQ0Jp+i+H/Ilit0=
 
 Name: modules/FilterStorage.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4zX5TLXUWewNNyCvFzxDFw==
-SHA1-Digest: V8OyHVACt5uh3ny6uk9fzrSmZZo=
+MD5-Digest: f/I0yZ4f2qMlTCYok/IDsg==
+SHA1-Digest: S1JIZQUb3cMrKmT3ORsZce0TUPU=
 
 Name: modules/Matcher.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: TDcz42uHH+NNiFwWQY19NQ==
-SHA1-Digest: WhixRgdzWSMyBdifWYHvw8KDUJo=
+MD5-Digest: lSpVkWZuvgLe/z+iUUvhCg==
+SHA1-Digest: Js+QAvkVY3oHSOVSM6gQta7BUqw=
 
 Name: modules/ObjectTabs.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: aZ/G5HUuj0gW7IC88dXDVw==
-SHA1-Digest: YNJJZdyELuo3Z+OK3bkxSRxRt/s=
+MD5-Digest: QE0pbTHMk6RooAcVDmxZDQ==
+SHA1-Digest: X4Zj/QxZAVis4ubUcweyUo5YRb8=
 
 Name: modules/Prefs.jsm
 Digest-Algorithms: MD5 SHA1
@@ -107,35 +112,30 @@ SHA1-Digest: YEC8b+zZjqizrYfpTLH1oseLUNc=
 
 Name: modules/Public.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 1h10Es1zIrljo0dErcFjGQ==
-SHA1-Digest: DHUnA8tU1nmVtAJWTHDovbtcnzo=
+MD5-Digest: pksYvLW6n1LK9A302N+JPQ==
+SHA1-Digest: qAvAaKIyfI1W5HLN9dausxPv6E8=
 
 Name: modules/RequestNotifier.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: mLsXYOEMVG2dBwpqDMO/GQ==
-SHA1-Digest: vYvYHjA7p7xK+fnwPh0X9LxeF6A=
+MD5-Digest: UuT+WMNpzix4H2GoZg3Y2A==
+SHA1-Digest: S/1UfKbhm7NY3Xe0BVZC/qp3Auw=
 
 Name: modules/SubscriptionClasses.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: mAPCNJtsRzIY+tXlQrEdfg==
-SHA1-Digest: HnuC/+jvaN9RAvggmfiTLSkCDcw=
-
-Name: modules/Survey.jsm
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: G59EbZLvLEQ7bePEdXxgVQ==
-SHA1-Digest: bQ9reRn1LBs6sZD53jIncmIxFUo=
+MD5-Digest: C7QRn/nQ7x/+xnrwY9bY/Q==
+SHA1-Digest: We2LrTkNZl3f7XGbzHvuB6XQ5bY=
 
 Name: modules/Sync.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: WaMz7CE4vuXlKz0Um6KiDA==
-SHA1-Digest: MN38NkeNXza3hQxva8ag8dVCqxM=
+MD5-Digest: I3UVvBincQ152IWLuHmLlg==
+SHA1-Digest: wWX8j/1sHe0au6/Ux6bidHKTh8I=
 
 Name: modules/Synchronizer.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: SM33g1K4RA8ewpYfHUqiNw==
-SHA1-Digest: 1Qdhb4hnIMiRmhD0z4GsnS5fpGI=
+MD5-Digest: FsM8YjB9Mwr4R5/AdKgtoQ==
+SHA1-Digest: JKn/yUbR6FGXyxo4wGIAOcuekLo=
 
 Name: modules/Utils.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: gW1qZQQyX+kSm67pNVqn7A==
-SHA1-Digest: 33TfcP/KplJNyGLpOzehhVL6Wjc=
+MD5-Digest: 38msLerNF3F8ZcrROYOKag==
+SHA1-Digest: OEqQg207iSykDwfC1Wqmf8RDN10=
diff --git a/META-INF/zigbert.rsa b/META-INF/zigbert.rsa
index 3df22f1..e775325 100644
Binary files a/META-INF/zigbert.rsa and b/META-INF/zigbert.rsa differ
diff --git a/META-INF/zigbert.sf b/META-INF/zigbert.sf
index 5a4f392..6cbeabc 100644
--- a/META-INF/zigbert.sf
+++ b/META-INF/zigbert.sf
@@ -5,13 +5,13 @@ SHA1-Digest: d/6Z68ulBRyiureYHLr1x/FPYaw=
 
 Name: chrome.manifest
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: kfaQZ23OwNbv6GhyWel6uw==
-SHA1-Digest: doSJ37I+Dm/ndmEsL+xvhPLlcVc=
+MD5-Digest: BHHpzfZ8CARm0l2uec6jXw==
+SHA1-Digest: YQQl1PGr9Hf58VqxObIdgMd77Uc=
 
 Name: chrome/adblockplus.jar
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: B13NCSSoq6Lt+VTOpvJ0yA==
-SHA1-Digest: LVYWeeji3wVQ8UZgProbtIoUurc=
+MD5-Digest: QMD1lFTLlr8B8ELSAjZO7Q==
+SHA1-Digest: FBAzTKDXIf7+cd+epr7U0f5M3Zc=
 
 Name: components/Initializer.js
 Digest-Algorithms: MD5 SHA1
@@ -20,13 +20,13 @@ SHA1-Digest: p0sefJp5YnkWhXxyKz6HYBzwxaE=
 
 Name: defaults/patterns.ini
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: bHLVG0rZ4eUVUl42mETI7w==
-SHA1-Digest: zHbdOGE2NgdnJH8L4Po6LJMw/DQ=
+MD5-Digest: 02UcqDsusNBGZTw7ahexNQ==
+SHA1-Digest: TLZ4bT9Rp4imSvG5TbAJJ0G/TIo=
 
 Name: defaults/preferences/adblockplus.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: zBv33BC/rhAeWN04Mphy6A==
-SHA1-Digest: xUkcXZ4kn6ZTMeORQoiHfS3Mj+E=
+MD5-Digest: pV/Ej6zrNDCfvlVhNx5p7w==
+SHA1-Digest: fsp+KdFjqhWJ1f78qqTLSDh05FM=
 
 Name: icon.png
 Digest-Algorithms: MD5 SHA1
@@ -40,68 +40,73 @@ SHA1-Digest: 58A+zTLVHgiVDIwvL8+7Sah6vLI=
 
 Name: install.rdf
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: dLgVBuzmGh7TRbg6dH9x+Q==
-SHA1-Digest: oaKH7T39IBfVl2iUqHzjDpYhrvc=
+MD5-Digest: lLE6vch9sV35u7U54NQnsg==
+SHA1-Digest: cufjKObEoieR/RYpTZ2eo+FuleE=
 
 Name: modules/AppIntegration.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: At7AD2dMw0lOLSgDCiWOmg==
-SHA1-Digest: 1ms6s+kfLgHXh/idLEbZPKcX6JQ=
+MD5-Digest: JydKxiXSKrLNAoQGfC3oaw==
+SHA1-Digest: EhTq4+B/viu+66V2ShT8TbZTK9I=
 
 Name: modules/AppIntegrationFennec.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: /85uF+KMMDS77fK+e1HnZg==
-SHA1-Digest: A0TzRYSxhIbhx+mM79jgMlrU3Tk=
+MD5-Digest: tEwkWayhcMMM3Q1j6yNSCQ==
+SHA1-Digest: K/0FjJ04sv7Ory8zRQqUn/w2yYg=
 
 Name: modules/Bootstrap.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: vckH9m6DOCSQlGOoHNzxug==
-SHA1-Digest: 0LFmjjMpu2MT6siwz4JSt6zchJQ=
+MD5-Digest: B2S1kRgFL1us6BTBZv4IYA==
+SHA1-Digest: nyBvHJ8+6bPP90v8TQSL5jNsWuo=
 
 Name: modules/ContentPolicy.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 33ooQN+7f/c3PS+u1FuxgA==
-SHA1-Digest: 7sjr2BQ6FCNEOHCBpn5faTjr25c=
+MD5-Digest: /AtN5ETKgHzPyE8ZjrFH3g==
+SHA1-Digest: Wlw1PfnTmXF3Hy/4bhDsdSR6+rU=
 
 Name: modules/ContentPolicyRemote.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: yp4odxslcDwqEkalpKohwA==
-SHA1-Digest: kgedsTfeAr2qx7jLsYITihRMdr4=
+MD5-Digest: jQ64geNk4ocFjod9J6hp1g==
+SHA1-Digest: gPSKMpCYAvzAv2IIXyAdu/L6q+k=
 
 Name: modules/ElemHide.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5//11wSLprRcLTCqFyuDjw==
-SHA1-Digest: H1x+4CsO5B91e+ubJ9zJPxPIiAk=
+MD5-Digest: FXG0Zek8wiHmlOK9cquarg==
+SHA1-Digest: Tdg7e2wNCYdpoz3hDxhQUgvgT1E=
 
 Name: modules/ElemHideRemote.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 5hQQWf+/aVmtxREuUWgbIw==
-SHA1-Digest: EaD3Gjiq56Z0Y02AGJgFjYO/UkI=
+MD5-Digest: Urjz/PWS6s8PxRT5MhEsOw==
+SHA1-Digest: tci7k4MJPqOiM9VysqtiQngpscY=
 
 Name: modules/FilterClasses.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: F2wTOSHDnImjk1afTkz20Q==
-SHA1-Digest: IQjEBHi+IgLvezQKp/E5IZJ1K5o=
+MD5-Digest: APB7reKJuPw1gGsndNm5XA==
+SHA1-Digest: cxupNM4rcbgZ1HIkQgCePrZTyKM=
 
 Name: modules/FilterListener.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: JAU4yBUZXpCFKmC35EHeJg==
-SHA1-Digest: 16suCVbxPJoA5DTU5a/d/x164Ew=
+MD5-Digest: aP9V9qgVm9n/Mke7aB5ABQ==
+SHA1-Digest: Darw73UhShIJAO+hOjzMiONefAc=
+
+Name: modules/FilterNotifier.jsm
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: g5wuyUL0ClEK4nIOdOMCyg==
+SHA1-Digest: EinbhKXMXo89B0+arPnJmveXkCo=
 
 Name: modules/FilterStorage.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: ZZSKtayGBZo1Js2fuJa7cg==
-SHA1-Digest: 5QTkjTC4bAzs72E+9wqUTRqjjvA=
+MD5-Digest: JBpFhq8wh6mX3bQJRDnmvg==
+SHA1-Digest: HTanz7/eFEqwzJtpe1LyzfvZFEA=
 
 Name: modules/Matcher.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: twgujedIQlaH8EcpwmcX9w==
-SHA1-Digest: FOmLnwjDV4X12DyEV93CmwJAfsI=
+MD5-Digest: Ur4MVOtQ/ouuNroYOov85w==
+SHA1-Digest: 1/wPS4/iuwAQDepQThaejFPHGgo=
 
 Name: modules/ObjectTabs.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: DsJ7es4YxIrzvJAxztZUxQ==
-SHA1-Digest: FHt2jSKEa01gjDztqK0gA0A+7+0=
+MD5-Digest: yAQGa8WzvPijw6jMPuqa1A==
+SHA1-Digest: pBm27RZpaJI03CTDqvjykaFVZyQ=
 
 Name: modules/Prefs.jsm
 Digest-Algorithms: MD5 SHA1
@@ -110,35 +115,30 @@ SHA1-Digest: 0b/cHL5xID052/bhgTuOw+CSAsc=
 
 Name: modules/Public.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 4gSDA2M5XGxZj8zvSuCqbA==
-SHA1-Digest: WPyuVKrs7Ay8EpcxwdFzlcjRISw=
+MD5-Digest: zQlu5DFV5biCSspCVx4gdA==
+SHA1-Digest: g6lIArFCkkQeYA0i/h7rz+obkRw=
 
 Name: modules/RequestNotifier.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: FleKaHxJ5YYCfmU7kjYcyg==
-SHA1-Digest: g89JT/Fu1Prwy9pWplddk1CGFEE=
+MD5-Digest: ZdRsU0pyuUBVZU6SrDKFdQ==
+SHA1-Digest: YS1YfL328j7orNrWPbNTe37/uaE=
 
 Name: modules/SubscriptionClasses.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 9liHz198v1SuUbpTPqGS3A==
-SHA1-Digest: 5uR2AjscE7FPZ1l5zi4ju2DxKf0=
-
-Name: modules/Survey.jsm
-Digest-Algorithms: MD5 SHA1
-MD5-Digest: 8yywBJ8zX1bXY0DNSD663g==
-SHA1-Digest: 5erEtMll9pFh2069+k47w2jgQkE=
+MD5-Digest: GXW7TuVBBRxsf9nZHrD1xw==
+SHA1-Digest: T/E22qVpXEx8e9KxrA2aZu0RV5M=
 
 Name: modules/Sync.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: xm7gtp61b3liEs+Y0sI/4w==
-SHA1-Digest: 8XHGrNSOeMrLYqJypZA0djGnQvg=
+MD5-Digest: LnwsOlSFj/KfGvoGFlkb0A==
+SHA1-Digest: hTRO5CihBm7ppklWlx/35VLD0fY=
 
 Name: modules/Synchronizer.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: fErqzGG8+7kivYcAvJrd4A==
-SHA1-Digest: zQPd28Iw1Vl+NhwgZm1WvQxXHNM=
+MD5-Digest: BxFRz/CZtv44HzYq57NFMA==
+SHA1-Digest: aZgGlhtxSpP+n1Y/mHy68KIDDxQ=
 
 Name: modules/Utils.jsm
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: wbikb37TqLVpVLXNC2BNwQ==
-SHA1-Digest: 4R3idMpW1uu+TgStvCmfmyTSVjs=
+MD5-Digest: JPEPjSUS4eigMu06ovDa4A==
+SHA1-Digest: v3bly8oVwfbaCkxyamm8g6iAGt8=
diff --git a/chrome.manifest b/chrome.manifest
index cbaf1d4..463f500 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -3,13 +3,10 @@ overlay   chrome://browser/content/browser.xul chrome://adblockplus/content/ui/f
 overlay   chrome://messenger/content/msgHdrViewOverlay.xul chrome://adblockplus/content/ui/thunderbirdOverlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6}
 overlay   chrome://navigator/content/navigator.xul chrome://adblockplus/content/ui/seamonkeyOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
 overlay   chrome://messenger/content/mailWindowOverlay.xul chrome://adblockplus/content/ui/mailOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
-overlay   chrome://midbrowser/content/midbrowser.xul chrome://adblockplus/content/ui/firefoxOverlay.xul application={aa5ca914-c309-495d-91cf-3141bbb04115}
-overlay   chrome://emusic/content/startup.xul chrome://adblockplus/content/ui/firefoxOverlay.xul application=dlm at emusic.com
-overlay   chrome://webrunner/content/webrunner.xul chrome://adblockplus/content/ui/prismOverlay.xul application=prism at developer.mozilla.org
 content   adblockplus jar:chrome/adblockplus.jar!/content/
 skin      adblockplus classic/1.0 jar:chrome/adblockplus.jar!/skin/
 style     chrome://global/content/customizeToolbar.xul chrome://adblockplus/skin/overlay.css
-style     chrome://adblockplus/content/ui/subscriptionSelection.xul chrome://adblockplus/skin/subscriptionSelectionFennec.css application={a23983c0-fd0e-11dc-95ff-0800200c9a66}
+style     chrome://adblockplus/content/ui/firstRun.xul chrome://browser/skin/platform.css application={a23983c0-fd0e-11dc-95ff-0800200c9a66}
 locale    adblockplus en-US jar:chrome/adblockplus.jar!/locale/en-US/
 locale    adblockplus ar jar:chrome/adblockplus.jar!/locale/ar/
 locale    adblockplus bg jar:chrome/adblockplus.jar!/locale/bg/
@@ -37,8 +34,10 @@ locale    adblockplus hy-AM jar:chrome/adblockplus.jar!/locale/hy-AM/
 locale    adblockplus is jar:chrome/adblockplus.jar!/locale/is/
 locale    adblockplus it jar:chrome/adblockplus.jar!/locale/it/
 locale    adblockplus ja jar:chrome/adblockplus.jar!/locale/ja/
+locale    adblockplus ka-GE jar:chrome/adblockplus.jar!/locale/ka-GE/
 locale    adblockplus kk-KZ jar:chrome/adblockplus.jar!/locale/kk-KZ/
 locale    adblockplus ko jar:chrome/adblockplus.jar!/locale/ko/
+locale    adblockplus lt jar:chrome/adblockplus.jar!/locale/lt/
 locale    adblockplus lv jar:chrome/adblockplus.jar!/locale/lv/
 locale    adblockplus mn jar:chrome/adblockplus.jar!/locale/mn/
 locale    adblockplus ms-MY jar:chrome/adblockplus.jar!/locale/ms-MY/
diff --git a/chrome/adblockplus.jar!/content/ui/about.js b/chrome/adblockplus.jar!/content/ui/about.js
index c4e7d21..2842fff 100644
--- a/chrome/adblockplus.jar!/content/ui/about.js
+++ b/chrome/adblockplus.jar!/content/ui/about.js
@@ -143,7 +143,7 @@ function setExtensionData(name, version, homepage, authors, contributors, transl
 
 	let request = new XMLHttpRequest();
 	request.open("GET", "chrome://adblockplus/content/ui/subscriptions.xml");
-	request.onload = setSubscriptionAuthors;
+	request.addEventListener("load", setSubscriptionAuthors, false);
 	request.send(null);
 }
 
diff --git a/chrome/adblockplus.jar!/content/ui/composer.js b/chrome/adblockplus.jar!/content/ui/composer.js
index 13555ee..9eb5c7f 100644
--- a/chrome/adblockplus.jar!/content/ui/composer.js
+++ b/chrome/adblockplus.jar!/content/ui/composer.js
@@ -150,6 +150,8 @@ function init()
 	E("firstParty").hidden = thirdParty;
 
 	let typeGroup = E("typeGroup");
+	let defaultTypes = RegExpFilter.prototype.contentType & ~RegExpFilter.typeMap.DOCUMENT;
+	let isDefaultType = (RegExpFilter.typeMap[item.typeDescr] & defaultTypes) != 0;
 	for each (let type in types)
 	{
 		if (type == Policy.type.ELEMHIDE)
@@ -158,10 +160,15 @@ function init()
 		let typeNode = document.createElement("checkbox");
 		typeNode.setAttribute("value", Policy.typeDescr[type].toLowerCase().replace(/\_/g, "-"));
 		typeNode.setAttribute("label", Policy.localizedDescr[type].toLowerCase());
-		typeNode.setAttribute("checked", "true");
+
+		let typeMask = RegExpFilter.typeMap[Policy.typeDescr[type]];
+		typeNode._defaultType = (typeMask & defaultTypes) != 0;
+		if ((isDefaultType && typeNode._defaultType) || (!isDefaultType && item.type == type))
+			typeNode.setAttribute("checked", "true");
+
 		if (item.type == type)
 			typeNode.setAttribute("disabled", "true");
-		typeNode.addEventListener("command", updateFilter, false);
+		typeNode.addEventListener("command", function() checkboxUpdated(this), false);
 		typeGroup.appendChild(typeNode);
 	}
 
@@ -177,6 +184,12 @@ function init()
 	updatePatternSelection();
 }
 
+function checkboxUpdated(checkbox)
+{
+	checkbox._lastChange = Date.now();
+	updateFilter();
+}
+
 function updateFilter()
 {
 	let filter = "";
@@ -205,45 +218,59 @@ function updateFilter()
 		{
 			let domainRestriction = E("domainRestriction").value.replace(/[,\s]/g, "").replace(/\.+$/, "");
 			if (domainRestriction)
-				options.push("domain=" + domainRestriction);
+				options.push([E("domainRestrictionEnabled")._lastChange || 0, "domain=" + domainRestriction]);
 		}
 
 		if (E("firstParty").checked)
-			options.push("~third-party");
+			options.push([E("firstParty")._lastChange || 0, "~third-party"]);
 		if (E("thirdParty").checked)
-			options.push("third-party");
+			options.push([E("thirdParty")._lastChange || 0, "third-party"]);
 
 		if (E("matchCase").checked)
-			options.push("match-case");
+			options.push([E("matchCase")._lastChange || 0, "match-case"]);
 
 		let collapse = E("collapse");
 		disableElement(collapse, type == "whitelist", "value", "");
 		if (collapse.value != "")
-			options.push(collapse.value);
+			options.push([collapse._lastChange, collapse.value]);
 
 		let enabledTypes = [];
 		let disabledTypes = [];
+		let forceEnabledTypes = [];
 		for (let typeNode = E("typeGroup").firstChild; typeNode; typeNode = typeNode.nextSibling)
 		{
 			let value = typeNode.getAttribute("value");
 			if (value == "document")
 				disableElement(typeNode, type != "whitelist", "checked", false);
 
-			if (value != "document" || !typeNode.disabled)
+			if (!typeNode._defaultType)
 			{
-				if (typeNode.checked)
-					enabledTypes.push(value);
-				else
-					disabledTypes.push("~" + value);
+				if (typeNode.getAttribute("checked") == "true")
+					forceEnabledTypes.push([typeNode._lastChange || 0, value]);
 			}
+			else if (typeNode.getAttribute("checked") == "true")
+				enabledTypes.push([typeNode._lastChange || 0, value]);
+			else
+				disabledTypes.push([typeNode._lastChange || 0, "~" + value]);
 		}
-		if (disabledTypes.length < enabledTypes.length)
+		if (!forceEnabledTypes.length && disabledTypes.length < enabledTypes.length)
 			options.push.apply(options, disabledTypes);
 		else
 			options.push.apply(options, enabledTypes);
+		options.push.apply(options, forceEnabledTypes);
 
 		if (options.length)
-			filter += "$" + options.join(",");
+		{
+			options.sort(function(a, b) a[0] - b[0]);
+			filter += "$" + options.map(function(o) o[1]).join(",");
+		}
+	}
+	else
+	{
+		let defaultTypes = RegExpFilter.prototype.contentType & ~RegExpFilter.typeMap.DOCUMENT;
+		let isDefaultType = (RegExpFilter.typeMap[item.typeDescr] & defaultTypes) != 0;
+		if (!isDefaultType)
+			filter += "$" + item.typeDescr.toLowerCase().replace(/\_/g, "-");
 	}
 
 	filter = Filter.normalize(filter);
@@ -264,11 +291,7 @@ function updateFilter()
 
 	if (E("disabledWarning").hidden)
 	{
-		let subscription = null;
-		for each (let s in FilterStorage.subscriptions)
-			if (s instanceof SpecialSubscription && s.isFilterAllowed(compiledFilter) && (!subscription || s.priority > subscription.priority))
-				subscription = s;
-
+		let subscription = FilterStorage.getGroupForFilter(compiledFilter);
 		let warning = E("groupDisabledWarning");
 		if (subscription && subscription.disabled)
 		{
@@ -322,7 +345,7 @@ function updatePatternSelection()
 
 	function testFilter(/**String*/ filter) /**Boolean*/
 	{
-		return RegExpFilter.fromText(filter).matches(item.location, item.typeDescr, item.docDomain, item.thirdParty);
+		return RegExpFilter.fromText(filter + "$" + item.typeDescr).matches(item.location, item.typeDescr, item.docDomain, item.thirdParty);
 	}
 
 	let anchorStartCheckbox = E("anchorStart");
@@ -354,15 +377,9 @@ function updateCustomPattern()
 
 function addFilter() {
 	let filter = Filter.fromText(document.getElementById("filter").value);
-
-	if (filter.disabled)
-	{
-		filter.disabled = false;
-		FilterStorage.triggerObservers("filters enable", [filter]);
-	}
+	filter.disabled = false;
 
 	FilterStorage.addFilter(filter);
-	FilterStorage.saveToDisk();
 
 	if (nodes)
 		Policy.refilterNodes(nodes, item);
@@ -383,17 +400,18 @@ function setAdvancedMode(mode) {
 }
 
 function disableElement(element, disable, valueProperty, disabledValue) {
-	if (element.disabled == disable)
+	if ((element.getAttribute("disabled") == "true") == disable)
 		return;
 
-	element.disabled = disable;
 	if (disable)
 	{
+		element.setAttribute("disabled", "true");
 		element._abpStoredValue = element[valueProperty];
 		element[valueProperty] = disabledValue;
 	}
 	else
 	{
+		element.removeAttribute("disabled");
 		if ("_abpStoredValue" in element)
 			element[valueProperty] = element._abpStoredValue;
 		delete element._abpStoredValue;
@@ -401,7 +419,7 @@ function disableElement(element, disable, valueProperty, disabledValue) {
 }
 
 function openPreferences() {
-	Utils.openSettingsDialog(item.location, E("filter").value);
+	Utils.openFiltersDialog(Filter.fromText(E("filter").value));
 }
 
 function doEnable() {
@@ -412,8 +430,6 @@ function doEnable() {
 function enableSubscription(subscription)
 {
 	subscription.disabled = false;
-	FilterStorage.triggerObservers("subscriptions enable", [subscription]);
-	FilterStorage.saveToDisk();
 	E("groupDisabledWarning").hidden = true;
 }
 
diff --git a/chrome/adblockplus.jar!/content/ui/composer.xul b/chrome/adblockplus.jar!/content/ui/composer.xul
index 9822c5a..3b4ae85 100644
--- a/chrome/adblockplus.jar!/content/ui/composer.xul
+++ b/chrome/adblockplus.jar!/content/ui/composer.xul
@@ -97,11 +97,11 @@
 		</groupbox>
 		<groupbox id="options">
 			<caption label="&options.label;"/>
-			<checkbox id="firstParty" label="&firstParty.label;" accesskey="&firstParty.accesskey;" oncommand="updateFilter()"/>
-			<checkbox id="thirdParty" label="&thirdParty.label;" accesskey="&thirdParty.accesskey;" oncommand="updateFilter()"/>
-			<checkbox id="matchCase" label="&matchCase.label;" accesskey="&matchCase.accesskey;" oncommand="updateFilter()"/>
+			<checkbox id="firstParty" label="&firstParty.label;" accesskey="&firstParty.accesskey;" oncommand="checkboxUpdated(this);"/>
+			<checkbox id="thirdParty" label="&thirdParty.label;" accesskey="&thirdParty.accesskey;" oncommand="checkboxUpdated(this);"/>
+			<checkbox id="matchCase" label="&matchCase.label;" accesskey="&matchCase.accesskey;" oncommand="checkboxUpdated(this);"/>
 			<hbox align="baseline">
-				<checkbox id="domainRestrictionEnabled" label="&domainRestriction.label;" accesskey="&domainRestriction.accesskey;" oncommand="updateFilter()"/>
+				<checkbox id="domainRestrictionEnabled" label="&domainRestriction.label;" accesskey="&domainRestriction.accesskey;" oncommand="checkboxUpdated(this);"/>
 				<description class="help" value="?" tooltip="domainRestrictionHelp"/>
 			</hbox>
 			<textbox id="domainRestriction" oninput="updateFilter()"/>
diff --git a/chrome/adblockplus.jar!/content/ui/fennecSettings.xul b/chrome/adblockplus.jar!/content/ui/fennecSettings.xul
index 2089aab..46f2b1e 100644
--- a/chrome/adblockplus.jar!/content/ui/fennecSettings.xul
+++ b/chrome/adblockplus.jar!/content/ui/fennecSettings.xul
@@ -25,13 +25,19 @@
 	 -
 	 - ***** END LICENSE BLOCK ***** -->
 	 
-<!DOCTYPE vbox SYSTEM "chrome://adblockplus/locale/settings.dtd">
+<!DOCTYPE vbox [
+<!ENTITY % overlayDTD SYSTEM "chrome://adblockplus/locale/overlay.dtd">
+%overlayDTD;
+<!ENTITY % filtersDTD SYSTEM "chrome://adblockplus/locale/filters.dtd">
+%filtersDTD;
+]>
+
 <vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-	<setting pref="extensions.adblockplus.enabled" type="bool" title="&enable.label;"/>
-	<setting type="control" title="&fennec.subscription.label;">
+	<setting pref="extensions.adblockplus.enabled" type="bool" inverted="true" title="&disable.label;"/>
+	<setting type="control" title="&subscriptions.tab.label;">
 		<menulist id="adblockplus-subscription-list"/>
 	</setting>
-	<setting pref="extensions.adblockplus.fastcollapse" type="bool" title="&collapse.label;"
+	<setting pref="extensions.adblockplus.fastcollapse" type="bool" title="&hideplaceholders.label;"
 					 inverted="true"/>
 	<setting id="adblockplus-sync" type="bool" title="&sync.label;"/>
 </vbox>
diff --git a/chrome/adblockplus.jar!/content/ui/filters-backup.js b/chrome/adblockplus.jar!/content/ui/filters-backup.js
new file mode 100644
index 0000000..4c4d33c
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters-backup.js
@@ -0,0 +1,336 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Implementation of backup and restore functionality.
+ * @class
+ */
+var Backup =
+{
+	/**
+	 * Template for menu items to be displayed in the Restore menu (for automated
+	 * backups).
+	 * @type Element
+	 */
+	restoreTemplate: null,
+
+	/**
+	 * Element after which restore items should be inserted.
+	 * @type Element
+	 */
+	restoreInsertionPoint: null,
+
+	/**
+	 * Regular expression to recognize checksum comments.
+	 */
+	CHECKSUM_REGEXP: /^!\s*checksum[\s\-:]+([\w\+\/]+)/i,
+
+	/**
+	 * Regular expression to recognize group title comments.
+	 */
+	GROUPTITLE_REGEXP: /^!\s*\[(.*)\]((?:\/\w+)*)\s*$/,
+
+
+	/**
+	 * Initializes backup UI.
+	 */
+	init: function()
+	{
+		this.restoreTemplate = E("restoreBackupTemplate");
+		this.restoreInsertionPoint = this.restoreTemplate.previousSibling;
+		this.restoreTemplate.parentNode.removeChild(this.restoreTemplate);
+		this.restoreTemplate.removeAttribute("id");
+		this.restoreTemplate.removeAttribute("hidden");
+	},
+
+	/**
+	 * Gets the default download dir, as used by the browser itself.
+	 */
+	getDefaultDir: function() /**nsIFile*/
+	{
+		try
+		{
+			return Utils.prefService.getComplexValue("browser.download.lastDir", Ci.nsILocalFile);
+		}
+		catch (e)
+		{
+			// No default download location. Default to desktop.
+			return Utils.dirService.get("Desk", Ci.nsILocalFile);
+		}
+	},
+
+	/**
+	 * Saves new default download dir after the user chose a different directory to
+	 * save his files to.
+	 */
+	saveDefaultDir: function(/**nsIFile*/ dir)
+	{
+		try
+		{
+			Utils.prefService.setComplexValue("browser.download.lastDir", Ci.nsILocalFile, dir);
+		} catch(e) {};
+	},
+
+	/**
+	 * Called when the Restore menu is being opened, fills in "Automated backup"
+	 * entries.
+	 */
+	fillRestorePopup: function()
+	{
+		while (this.restoreInsertionPoint.nextSibling && !this.restoreInsertionPoint.nextSibling.id)
+			this.restoreInsertionPoint.parentNode.removeChild(this.restoreInsertionPoint.nextSibling);
+
+		let files = FilterStorage.getBackupFiles().reverse();
+		for (let i = 0; i < files.length; i++)
+		{
+			let file = files[i];
+			let item = this.restoreTemplate.cloneNode(true);
+			let label = item.getAttribute("label");
+			label = label.replace(/\?1\?/, Utils.formatTime(file.lastModifiedTime));
+			item.setAttribute("label", label);
+			item.addEventListener("command", function()
+			{
+				Backup.restoreAllData(file);
+			}, false);
+			this.restoreInsertionPoint.parentNode.insertBefore(item, this.restoreInsertionPoint.nextSibling);
+		}
+	},
+
+	/**
+	 * Lets the user choose a file to restore filters from.
+	 */
+	restoreFromFile: function()
+	{
+		let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
+		picker.init(window, E("backupButton").getAttribute("_restoreDialogTitle"), picker.modeOpen);
+		picker.defaultExtension = ".ini";
+		picker.appendFilter(E("backupButton").getAttribute("_fileFilterComplete"), "*.ini");
+		picker.appendFilter(E("backupButton").getAttribute("_fileFilterCustom"), "*.txt");
+
+		if (picker.show() != picker.returnCancel)
+		{
+			this.saveDefaultDir(picker.file.parent);
+			if (picker.filterIndex == 0)
+				this.restoreAllData(picker.file);
+			else
+				this.restoreCustomFilters(picker.file);
+		}
+	},
+
+	/**
+	 * Restores patterns.ini from a file.
+	 */
+	restoreAllData: function(/**nsIFile*/ file)
+	{
+		let fileStream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
+		fileStream.init(file, 0x01, 0444, 0);
+
+		let stream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
+		stream.init(fileStream, "UTF-8", 16384, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
+		stream = stream.QueryInterface(Ci.nsIUnicharLineInputStream);
+
+		let lines = [];
+		let line = {value: null};
+		if (stream.readLine(line))
+			lines.push(line.value);
+		if (stream.readLine(line))
+			lines.push(line.value);
+		stream.close();
+
+		if (lines.length < 2 || lines[0] != "# Adblock Plus preferences" || !/version=(\d+)/.test(lines[1]))
+		{
+			Utils.alert(window, E("backupButton").getAttribute("_restoreError"), E("backupButton").getAttribute("_restoreDialogTitle"));
+			return;
+		}
+
+		let warning = E("backupButton").getAttribute("_restoreCompleteWarning");
+		let minVersion = parseInt(RegExp.$1, 10);
+		if (minVersion > FilterStorage.formatVersion)
+			warning += "\n\n" + E("backupButton").getAttribute("_restoreVersionWarning");
+
+		if (!Utils.confirm(window, warning, E("backupButton").getAttribute("_restoreDialogTitle")))
+			return;
+
+		FilterStorage.loadFromDisk(file);
+	},
+
+	/**
+	 * Restores custom filters from a file.
+	 */
+	restoreCustomFilters: function(/**nsIFile*/ file)
+	{
+		let fileStream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
+		fileStream.init(file, 0x01, 0444, 0);
+
+		let stream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
+		stream.init(fileStream, "UTF-8", 16384, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
+		stream = stream.QueryInterface(Ci.nsIUnicharLineInputStream);
+
+		let lines = [];
+		let line = {value: null};
+		while (stream.readLine(line))
+			lines.push(line.value);
+		if (line.value)
+			lines.push(line.value);
+		stream.close();
+
+		if (!lines.length || !/\[Adblock(?:\s*Plus\s*([\d\.]+)?)?\]/i.test(lines[0]))
+		{
+			Utils.alert(window, E("backupButton").getAttribute("_restoreError"), E("backupButton").getAttribute("_restoreDialogTitle"));
+			return;
+		}
+
+		let warning = E("backupButton").getAttribute("_restoreCustomWarning");
+		let minVersion = RegExp.$1;
+		if (minVersion && Utils.versionComparator.compare(minVersion, Utils.addonVersion) > 0)
+			warning += "\n\n" + E("backupButton").getAttribute("_restoreVersionWarning");
+
+		if (!Utils.confirm(window, warning, E("backupButton").getAttribute("_restoreDialogTitle")))
+			return;
+
+		let subscriptions = FilterStorage.subscriptions.filter(function(s) s instanceof SpecialSubscription);
+		for (let i = 0; i < subscriptions.length; i++)
+			FilterStorage.removeSubscription(subscriptions[i]);
+
+		let subscription = null;
+		for (let i = 1; i < lines.length; i++)
+		{
+			if (this.CHECKSUM_REGEXP.test(lines[i]))
+				continue;
+			else if (this.GROUPTITLE_REGEXP.test(lines[i]))
+			{
+				if (subscription)
+					FilterStorage.addSubscription(subscription);
+				subscription = SpecialSubscription.create(RegExp.$1);
+
+				let options = RegExp.$2;
+				let defaults = [];
+				if (options)
+					options = options.split("/");
+				for (let j = 0; j < options.length; j++)
+					if (options[j] in SpecialSubscription.defaultsMap)
+						defaults.push(options[j]);
+				if (defaults.length)
+					subscription.defaults = defaults;
+			}
+			else
+			{
+				let filter = Filter.fromText(Filter.normalize(lines[i]));
+				if (!filter)
+					continue;
+				if (!subscription)
+					subscription = SpecialSubscription.create(Utils.getString("blockingGroup_title"));
+				subscription.filters.push(filter);
+			}
+		}
+		if (subscription)
+			FilterStorage.addSubscription(subscription);
+		E("tabs").selectedIndex = 1;
+	},
+
+	/**
+	 * Lets the user choose a file to backup filters to.
+	 */
+	backupToFile: function()
+	{
+		let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
+		picker.init(window, E("backupButton").getAttribute("_backupDialogTitle"), picker.modeSave);
+		picker.defaultExtension = ".ini";
+		picker.appendFilter(E("backupButton").getAttribute("_fileFilterComplete"), "*.ini");
+		picker.appendFilter(E("backupButton").getAttribute("_fileFilterCustom"), "*.txt");
+
+		if (picker.show() != picker.returnCancel)
+		{
+			this.saveDefaultDir(picker.file.parent);
+			if (picker.filterIndex == 0)
+				this.backupAllData(picker.file);
+			else
+				this.backupCustomFilters(picker.file);
+		}
+	},
+
+	/**
+	 * Writes all patterns.ini data to a file.
+	 */
+	backupAllData: function(/**nsIFile*/ file)
+	{
+		FilterStorage.saveToDisk(file);
+	},
+
+	/**
+	 * Writes user's custom filters to a file.
+	 */
+	backupCustomFilters: function(/**nsIFile*/ file)
+	{
+		let subscriptions = FilterStorage.subscriptions.filter(function(s) s instanceof SpecialSubscription);
+		let list = ["[Adblock Plus 2.0]"];
+		for (let i = 0; i < subscriptions.length; i++)
+		{
+			let subscription = subscriptions[i];
+			let typeAddition = "";
+			if (subscription.defaults)
+				typeAddition = "/" + subscription.defaults.join("/");
+			list.push("! [" + subscription.title + "]" + typeAddition);
+			for (let j = 0; j < subscription.filters.length; j++)
+			{
+				let filter = subscription.filters[j];
+				// Skip checksums
+				if (filter instanceof CommentFilter && this.CHECKSUM_REGEXP.test(filter.text))
+					continue;
+				// Skip group headers
+				if (filter instanceof CommentFilter && this.GROUPTITLE_REGEXP.test(filter.text))
+					continue;
+				list.push(filter.text);
+			}
+		}
+
+		// Insert checksum
+		let checksum = Utils.generateChecksum(list);
+		if (checksum)
+			list.splice(1, 0, "! Checksum: " + checksum);
+
+		try
+		{
+			let fileStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
+			fileStream.init(file, 0x02 | 0x08 | 0x20, 0644, 0);
+
+			let stream = Cc["@mozilla.org/intl/converter-output-stream;1"].createInstance(Ci.nsIConverterOutputStream);
+			stream.init(fileStream, "UTF-8", 16384, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
+
+			stream.writeString(list.join(Utils.getLineBreak()));
+
+			stream.close();
+		}
+		catch (e)
+		{
+			Cu.reportError(e);
+			Utils.alert(window, E("backupButton").getAttribute("_backupError"), E("backupButton").getAttribute("_backupDialogTitle"));
+		}
+	}
+};
+
+window.addEventListener("load", function()
+{
+	Backup.init();
+}, false);
diff --git a/chrome/adblockplus.jar!/content/ui/filters-filteractions.js b/chrome/adblockplus.jar!/content/ui/filters-filteractions.js
new file mode 100644
index 0000000..c2b630c
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters-filteractions.js
@@ -0,0 +1,557 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Implementation of the various actions performed on the filters.
+ * @class
+ */
+var FilterActions =
+{
+	/**
+	 * Initializes filter actions.
+	 */
+	init: function()
+	{
+		let me = this;
+		this.treeElement.parentNode.addEventListener("keypress", function(event)
+		{
+			me.keyPress(event);
+		}, true);
+		this.treeElement.view = FilterView;
+
+		this.treeElement.inputField.addEventListener("keypress", function(event)
+		{
+			// Prevent the tree from capturing cursor keys pressed in the input field
+			if (event.keyCode >= event.DOM_VK_PAGE_UP && event.keyCode <= event.DOM_VK_DOWN)
+				event.stopPropagation();
+		}, false);
+
+		// Create a copy of the view menu
+		function fixId(node, newId)
+		{
+			if (node.nodeType == node.ELEMENT_NODE)
+			{
+				if (node.hasAttribute("id"))
+					node.setAttribute("id", node.getAttribute("id").replace(/\d+$/, newId));
+
+				for (let i = 0, len = node.childNodes.length; i < len; i++)
+					fixId(node.childNodes[i], newId);
+			}
+			return node;
+		}
+		E("viewMenu").appendChild(fixId(E("filters-view-menu1").cloneNode(true), "2"));
+	},
+
+	/**
+	 * <tree> element containing the filters.
+	 * @type XULElement
+	 */
+	get treeElement() E("filtersTree"),
+
+	/**
+	 * Tests whether the tree is currently visible.
+	 */
+	get visible()
+	{
+		return !this.treeElement.parentNode.collapsed;
+	},
+
+	/**
+	 * Tests whether the tree is currently focused.
+	 * @type Boolean
+	 */
+	get focused()
+	{
+		let focused = document.commandDispatcher.focusedElement;
+		while (focused)
+		{
+			if ("treeBoxObject" in focused && focused.treeBoxObject == FilterView.boxObject)
+				return true;
+			focused = focused.parentNode;
+		}
+		return false;
+	},
+
+	/**
+	 * Updates visible filter commands whenever the selected subscription changes.
+	 */
+	updateCommands: function()
+	{
+		E("filters-add-command").setAttribute("disabled", !FilterView.editable);
+	},
+
+	/**
+	 * Called whenever filter actions menu is opened, initializes menu items.
+	 */
+	fillActionsPopup: function()
+	{
+		let editable = FilterView.editable;
+		let items = FilterView.selectedItems.filter(function(i) !i.filter.dummy);
+		items.sort(function(entry1, entry2) entry1.index - entry2.index);
+		let activeItems = items.filter(function(i) i.filter instanceof ActiveFilter);
+
+		E("filters-edit-command").setAttribute("disabled", !editable || !items.length);
+		E("filters-delete-command").setAttribute("disabled", !editable || !items.length);
+		E("filters-resetHitCounts-command").setAttribute("disabled", !activeItems.length);
+		E("filters-moveUp-command").setAttribute("disabled", !editable || FilterView.isSorted() || !items.length || items[0].index == 0);
+		E("filters-moveDown-command").setAttribute("disabled", !editable || FilterView.isSorted() || !items.length || items[items.length - 1].index == FilterView.rowCount - 1);
+		E("filters-copy-command").setAttribute("disabled", !items.length);
+		E("filters-cut-command").setAttribute("disabled", !editable || !items.length);
+		E("filters-paste-command").setAttribute("disabled", !editable || !Utils.clipboard.hasDataMatchingFlavors(["text/unicode"], 1, Utils.clipboard.kGlobalClipboard));
+	},
+
+	/**
+	 * Changes sort current order for the tree. Sorts by filter column if the list is unsorted.
+	 * @param {String} order  either "ascending" or "descending"
+	 */
+	setSortOrder: function(sortOrder)
+	{
+		let col = (FilterView.sortColumn ? FilterView.sortColumn.id : "col-filter");
+		FilterView.sortBy(col, sortOrder);
+	},
+
+	/**
+	 * Toggles the visibility of a tree column.
+	 */
+	toggleColumn: function(/**String*/ id)
+	{
+		let col = E(id);
+		col.setAttribute("hidden", col.hidden ? "false" : "true");
+	},
+
+	/**
+	 * Enables or disables all filters in the current selection.
+	 */
+	selectionToggleDisabled: function()
+	{
+		if (this.treeElement.editingColumn)
+			return;
+
+		let items = FilterView.selectedItems.filter(function(i) i.filter instanceof ActiveFilter);
+		if (items.length)
+		{
+			FilterView.boxObject.beginUpdateBatch();
+			let newValue = !items[0].filter.disabled;
+			for (let i = 0; i < items.length; i++)
+				items[i].filter.disabled = newValue;
+			FilterView.boxObject.endUpdateBatch();
+		}
+	},
+
+	/**
+	 * Selects all entries in the list.
+	 */
+	selectAll: function()
+	{
+		if (this.treeElement.editingColumn)
+			return;
+
+		FilterView.selection.selectAll();
+		this.treeElement.focus();
+	},
+
+	/**
+	 * Starts editing the current filter.
+	 */
+	startEditing: function()
+	{
+		if (this.treeElement.editingColumn)
+			return;
+
+		this.treeElement.startEditing(FilterView.selection.currentIndex, FilterView.boxObject.columns.getNamedColumn("col-filter"));
+	},
+
+	/**
+	 * Starts editing a new filter at the current position.
+	 */
+	insertFilter: function()
+	{
+		if (!FilterView.editable || this.treeElement.editingColumn)
+			return;
+
+		FilterView.insertEditDummy();
+		this.startEditing();
+
+		let tree = this.treeElement;
+		let listener = function(event)
+		{
+			if (event.attrName == "editing" && tree.editingRow < 0)
+			{
+				tree.removeEventListener("DOMAttrModified", listener, false);
+				FilterView.removeEditDummy();
+			}
+		}
+		tree.addEventListener("DOMAttrModified", listener, false);
+	},
+
+	/**
+	 * Deletes items from the list.
+	 */
+	deleteItems: function(/**Array*/ items)
+	{
+		let oldIndex = FilterView.selection.currentIndex;
+		items.sort(function(entry1, entry2) entry2.index - entry1.index);
+
+		for (let i = 0; i < items.length; i++)
+			FilterStorage.removeFilter(items[i].filter, FilterView._subscription, items[i].index);
+
+		FilterView.selectRow(oldIndex);
+	},
+
+	/**
+	 * Deletes selected filters.
+	 */
+	deleteSelected: function()
+	{
+		if (!FilterView.editable || this.treeElement.editingColumn)
+			return;
+
+		let items = FilterView.selectedItems;
+		if (items.length == 0 || (items.length >= 2 && !Utils.confirm(window, this.treeElement.getAttribute("_removewarning"))))
+			return;
+
+		this.deleteItems(items)
+	},
+
+	/**
+	 * Resets hit counts of the selected filters.
+	 */
+	resetHitCounts: function()
+	{
+		if (this.treeElement.editingColumn)
+			return;
+
+		let items = FilterView.selectedItems.filter(function(i) i.filter instanceof ActiveFilter);
+		if (items.length)
+			FilterStorage.resetHitCounts(items.map(function(i) i.filter));
+	},
+
+	/**
+	 * Moves items to a different position in the list.
+	 * @param {Array} items
+	 * @param {Integer} offset  negative offsets move the items up, positive down
+	 */
+	_moveItems: function(/**Array*/ items, /**Integer*/ offset)
+	{
+		if (!items.length)
+			return;
+
+		if (offset < 0)
+		{
+			items.sort(function(entry1, entry2) entry1.index - entry2.index);
+			let position = items[0].index + offset;
+			if (position < 0)
+				return;
+
+			for (let i = 0; i < items.length; i++)
+				FilterStorage.moveFilter(items[i].filter, FilterView._subscription, items[i].index, position++);
+			FilterView.selection.rangedSelect(position - items.length, position - 1, false);
+		}
+		else if (offset > 0)
+		{
+			items.sort(function(entry1, entry2) entry2.index - entry1.index);
+			let position = items[0].index + offset;
+			if (position >= FilterView.rowCount)
+				return;
+
+			for (let i = 0; i < items.length; i++)
+				FilterStorage.moveFilter(items[i].filter, FilterView._subscription, items[i].index, position--);
+			FilterView.selection.rangedSelect(position + 1, position + items.length, false);
+		}
+	},
+
+	/**
+	 * Moves selected filters one line up.
+	 */
+	moveUp: function()
+	{
+		if (!FilterView.editable || FilterView.isEmpty || FilterView.isSorted() || this.treeElement.editingColumn)
+			return;
+
+		this._moveItems(FilterView.selectedItems, -1);
+	},
+
+	/**
+	 * Moves selected filters one line down.
+	 */
+	moveDown: function()
+	{
+		if (!FilterView.editable || FilterView.isEmpty || FilterView.isSorted() || this.treeElement.editingColumn)
+			return;
+
+		this._moveItems(FilterView.selectedItems, 1);
+	},
+
+	/**
+	 * Fills the context menu of the filters columns.
+	 */
+	fillColumnPopup: function(/**Element*/ element)
+	{
+		let suffix = element.id.match(/\d+$/)[0] || "1";
+
+		E("filters-view-filter" + suffix).setAttribute("checked", !E("col-filter").hidden);
+		E("filters-view-slow" + suffix).setAttribute("checked", !E("col-slow").hidden);
+		E("filters-view-enabled" + suffix).setAttribute("checked", !E("col-enabled").hidden);
+		E("filters-view-hitcount" + suffix).setAttribute("checked", !E("col-hitcount").hidden);
+		E("filters-view-lasthit" + suffix).setAttribute("checked", !E("col-lasthit").hidden);
+
+		let sortColumn = FilterView.sortColumn;
+		let sortColumnID = (sortColumn ? sortColumn.id : null);
+		let sortDir = (sortColumn ? sortColumn.getAttribute("sortDirection") : "natural");
+		E("filters-sort-none" + suffix).setAttribute("checked", sortColumn == null);
+		E("filters-sort-filter" + suffix).setAttribute("checked", sortColumnID == "col-filter");
+		E("filters-sort-enabled" + suffix).setAttribute("checked", sortColumnID == "col-enabled");
+		E("filters-sort-hitcount" + suffix).setAttribute("checked", sortColumnID == "col-hitcount");
+		E("filters-sort-lasthit" + suffix).setAttribute("checked", sortColumnID == "col-lasthit");
+		E("filters-sort-asc" + suffix).setAttribute("checked", sortDir == "ascending");
+		E("filters-sort-desc" + suffix).setAttribute("checked", sortDir == "descending");
+	},
+
+	/**
+	 * Fills tooltip with the item data.
+	 */
+	fillTooltip: function(event)
+	{
+		let item = FilterView.getItemAt(event.clientX, event.clientY);
+		if (!item || item.filter.dummy)
+		{
+			event.preventDefault();
+			return;
+		}
+
+		function setMultilineContent(box, text)
+		{
+			while (box.firstChild)
+				box.removeChild(box.firstChild);
+
+			for (var i = 0; i < text.length; i += 80)
+			{
+				var description = document.createElement("description");
+				description.setAttribute("value", text.substr(i, 80));
+				box.appendChild(description);
+			}
+		}
+
+		setMultilineContent(E("tooltip-filter"), item.filter.text);
+
+		E("tooltip-hitcount-row").hidden = !(item.filter instanceof ActiveFilter);
+		E("tooltip-lasthit-row").hidden = !(item.filter instanceof ActiveFilter) || !item.filter.lastHit;
+		if (item.filter instanceof ActiveFilter)
+		{
+			E("tooltip-hitcount").setAttribute("value", item.filter.hitCount)
+			E("tooltip-lasthit").setAttribute("value", Utils.formatTime(item.filter.lastHit))
+		}
+
+		E("tooltip-additional").hidden = false;
+		if (item.filter instanceof InvalidFilter && item.filter.reason)
+			E("tooltip-additional").textContent = item.filter.reason;
+		else if (item.filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(item.filter))
+			E("tooltip-additional").textContent = Utils.getString("filter_regexp_tooltip");
+		else
+			E("tooltip-additional").hidden = true;
+	},
+
+	/**
+	 * Called whenever a key is pressed on the list.
+	 */
+	keyPress: function(/**Event*/ event)
+	{
+		if (event.target != E("filtersTree"))
+			return;
+
+		let modifiers = 0;
+		if (event.altKey)
+			modifiers |= SubscriptionActions._altMask;
+		if (event.ctrlKey)
+			modifiers |= SubscriptionActions._ctrlMask;
+		if (event.metaKey)
+			modifiers |= SubscriptionActions._metaMask;
+
+		if (event.charCode == " ".charCodeAt(0) && modifiers == 0 && !E("col-enabled").hidden)
+			this.selectionToggleDisabled();
+		else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_UP && modifiers == SubscriptionActions._accelMask)
+		{
+			E("filters-moveUp-command").doCommand();
+			event.preventDefault();
+			event.stopPropagation();
+		}
+		else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_DOWN && modifiers == SubscriptionActions._accelMask)
+		{
+			E("filters-moveDown-command").doCommand();
+			event.preventDefault();
+			event.stopPropagation();
+		}
+	},
+
+	/**
+	 * Copies selected items to clipboard and optionally removes them from the
+	 * list after that.
+	 */
+	copySelected: function(/**Boolean*/ keep)
+	{
+		let items = FilterView.selectedItems;
+		if (!items.length)
+			return;
+
+		items.sort(function(entry1, entry2) entry1.index - entry2.index);
+		let text = items.map(function(i) i.filter.text).join(Utils.getLineBreak());
+		Utils.clipboardHelper.copyString(text);
+
+		if (!keep && FilterView.editable && !this.treeElement.editingColumn)
+			this.deleteItems(items);
+	},
+
+	/**
+	 * Pastes text from clipboard as filters at the current position.
+	 */
+	paste: function()
+	{
+		if (!FilterView.editable || this.treeElement.editingColumn)
+			return;
+
+		let transferable = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable);
+		transferable.addDataFlavor("text/unicode");
+
+		let data;
+		try
+		{
+			data = {};
+			Utils.clipboard.getData(transferable, Utils.clipboard.kGlobalClipboard);
+			transferable.getTransferData("text/unicode", data, {});
+			data = data.value.QueryInterface(Ci.nsISupportsString).data;
+		}
+		catch (e) {
+			return;
+		}
+
+		let item = FilterView.currentItem;
+		let position = (item ? item.index : FilterView.data.length);
+
+		let lines = data.replace(/\r/g, "").split("\n");
+		for (let i = 0; i < lines.length; i++)
+		{
+			let filter = Filter.fromText(lines[i]);
+			if (filter)
+				FilterStorage.addFilter(filter, FilterView._subscription, position++);
+		}
+	},
+
+	dragItems: null,
+
+	/**
+	 * Called whenever the user starts a drag operation.
+	 */
+	startDrag: function(/**Event*/ event)
+	{
+		let items = FilterView.selectedItems;
+		if (!items.length)
+			return;
+
+		items.sort(function(entry1, entry2) entry1.index - entry2.index);
+		event.dataTransfer.setData("text/plain", items.map(function(i) i.filter.text).join(Utils.getLineBreak()));
+		this.dragItems = items;
+		event.stopPropagation();
+	},
+
+	/**
+	 * Called to check whether moving the items to the given position is possible.
+	 */
+	canDrop: function(/**Integer*/ newPosition, /**nsIDOMDataTransfer*/ dataTransfer)
+	{
+		if (!FilterView.editable || this.treeElement.editingColumn)
+			return false;
+
+		// If we aren't dragging items then maybe we got filters as plain text
+		if (!this.dragItems)
+			return dataTransfer && dataTransfer.getData("text/plain");
+
+		if (FilterView.isEmpty || FilterView.isSorted())
+			return false;
+
+		if (newPosition < this.dragItems[0].index)
+			return true;
+		else if (newPosition > this.dragItems[this.dragItems.length - 1].index + 1)
+			return true;
+		else
+			return false;
+	},
+
+	/**
+	 * Called when the user decides to drop the items.
+	 */
+	drop: function(/**Integer*/ newPosition, /**nsIDOMDataTransfer*/ dataTransfer)
+	{
+		if (!FilterView.editable || this.treeElement.editingColumn)
+			return;
+
+		if (!this.dragItems)
+		{
+			// We got filters as plain text, insert them into the list
+			let data = (dataTransfer ? dataTransfer.getData("text/plain") : null);
+			if (data)
+			{
+				let lines = data.replace(/\r/g, "").split("\n");
+				for (let i = 0; i < lines.length; i++)
+				{
+					let filter = Filter.fromText(lines[i]);
+					if (filter)
+						FilterStorage.addFilter(filter, FilterView._subscription, newPosition++);
+				}
+			}
+			return;
+		}
+
+		if (FilterView.isEmpty || FilterView.isSorted())
+			return false;
+
+		if (newPosition < this.dragItems[0].index)
+			this._moveItems(this.dragItems, newPosition - this.dragItems[0].index);
+		else if (newPosition > this.dragItems[this.dragItems.length - 1].index + 1)
+			this._moveItems(this.dragItems, newPosition - this.dragItems[this.dragItems.length - 1].index - 1);
+	},
+
+	/**
+	 * Called whenever the a drag operation finishes.
+	 */
+	endDrag: function(/**Event*/ event)
+	{
+		this.dragItems = null;
+	},
+
+	/**
+	 * Called if filters have been dragged into a subscription and need to be removed.
+	 */
+	removeDraggedFilters: function()
+	{
+		if (!this.dragItems)
+			return;
+
+		this.deleteItems(this.dragItems);
+	}
+};
+
+window.addEventListener("load", function()
+{
+	FilterActions.init();
+}, false);
diff --git a/chrome/adblockplus.jar!/content/ui/filters-filterview.js b/chrome/adblockplus.jar!/content/ui/filters-filterview.js
new file mode 100644
index 0000000..3106f5d
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters-filterview.js
@@ -0,0 +1,814 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+/**
+ * nsITreeView implementation to display filters of a particular filter
+ * subscription.
+ * @class
+ */
+var FilterView =
+{
+	/**
+	 * Initialization function.
+	 */
+	init: function()
+	{
+		if (this.sortProcs)
+			return;
+
+		function compareText(/**Filter*/ filter1, /**Filter*/ filter2)
+		{
+			if (filter1.text < filter2.text)
+				return -1;
+			else if (filter1.text > filter2.text)
+				return 1;
+			else
+				return 0;
+		}
+		function compareSlow(/**Filter*/ filter1, /**Filter*/ filter2)
+		{
+			let isSlow1 = filter1 instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter1);
+			let isSlow2 = filter2 instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter2);
+			return isSlow1 - isSlow2;
+		}
+		function compareEnabled(/**Filter*/ filter1, /**Filter*/ filter2)
+		{
+			let hasEnabled1 = (filter1 instanceof ActiveFilter ? 1 : 0);
+			let hasEnabled2 = (filter2 instanceof ActiveFilter ? 1 : 0);
+			if (hasEnabled1 != hasEnabled2)
+				return hasEnabled1 - hasEnabled2;
+			else if (hasEnabled1)
+				return (filter2.disabled - filter1.disabled);
+			else
+				return 0;
+		}
+		function compareHitCount(/**Filter*/ filter1, /**Filter*/ filter2)
+		{
+			let hasHitCount1 = (filter1 instanceof ActiveFilter ? 1 : 0);
+			let hasHitCount2 = (filter2 instanceof ActiveFilter ? 1 : 0);
+			if (hasHitCount1 != hasHitCount2)
+				return hasHitCount1 - hasHitCount2;
+			else if (hasHitCount1)
+				return filter1.hitCount - filter2.hitCount;
+			else
+				return 0;
+		}
+		function compareLastHit(/**Filter*/ filter1, /**Filter*/ filter2)
+		{
+			let hasLastHit1 = (filter1 instanceof ActiveFilter ? 1 : 0);
+			let hasLastHit2 = (filter2 instanceof ActiveFilter ? 1 : 0);
+			if (hasLastHit1 != hasLastHit2)
+				return hasLastHit1 - hasLastHit2;
+			else if (hasLastHit1)
+				return filter1.lastHit - filter2.lastHit;
+			else
+				return 0;
+		}
+
+		/**
+		 * Creates a sort function from a primary and a secondary comparison function.
+		 * @param {Function} cmpFunc  comparison function to be called first
+		 * @param {Function} fallbackFunc  (optional) comparison function to be called if primary function returns 0
+		 * @param {Boolean} desc  if true, the result of the primary function (not the secondary function) will be reversed - sorting in descending order
+		 * @result {Function} comparison function to be used
+		 */
+		function createSortFunction(cmpFunc, fallbackFunc, desc)
+		{
+			let factor = (desc ? -1 : 1);
+
+			return function(entry1, entry2)
+			{
+				// Comment replacements not bound to a filter always go last
+				let isLast1 = ("origFilter" in entry1 && entry1.filter == null);
+				let isLast2 = ("origFilter" in entry2 && entry2.filter == null);
+				if (isLast1)
+					return (isLast2 ? 0 : 1)
+				else if (isLast2)
+					return -1;
+
+				let ret = cmpFunc(entry1.filter, entry2.filter);
+				if (ret == 0 && fallbackFunc)
+					return fallbackFunc(entry1.filter, entry2.filter);
+				else
+					return factor * ret;
+			}
+		}
+
+		this.sortProcs = {
+			filter: createSortFunction(compareText, null, false),
+			filterDesc: createSortFunction(compareText, null, true),
+			slow: createSortFunction(compareSlow, compareText, true),
+			slowDesc: createSortFunction(compareSlow, compareText, false),
+			enabled: createSortFunction(compareEnabled, compareText, false),
+			enabledDesc: createSortFunction(compareEnabled, compareText, true),
+			hitcount: createSortFunction(compareHitCount, compareText, false),
+			hitcountDesc: createSortFunction(compareHitCount, compareText, true),
+			lasthit: createSortFunction(compareLastHit, compareText, false),
+			lasthitDesc: createSortFunction(compareLastHit, compareText, true)
+		};
+
+		let me = this;
+		let proxy = function()
+		{
+			return me._onChange.apply(me, arguments);
+		};
+		FilterNotifier.addListener(proxy);
+		window.addEventListener("unload", function()
+		{
+			FilterNotifier.removeListener(proxy);
+		}, false);
+	},
+
+	/**
+	 * Filter change processing.
+	 * @see FilterNotifier.addListener()
+	 */
+	_onChange: function(action, item, param1, param2, param3)
+	{
+		switch (action)
+		{
+			case "subscription.updated":
+			{
+				if (item == this._subscription)
+					this.refresh(true);
+				break;
+			}
+			case "filter.disabled":
+			case "filter.hitCount":
+			case "filter.lastHit":
+			{
+				this.updateFilter(item);
+				break;
+			}
+			case "filter.added":
+			{
+				let subscription = param1;
+				let position = param2;
+				if (subscription == this._subscription)
+					this.addFilterAt(position, item);
+				break;
+			}
+			case "filter.removed":
+			{
+				let subscription = param1;
+				let position = param2;
+				if (subscription == this._subscription)
+					this.removeFilterAt(position);
+				break;
+			}
+			case "filter.moved":
+			{
+				let subscription = param1;
+				let oldPosition = param2;
+				let newPosition = param3;
+				if (subscription == this._subscription)
+					this.moveFilterAt(oldPosition, newPosition);
+				break;
+			}
+		}
+	},
+
+	/**
+	 * Box object of the tree that this view is attached to.
+	 * @type nsITreeBoxObject
+	 */
+	boxObject: null,
+
+	/**
+	 * Map of used cell properties to the corresponding nsIAtom representations.
+	 */
+	atoms: null,
+
+	/**
+	 * "Filter" to be displayed if no filter group is selected.
+	 */
+	noGroupDummy: null,
+
+	/**
+	 * "Filter" to be displayed if the selected group is empty.
+	 */
+	noFiltersDummy: null,
+
+	/**
+	 * "Filter" to be displayed for a new filter being edited.
+	 */
+	editDummy: null,
+
+	/**
+	 * Displayed list of filters, might be sorted.
+	 * @type Filter[]
+	 */
+	data: [],
+
+	/**
+	 * <tree> element that the view is attached to.
+	 * @type XULElement
+	 */
+	get treeElement() this.boxObject ? this.boxObject.treeBody.parentNode : null,
+
+	/**
+	 * Checks whether the list is currently empty (regardless of dummy entries).
+	 * @type Boolean
+	 */
+	get isEmpty()
+	{
+		return !this._subscription || !this._subscription.filters.length;
+	},
+
+	/**
+	 * Checks whether the filters in the view can be changed.
+	 * @type Boolean
+	 */
+	get editable()
+	{
+		return (FilterView._subscription instanceof SpecialSubscription);
+	},
+
+	/**
+	 * Returns current item of the list.
+	 * @type Object
+	 */
+	get currentItem()
+	{
+		let index = this.selection.currentIndex;
+		if (index >= 0 && index < this.data.length)
+			return this.data[index];
+		return null;
+	},
+
+	/**
+	 * Returns items that are currently selected in the list.
+	 * @type Object[]
+	 */
+	get selectedItems()
+	{
+		let items = []
+		for (let i = 0; i < this.selection.getRangeCount(); i++)
+		{
+			let min = {};
+			let max = {};
+			this.selection.getRangeAt(i, min, max);
+			for (let j = min.value; j <= max.value; j++)
+				if (j >= 0 && j < this.data.length)
+					items.push(this.data[j]);
+		}
+		return items;
+	},
+
+	getItemAt: function(x, y)
+	{
+		let row = this.boxObject.getRowAt(x, y);
+		if (row >= 0 && row < this.data.length)
+			return this.data[row];
+		else
+			return null;
+	},
+
+	_subscription: 0,
+
+	/**
+	 * Filter subscription being displayed.
+	 * @type Subscription
+	 */
+	get subscription() this._subscription,
+	set subscription(value)
+	{
+		if (value == this._subscription)
+			return;
+
+		this._subscription = value;
+		this.refresh(true);
+	},
+
+	/**
+	 * Will be true if updates are outstanding because the list was hidden.
+	 */
+	_dirty: false,
+
+	/**
+	 * Updates internal view data after a change.
+	 * @param {Boolean} force  if false, a refresh will only happen if previous
+	 *                         changes were suppressed because the list was hidden
+	 */
+	refresh: function(force)
+	{
+		if (FilterActions.visible)
+		{
+			if (!force && !this._dirty)
+				return;
+			this._dirty = false;
+			this.updateData();
+			this.selectRow(0);
+		}
+		else
+			this._dirty = true;
+	},
+
+	/**
+	 * Map of comparison functions by column ID  or column ID + "Desc" for
+	 * descending sort order.
+	 * @const
+	 */
+	sortProcs: null,
+
+	/**
+	 * Column that the list is currently sorted on.
+	 * @type Element
+	 */
+	sortColumn: null,
+
+	/**
+	 * Sorting function currently in use.
+	 * @type Function
+	 */
+	sortProc: null,
+
+	/**
+	 * Resorts the list.
+	 * @param {String} col ID of the column to sort on. If null, the natural order is restored.
+	 * @param {String} direction "ascending" or "descending", if null the sort order is toggled.
+	 */
+	sortBy: function(col, direction)
+	{
+		let newSortColumn = null;
+		if (col)
+		{
+			newSortColumn = this.boxObject.columns.getNamedColumn(col).element;
+			if (!direction)
+			{
+				if (this.sortColumn == newSortColumn)
+					direction = (newSortColumn.getAttribute("sortDirection") == "ascending" ? "descending" : "ascending");
+				else
+					direction = "ascending";
+			}
+		}
+
+		if (this.sortColumn && this.sortColumn != newSortColumn)
+			this.sortColumn.removeAttribute("sortDirection");
+
+		this.sortColumn = newSortColumn;
+		if (this.sortColumn)
+		{
+			this.sortColumn.setAttribute("sortDirection", direction);
+			this.sortProc = this.sortProcs[col.replace(/^col-/, "") + (direction == "descending" ? "Desc" : "")];
+		}
+		else
+			this.sortProc = null;
+
+		if (this.data.length > 1)
+		{
+			this.updateData();
+			this.boxObject.invalidate();
+		}
+	},
+
+	/**
+	 * Inserts dummy entry into the list if necessary.
+	 */
+	addDummyRow: function()
+	{
+		if (this.boxObject && this.data.length == 0)
+		{
+			if (this._subscription)
+				this.data.splice(0, 0, this.noFiltersDummy);
+			else
+				this.data.splice(0, 0, this.noGroupDummy);
+			this.boxObject.rowCountChanged(0, 1);
+		}
+	},
+
+	/**
+	 * Removes dummy entry from the list if present.
+	 */
+	removeDummyRow: function()
+	{
+		if (this.boxObject && this.isEmpty && this.data.length)
+		{
+			this.data.splice(0, 1);
+			this.boxObject.rowCountChanged(0, -1);
+		}
+	},
+
+	/**
+	 * Inserts dummy row when a new filter is being edited.
+	 */
+	insertEditDummy: function()
+	{
+		FilterView.removeDummyRow();
+		let position = this.selection.currentIndex;
+		if (position >= this.data.length)
+			position = this.data.length - 1;
+		if (position < 0)
+			position = 0;
+
+		this.editDummy.index = (position < this.data.length ? this.data[position].index : this.data.length);
+		this.editDummy.position = position;
+		this.data.splice(position, 0, this.editDummy);
+		this.boxObject.rowCountChanged(position, 1);
+		this.selectRow(position);
+	},
+
+	/**
+	 * Removes dummy row once the edit is finished.
+	 */
+	removeEditDummy: function()
+	{
+		let position = this.editDummy.position;
+		if (typeof position != "undefined" && position < this.data.length && this.data[position] == this.editDummy)
+		{
+			this.data.splice(position, 1);
+			this.boxObject.rowCountChanged(position, -1);
+			FilterView.addDummyRow();
+
+			this.selectRow(position);
+		}
+	},
+
+	/**
+	 * Selects a row in the tree and makes sure it is visible.
+	 */
+	selectRow: function(row)
+	{
+		if (this.selection)
+		{
+			row = Math.min(Math.max(row, 0), this.data.length - 1);
+			this.selection.select(row);
+			this.boxObject.ensureRowIsVisible(row);
+		}
+	},
+
+	/**
+	 * Finds a particular filter in the list and selects it.
+	 */
+	selectFilter: function(/**Filter*/ filter)
+	{
+		let index = -1;
+		for (let i = 0; i < this.data.length; i++)
+		{
+			if (this.data[i].filter == filter)
+			{
+				index = i;
+				break;
+			}
+		}
+		if (index >= 0)
+		{
+			this.selectRow(index);
+			this.treeElement.focus();
+		}
+	},
+
+	/**
+	 * Updates value of data property on sorting or filter subscription changes.
+	 */
+	updateData: function()
+	{
+		let oldCount = this.rowCount;
+		if (this._subscription && this._subscription.filters.length)
+		{
+			this.data = this._subscription.filters.map(function(f, i) ({index: i, filter: f}));
+			if (this.sortProc)
+			{
+				// Hide comments in the list, they should be sorted like the filter following them
+				let followingFilter = null;
+				for (let i = this.data.length - 1; i >= 0; i--)
+				{
+					if (this.data[i].filter instanceof CommentFilter)
+					{
+						this.data[i].origFilter = this.data[i].filter;
+						this.data[i].filter = followingFilter;
+					}
+					else
+						followingFilter = this.data[i].filter;
+				}
+
+				this.data.sort(this.sortProc);
+
+				// Restore comments
+				for (let i = 0; i < this.data.length; i++)
+				{
+					if ("origFilter" in this.data[i])
+					{
+						this.data[i].filter = this.data[i].origFilter;
+						delete this.data[i].origFilter;
+					}
+				}
+			}
+		}
+		else
+			this.data = [];
+
+		if (this.boxObject)
+		{
+			this.boxObject.rowCountChanged(0, -oldCount);
+			this.boxObject.rowCountChanged(0, this.rowCount);
+		}
+
+		this.addDummyRow();
+	},
+
+	/**
+	 * Called to update the view when a filter property is changed.
+	 */
+	updateFilter: function(/**Filter*/ filter)
+	{
+		for (let i = 0; i < this.data.length; i++)
+			if (this.data[i].filter == filter)
+				this.boxObject.invalidateRow(i);
+	},
+
+	/**
+	 * Called if a filter has been inserted at the specified position.
+	 */
+	addFilterAt: function(/**Integer*/ position, /**Filter*/ filter)
+	{
+		if (this.data.length == 1 && this.data[0].filter.dummy)
+		{
+			this.data.splice(0, 1);
+			this.boxObject.rowCountChanged(0, -1);
+		}
+
+		if (this.sortProc)
+		{
+			this.updateData();
+			for (let i = 0; i < this.data.length; i++)
+			{
+				if (this.data[i].index == position)
+				{
+					position = i;
+					break;
+				}
+			}
+		}
+		else
+		{
+			for (let i = 0; i < this.data.length; i++)
+				if (this.data[i].index >= position)
+					this.data[i].index++;
+			this.data.splice(position, 0, {index: position, filter: filter});
+		}
+		this.boxObject.rowCountChanged(position, 1);
+		this.selectRow(position);
+	},
+
+	/**
+	 * Called if a filter has been removed at the specified position.
+	 */
+	removeFilterAt: function(/**Integer*/ position)
+	{
+		for (let i = 0; i < this.data.length; i++)
+		{
+			if (this.data[i].index == position)
+			{
+				this.data.splice(i, 1);
+				this.boxObject.rowCountChanged(i, -1);
+				i--;
+			}
+			else if (this.data[i].index > position)
+				this.data[i].index--;
+		}
+		this.addDummyRow();
+	},
+
+	/**
+	 * Called if a filter has been moved within the list.
+	 */
+	moveFilterAt: function(/**Integer*/ oldPosition, /**Integer*/ newPosition)
+	{
+		let dir = (oldPosition < newPosition ? 1 : -1);
+		for (let i = 0; i < this.data.length; i++)
+		{
+			if (this.data[i].index == oldPosition)
+				this.data[i].index = newPosition;
+			else if (dir * this.data[i].index > dir * oldPosition && dir * this.data[i].index <= dir * newPosition)
+				this.data[i].index -= dir;
+		}
+
+		if (!this.sortProc)
+		{
+			let item = this.data[oldPosition];
+			this.data.splice(oldPosition, 1);
+			this.data.splice(newPosition, 0, item);
+			this.boxObject.invalidateRange(Math.min(oldPosition, newPosition), Math.max(oldPosition, newPosition));
+		}
+	},
+
+	QueryInterface: XPCOMUtils.generateQI([Ci.nsITreeView]),
+
+	setTree: function(boxObject)
+	{
+		this.init();
+		this.boxObject = boxObject;
+
+		if (this.boxObject)
+		{
+			this.noGroupDummy = {index: 0, filter: {text: this.boxObject.treeBody.getAttribute("noGroupText"), dummy: true}};
+			this.noFiltersDummy = {index: 0, filter: {text: this.boxObject.treeBody.getAttribute("noFiltersText"), dummy: true}};
+			this.editDummy = {filter: {text: ""}};
+
+			let atomService = Cc["@mozilla.org/atom-service;1"].getService(Ci.nsIAtomService);
+			let stringAtoms = ["col-filter", "col-enabled", "col-hitcount", "col-lasthit", "type-comment", "type-filterlist", "type-whitelist", "type-elemhide", "type-invalid"];
+			let boolAtoms = ["selected", "dummy", "slow", "disabled"];
+
+			this.atoms = {};
+			for each (let atom in stringAtoms)
+				this.atoms[atom] = atomService.getAtom(atom);
+			for each (let atom in boolAtoms)
+			{
+				this.atoms[atom + "-true"] = atomService.getAtom(atom + "-true");
+				this.atoms[atom + "-false"] = atomService.getAtom(atom + "-false");
+			}
+
+			let columns = this.boxObject.columns;
+			for (let i = 0; i < columns.length; i++)
+				if (columns[i].element.hasAttribute("sortDirection"))
+					this.sortBy(columns[i].id, columns[i].element.getAttribute("sortDirection"));
+
+			this.refresh(true);
+		}
+	},
+
+	selection: null,
+
+	get rowCount() this.data.length,
+
+	getCellText: function(row, col)
+	{
+		if (row < 0 || row >= this.data.length)
+			return null;
+
+		col = col.id;
+		if (col != "col-filter" && col != "col-slow" && col != "col-hitcount" && col != "col-lasthit")
+			return null;
+
+		let filter = this.data[row].filter;
+		if (col == "col-filter")
+			return filter.text;
+		else if (col == "col-slow")
+			return (filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter) ? "!" : null);
+		else if (filter instanceof ActiveFilter)
+		{
+			if (col == "col-hitcount")
+				return filter.hitCount;
+			else if (col == "col-lasthit")
+				return (filter.lastHit ? Utils.formatTime(filter.lastHit) : null);
+		}
+		else
+			return null;
+	},
+
+	getColumnProperties: function(col, properties)
+	{
+		col = col.id;
+
+		if (col in this.atoms)
+			properties.AppendElement(this.atoms[col]);
+	},
+
+	getRowProperties: function(row, properties)
+	{
+		if (row < 0 || row >= this.data.length)
+			return;
+
+		let filter = this.data[row].filter;
+		properties.AppendElement(this.atoms["selected-" + this.selection.isSelected(row)]);
+		properties.AppendElement(this.atoms["slow-" + (filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter))]);
+		if (filter instanceof ActiveFilter)
+			properties.AppendElement(this.atoms["disabled-" + filter.disabled]);
+		properties.AppendElement(this.atoms["dummy-" + ("dummy" in filter)]);
+
+		if (filter instanceof CommentFilter)
+			properties.AppendElement(this.atoms["type-comment"]);
+		else if (filter instanceof BlockingFilter)
+			properties.AppendElement(this.atoms["type-filterlist"]);
+		else if (filter instanceof WhitelistFilter)
+			properties.AppendElement(this.atoms["type-whitelist"]);
+		else if (filter instanceof ElemHideFilter)
+			properties.AppendElement(this.atoms["type-elemhide"]);
+		else if (filter instanceof InvalidFilter)
+			properties.AppendElement(this.atoms["type-invalid"]);
+	},
+
+	getCellProperties: function(row, col, properties)
+	{
+		this.getColumnProperties(col, properties);
+		this.getRowProperties(row, properties);
+	},
+
+	cycleHeader: function(col)
+	{
+		let oldDirection = col.element.getAttribute("sortDirection");
+		if (oldDirection == "ascending")
+			this.sortBy(col.id, "descending");
+		else if (oldDirection == "descending")
+			this.sortBy(null, null);
+		else
+			this.sortBy(col.id, "ascending");
+	},
+
+	isSorted: function()
+	{
+		return (this.sortProc != null);
+	},
+
+	canDrop: function(row, orientation, dataTransfer)
+	{
+		if (orientation == Ci.nsITreeView.DROP_ON || row < 0 || row >= this.data.length || !this.editable)
+			return false;
+
+		let item = this.data[row];
+		let position = (orientation == Ci.nsITreeView.DROP_BEFORE ? item.index : item.index + 1);
+		return FilterActions.canDrop(position, dataTransfer);
+	},
+
+	drop: function(row, orientation, dataTransfer)
+	{
+		if (orientation == Ci.nsITreeView.DROP_ON || row < 0 || row >= this.data.length || !this.editable)
+			return;
+
+		let item = this.data[row];
+		let position = (orientation == Ci.nsITreeView.DROP_BEFORE ? item.index : item.index + 1);
+		return FilterActions.drop(position, dataTransfer);
+	},
+
+	isEditable: function(row, col)
+	{
+		if (row < 0 || row >= this.data.length || !this.editable)
+			return false;
+
+		let filter = this.data[row].filter;
+		if (col.id == "col-filter")
+			return !("dummy" in filter);
+		else
+			return false;
+	},
+
+	setCellText: function(row, col, value)
+	{
+		if (row < 0 || row >= this.data.length || col.id != "col-filter")
+			return;
+
+		let oldFilter = this.data[row].filter;
+		let position = this.data[row].index;
+		value = Filter.normalize(value);
+		if (!value || value == oldFilter.text)
+			return;
+
+		let newFilter = Filter.fromText(value);
+		if (this.data[row] == this.editDummy)
+			this.removeEditDummy();
+		else
+			FilterStorage.removeFilter(oldFilter, this._subscription, position);
+		FilterStorage.addFilter(newFilter, this._subscription, position);
+	},
+
+	cycleCell: function(row, col)
+	{
+		if (row < 0 || row >= this.data.length || col.id != "col-enabled")
+			return null;
+
+		let filter = this.data[row].filter;
+		if (filter instanceof ActiveFilter)
+			filter.disabled = !filter.disabled;
+	},
+
+	isContainer: function(row) false,
+	isContainerOpen: function(row) false,
+	isContainerEmpty: function(row) true,
+	getLevel: function(row) 0,
+	getParentIndex: function(row) -1,
+	hasNextSibling: function(row, afterRow) false,
+	toggleOpenState: function(row) {},
+	getProgressMode: function() null,
+	getImageSrc: function() null,
+	isSeparator: function() false,
+	performAction: function() {},
+	performActionOnRow: function() {},
+	performActionOnCell: function() {},
+	getCellValue: function() null,
+	setCellValue: function() {},
+	selectionChanged: function() {},
+};
diff --git a/chrome/adblockplus.jar!/content/ui/filters-search.js b/chrome/adblockplus.jar!/content/ui/filters-search.js
new file mode 100644
index 0000000..7b26ed9
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters-search.js
@@ -0,0 +1,199 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Implementation of the filter search functionality.
+ * @class
+ */
+var FilterSearch =
+{
+	/**
+	 * Initializes findbar widget.
+	 */
+	init: function()
+	{
+		let findbar = E("findbar");
+		findbar.browser = FilterSearch.fakeBrowser;
+
+		findbar.addEventListener("keypress", function(event)
+		{
+			// Work-around for bug 490047
+			if (event.keyCode == KeyEvent.DOM_VK_RETURN)
+				event.preventDefault();
+		}, false);
+
+		// Hack to prevent "highlight all" from getting enabled
+		findbar.toggleHighlight = function() {};
+	},
+
+	/**
+	 * Performs a text search.
+	 * @param {String} text  text to be searched
+	 * @param {Integer} direction  search direction: -1 (backwards), 0 (forwards
+	 *                  starting with current), 1 (forwards starting with next)
+	 * @param {Boolean} caseSensitive  if true, a case-sensitive search is performed
+	 * @result {Integer} one of the nsITypeAheadFind constants
+	 */
+	search: function(text, direction, caseSensitive)
+	{
+		function normalizeString(string) caseSensitive ? string : string.toLowerCase();
+
+		function findText(text, direction, startIndex)
+		{
+			let list = E("filtersTree");
+			let col = list.columns.getNamedColumn("col-filter");
+			let count = list.view.rowCount;
+			for (let i = startIndex + direction; i >= 0 && i < count; i += (direction || 1))
+			{
+				let filter = normalizeString(list.view.getCellText(i, col));
+				if (filter.indexOf(text) >= 0)
+				{
+					FilterView.selectRow(i);
+					return true;
+				}
+			}
+			return false;
+		}
+
+		text = normalizeString(text);
+
+		// First try to find the entry in the current list
+		if (findText(text, direction, E("filtersTree").currentIndex))
+			return Ci.nsITypeAheadFind.FIND_FOUND;
+
+		// Now go through the other subscriptions
+		let result = Ci.nsITypeAheadFind.FIND_FOUND;
+		let subscriptions = FilterStorage.subscriptions.slice();
+		subscriptions.sort(function(s1, s2) (s1 instanceof SpecialSubscription) - (s2 instanceof SpecialSubscription));
+		let current = subscriptions.indexOf(FilterView.subscription);
+		direction = direction || 1;
+		for (let i = current + direction; ; i+= direction)
+		{
+			if (i < 0)
+			{
+				i = subscriptions.length - 1;
+				result = Ci.nsITypeAheadFind.FIND_WRAPPED;
+			}
+			else if (i >= subscriptions.length)
+			{
+				i = 0;
+				result = Ci.nsITypeAheadFind.FIND_WRAPPED;
+			}
+			if (i == current)
+				break;
+
+			let subscription = subscriptions[i];
+			for (let j = 0; j < subscription.filters.length; j++)
+			{
+				let filter = normalizeString(subscription.filters[j].text);
+				if (filter.indexOf(text) >= 0)
+				{
+					let list = E(subscription instanceof SpecialSubscription ? "groups" : "subscriptions");
+					let node = Templater.getNodeForData(list, "subscription", subscription);
+					if (!node)
+						break;
+
+					// Select subscription in its list and restore focus after that
+					let oldFocus = document.commandDispatcher.focusedElement;
+					E("tabs").selectedIndex = (subscription instanceof SpecialSubscription ? 1 : 0);
+					list.ensureElementIsVisible(node);
+					list.selectItem(node);
+					if (oldFocus)
+					{
+						oldFocus.focus();
+						Utils.runAsync(oldFocus.focus, oldFocus);
+					}
+
+					Utils.runAsync(findText, null, text, direction, direction == 1 ? -1 : subscription.filters.length);
+					return result;
+				}
+			}
+		}
+
+		return Ci.nsITypeAheadFind.FIND_NOTFOUND;
+	}
+};
+
+/**
+ * Fake browser implementation to make findbar widget happy - searches in
+ * the filter list.
+ */
+FilterSearch.fakeBrowser =
+{
+	fastFind:
+	{
+		searchString: null,
+		foundLink: null,
+		foundEditable: null,
+		caseSensitive: false,
+		get currentWindow() FilterSearch.fakeBrowser.contentWindow,
+
+		find: function(searchString, linksOnly)
+		{
+			this.searchString = searchString;
+			return FilterSearch.search(this.searchString, 0, this.caseSensitive);
+		},
+
+		findAgain: function(findBackwards, linksOnly)
+		{
+			return FilterSearch.search(this.searchString, findBackwards ? -1 : 1, this.caseSensitive);
+		},
+
+		// Irrelevant for us
+		init: function() {},
+		setDocShell: function() {},
+		setSelectionModeAndRepaint: function() {},
+		collapseSelection: function() {}
+	},
+	currentURI: Utils.makeURI("http://example.com/"),
+	contentWindow:
+	{
+		focus: function()
+		{
+			E("filtersTree").focus();
+		},
+		scrollByLines: function(num)
+		{
+			E("filtersTree").boxObject.scrollByLines(num);
+		},
+		scrollByPages: function(num)
+		{
+			E("filtersTree").boxObject.scrollByPages(num);
+		},
+	},
+
+	addEventListener: function(event, handler, capture)
+	{
+		E("filtersTree").addEventListener(event, handler, capture);
+	},
+	removeEventListener: function(event, handler, capture)
+	{
+		E("filtersTree").addEventListener(event, handler, capture);
+	},
+};
+
+window.addEventListener("load", function()
+{
+	FilterSearch.init();
+}, false);
diff --git a/chrome/adblockplus.jar!/content/ui/filters-subscriptionactions.js b/chrome/adblockplus.jar!/content/ui/filters-subscriptionactions.js
new file mode 100644
index 0000000..9dfacac
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters-subscriptionactions.js
@@ -0,0 +1,604 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Implemetation of the various actions that can be performed on subscriptions.
+ * @class
+ */
+var SubscriptionActions =
+{
+	/**
+	 * Returns the subscription list currently having focus if any.
+	 * @type Element
+	 */
+	get focusedList()
+	{
+		return E("tabs").selectedPanel.getElementsByTagName("richlistbox")[0];
+	},
+
+	/**
+	 * Returns the currently selected and focused subscription item if any.
+	 * @type Element
+	 */
+	get selectedItem()
+	{
+		let list = this.focusedList;
+		return (list ? list.selectedItem : null);
+	},
+
+	/**
+	 * Finds the subscription for a particular filter, selects it and selects the
+	 * filter.
+	 */
+	selectFilter: function(/**Filter*/ filter)
+	{
+		let node = null;
+		let tabIndex = -1;
+		let subscriptions = filter.subscriptions.slice();
+		subscriptions.sort(function(s1, s2) s1.disabled - s2.disabled);
+		for (let i = 0; i < subscriptions.length; i++)
+		{
+			let subscription = subscriptions[i];
+			let list = E(subscription instanceof SpecialSubscription ? "groups" : "subscriptions");
+			tabIndex = (subscription instanceof SpecialSubscription ? 1 : 0);
+			node = Templater.getNodeForData(list, "subscription", subscription);
+			if (node)
+				break;
+		}
+		if (node)
+		{
+			E("tabs").selectedIndex = tabIndex;
+			Utils.runAsync(function()
+			{
+				node.parentNode.ensureElementIsVisible(node);
+				node.parentNode.selectItem(node);
+				if (!FilterActions.visible)
+					E("subscription-showHideFilters-command").doCommand();
+				Utils.runAsync(FilterView.selectFilter, FilterView, filter);
+			});
+		}
+	},
+
+	/**
+	 * Updates subscription commands whenever the selected subscription changes.
+	 * Note: this method might be called with a wrong "this" value.
+	 */
+	updateCommands: function()
+	{
+		let node = SubscriptionActions.selectedItem;
+		let data = Templater.getDataForNode(node);
+		let subscription = (data ? data.subscription : null)
+		E("subscription-update-command").setAttribute("disabled", !subscription ||
+				!(subscription instanceof DownloadableSubscription) ||
+				Synchronizer.isExecuting(subscription.url));
+		E("subscription-moveUp-command").setAttribute("disabled", !subscription ||
+				!node || !node.previousSibling || !!node.previousSibling.id);
+		E("subscription-moveDown-command").setAttribute("disabled", !subscription ||
+				!node || !node.nextSibling || !!node.nextSibling.id);
+	},
+
+	/**
+	 * Starts title editing for the selected subscription.
+	 */
+	editTitle: function()
+	{
+		let node = this.selectedItem;
+		if (node)
+			TitleEditor.start(node);
+	},
+
+	/**
+	 * Triggers re-download of a filter subscription.
+	 */
+	updateFilters: function(/**Node*/ node)
+	{
+		let data = Templater.getDataForNode(node || this.selectedItem);
+		if (data && data.subscription instanceof DownloadableSubscription)
+			Synchronizer.execute(data.subscription, true, true);
+	},
+
+	/**
+	 * Triggers re-download of all filter subscriptions.
+	 */
+	updateAllFilters: function()
+	{
+		for (let i = 0; i < FilterStorage.subscriptions.length; i++)
+		{
+			let subscription = FilterStorage.subscriptions[i];
+			if (subscription instanceof DownloadableSubscription)
+				Synchronizer.execute(subscription, true, true);
+		}
+	},
+
+	/**
+	 * Sets Subscription.disabled field to a new value.
+	 */
+	setDisabled: function(/**Element*/ node, /**Boolean*/ value)
+	{
+		let data = Templater.getDataForNode(node || this.selectedItem);
+		if (data)
+			data.subscription.disabled = value;
+	},
+
+	/**
+	 * Enables all disabled filters in a subscription.
+	 */
+	enableFilters: function(/**Element*/ node)
+	{
+		let data = Templater.getDataForNode(node);
+		if (!data)
+			return;
+
+		let filters = data.subscription.filters;
+		for (let i = 0, l = filters.length; i < l; i++)
+			if (filters[i] instanceof ActiveFilter && filters[i].disabled)
+				filters[i].disabled = false;
+	},
+
+	/**
+	 * Removes a filter subscription from the list (after a warning).
+	 */
+	remove: function(/**Node*/ node)
+	{
+		let data = Templater.getDataForNode(node || this.selectedItem);
+		if (data && Utils.confirm(window, Utils.getString("remove_subscription_warning")))
+			FilterStorage.removeSubscription(data.subscription);
+	},
+
+	/**
+	 * Adds a new filter group and allows the user to change its title.
+	 */
+	addGroup: function()
+	{
+		let subscription = SpecialSubscription.create();
+		FilterStorage.addSubscription(subscription);
+
+		let list = E("groups");
+		let node = Templater.getNodeForData(list, "subscription", subscription);
+		if (node)
+		{
+			list.focus();
+			list.ensureElementIsVisible(node);
+			list.selectedItem = node;
+			this.editTitle();
+		}
+	},
+
+	/**
+	 * Moves a filter subscription one line up.
+	 */
+	moveUp: function(/**Node*/ node)
+	{
+		node = Templater.getDataNode(node || this.selectedItem);
+		let data = Templater.getDataForNode(node);
+		if (!data)
+			return;
+
+		let previousData = Templater.getDataForNode(node.previousSibling);
+		if (!previousData)
+			return;
+
+		FilterStorage.moveSubscription(data.subscription, previousData.subscription);
+	},
+
+	/**
+	 * Moves a filter subscription one line down.
+	 */
+	moveDown: function(/**Node*/ node)
+	{
+		node = Templater.getDataNode(node || this.selectedItem);
+		let data = Templater.getDataForNode(node);
+		if (!data)
+			return;
+
+		let nextNode = node.nextSibling;
+		if (!Templater.getDataForNode(nextNode))
+			return;
+
+		let nextData = Templater.getDataForNode(nextNode.nextSibling);
+		FilterStorage.moveSubscription(data.subscription, nextData ? nextData.subscription : null);
+	},
+
+	/**
+	 * Opens the context menu for a subscription node.
+	 */
+	openMenu: function(/**Event*/ event, /**Node*/ node)
+	{
+		node.getElementsByClassName("actionMenu")[0].openPopupAtScreen(event.screenX, event.screenY, true);
+	},
+
+	_altMask: 2,
+	_ctrlMask: 4,
+	_metaMask: 8,
+	get _accelMask()
+	{
+		let result = this._ctrlMask;
+		try {
+			let accelKey = Utils.prefService.getIntPref("ui.key.accelKey");
+			if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_META)
+				result = this._metaMask;
+			else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_ALT)
+				result = this._altMask;
+		} catch(e) {}
+		this.__defineGetter__("_accelMask", function() result);
+		return result;
+	},
+
+	/**
+	 * Called when a key is pressed on the subscription list.
+	 */
+	keyPress: function(/**Event*/ event)
+	{
+		let modifiers = 0;
+		if (event.altKey)
+			modifiers |= this._altMask;
+		if (event.ctrlKey)
+			modifiers |= this._ctrlMask;
+		if (event.metaKey)
+			modifiers |= this._metaMask;
+
+		if (event.charCode == " ".charCodeAt(0) && modifiers == 0)
+		{
+			// Ignore if Space is pressed on a button
+			for (let node = event.target; node; node = node.parentNode)
+				if (node.localName == "button")
+					return;
+
+			let data = Templater.getDataForNode(this.selectedItem);
+			if (data)
+				data.subscription.disabled = !data.subscription.disabled;
+		}
+		else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_UP && modifiers == this._accelMask)
+		{
+			E("subscription-moveUp-command").doCommand();
+			event.preventDefault();
+			event.stopPropagation();
+		}
+		else if (event.keyCode == Ci.nsIDOMKeyEvent.DOM_VK_DOWN && modifiers == this._accelMask)
+		{
+			E("subscription-moveDown-command").doCommand();
+			event.preventDefault();
+			event.stopPropagation();
+		}
+	},
+
+	/**
+	 * Subscription currently being dragged if any.
+	 * @type Subscription
+	 */
+	dragSubscription: null,
+
+	/**
+	 * Called when a subscription entry is dragged.
+	 */
+	startDrag: function(/**Event*/ event, /**Node*/ node)
+	{
+		let data = Templater.getDataForNode(node);
+		if (!data)
+			return;
+
+		event.dataTransfer.addElement(node);
+		event.dataTransfer.setData("text/x-moz-url", data.subscription.url);
+		event.dataTransfer.setData("text/plain", data.subscription.title);
+		this.dragSubscription = data.subscription;
+		event.stopPropagation();
+	},
+
+	/**
+	 * Called when something is dragged over a subscription entry or subscriptions list.
+	 */
+	dragOver: function(/**Event*/ event)
+	{
+		// Don't allow dragging onto a scroll bar
+		for (let node = event.originalTarget; node; node = node.parentNode)
+			if (node.localName == "scrollbar")
+				return;
+
+		// Don't allow dragging onto element's borders
+		let target = event.originalTarget;
+		while (target && target.localName != "richlistitem")
+			target = target.parentNode;
+		if (!target)
+			target = event.originalTarget;
+
+		let styles = window.getComputedStyle(target, null);
+		let rect = target.getBoundingClientRect();
+		if (event.clientX < rect.left + parseInt(styles.borderLeftWidth, 10) ||
+				event.clientY < rect.top + parseInt(styles.borderTopWidth, 10) ||
+				event.clientX > rect.right - parseInt(styles.borderRightWidth, 10) - 1 ||
+				event.clientY > rect.bottom - parseInt(styles.borderBottomWidth, 10) - 1)
+		{
+			return;
+		}
+
+		// If not dragging a subscription check whether we can accept plain text
+		if (!this.dragSubscription)
+		{
+			let data = Templater.getDataForNode(event.target);
+			if (!data || !(data.subscription instanceof SpecialSubscription) || !event.dataTransfer.getData("text/plain"))
+				return;
+		}
+
+		event.preventDefault();
+		event.stopPropagation();
+	},
+
+	/**
+	 * Called when something is dropped on a subscription entry or subscriptions list.
+	 */
+	drop: function(/**Event*/ event, /**Node*/ node)
+	{
+		if (!this.dragSubscription)
+		{
+			// Not dragging a subscription, maybe this is plain text that we can add as filters?
+			let data = Templater.getDataForNode(node);
+			if (data && data.subscription instanceof SpecialSubscription)
+			{
+				let lines = event.dataTransfer.getData("text/plain").replace(/\r/g, "").split("\n");
+				for (let i = 0; i < lines.length; i++)
+				{
+					let filter = Filter.fromText(lines[i]);
+					if (filter)
+						FilterStorage.addFilter(filter, data.subscription);
+				}
+				FilterActions.removeDraggedFilters();
+				event.stopPropagation();
+			}
+			return;
+		}
+
+		// When dragging down we need to insert after the drop node, otherwise before it.
+		node = Templater.getDataNode(node);
+		if (node)
+		{
+			let dragNode = Templater.getNodeForData(node.parentNode, "subscription", this.dragSubscription);
+			if (node.compareDocumentPosition(dragNode) & node.DOCUMENT_POSITION_PRECEDING)
+				node = node.nextSibling;
+		}
+
+		let data = Templater.getDataForNode(node);
+		FilterStorage.moveSubscription(this.dragSubscription, data ? data.subscription : null);
+		event.stopPropagation();
+	},
+
+	/**
+	 * Called when the drag operation for a subscription is finished.
+	 */
+	endDrag: function()
+	{
+		this.dragSubscription = null;
+	}
+};
+
+/**
+ * Subscription title editing functionality.
+ * @class
+ */
+var TitleEditor =
+{
+	/**
+	 * List item corresponding with the currently edited subscription if any.
+	 * @type Node
+	 */
+	subscriptionEdited: null,
+
+	/**
+	 * Starts editing of a subscription title.
+	 * @param {Node} node subscription list entry or a child node
+	 * @param {Boolean} [checkSelection] if true the editor will not start if the
+	 *        item was selected in the preceding mousedown event
+	 */
+	start: function(node, checkSelection)
+	{
+		if (this.subscriptionEdited)
+			this.end(true);
+
+		let subscriptionNode = Templater.getDataNode(node);
+		if (!subscriptionNode || (checkSelection && !subscriptionNode._wasSelected))
+			return;
+
+		subscriptionNode.getElementsByClassName("titleBox")[0].selectedIndex = 1;
+		let editor = subscriptionNode.getElementsByClassName("titleEditor")[0];
+		editor.value = Templater.getDataForNode(subscriptionNode).subscription.title;
+		editor.setSelectionRange(0, editor.value.length);
+		this.subscriptionEdited = subscriptionNode;
+		editor.focus();
+	},
+
+	/**
+	 * Stops editing of a subscription title.
+	 * @param {Boolean} save if true the entered value will be saved, otherwise dismissed
+	 */
+	end: function(save)
+	{
+		if (!this.subscriptionEdited)
+			return;
+
+		let subscriptionNode = this.subscriptionEdited;
+		this.subscriptionEdited = null;
+
+		let newTitle = null;
+		if (save)
+		{
+			newTitle = subscriptionNode.getElementsByClassName("titleEditor")[0].value;
+			newTitle = newTitle.replace(/^\s+/, "").replace(/\s+$/, "");
+		}
+
+		let subscription = Templater.getDataForNode(subscriptionNode).subscription
+		if (newTitle && newTitle != subscription.title)
+			subscription.title = newTitle;
+		else
+		{
+			subscriptionNode.getElementsByClassName("titleBox")[0].selectedIndex = 0;
+			subscriptionNode.parentNode.focus();
+		}
+	},
+
+	/**
+	 * Processes keypress events on the subscription title editor field.
+	 */
+	keyPress: function(/**Event*/ event)
+	{
+		// Prevent any key presses from triggering outside actions
+		event.stopPropagation();
+
+		if (event.keyCode == event.DOM_VK_RETURN || event.keyCode == event.DOM_VK_ENTER)
+		{
+			event.preventDefault();
+			this.end(true);
+		}
+		else if (event.keyCode == event.DOM_VK_CANCEL || event.keyCode == event.DOM_VK_ESCAPE)
+		{
+			event.preventDefault();
+			this.end(false);
+		}
+	}
+};
+
+/**
+ * Methods called when choosing and adding a new filter subscription.
+ * @class
+ */
+var SelectSubscription =
+{
+	/**
+	 * Starts selection of a filter subscription to add.
+	 */
+	start: function(/**Event*/ event)
+	{
+		let panel = E("selectSubscriptionPanel");
+		let list = E("selectSubscription");
+		let template = E("selectSubscriptionTemplate");
+		let parent = list.menupopup;
+
+		if (panel.state == "open")
+		{
+			list.focus();
+			return;
+		}
+
+		// Remove existing entries if any
+		while (parent.lastChild)
+			parent.removeChild(parent.lastChild);
+
+		// Load data
+		let request = new XMLHttpRequest();
+		request.open("GET", "subscriptions.xml");
+		request.onload = function()
+		{
+			// Avoid race condition if two downloads are started in parallel
+			if (panel.state == "open")
+				return;
+
+			// Add subscription entries to the list
+			let subscriptions = request.responseXML.getElementsByTagName("subscription");
+			let listedSubscriptions = [];
+			for (let i = 0; i < subscriptions.length; i++)
+			{
+				let subscription = subscriptions[i];
+				let url = subscription.getAttribute("url");
+				if (!url || url in FilterStorage.knownSubscriptions)
+					continue;
+
+				let localePrefix = Utils.checkLocalePrefixMatch(subscription.getAttribute("prefixes"));
+				let node = Templater.process(template, {
+					__proto__: null,
+					node: subscription,
+					localePrefix: localePrefix
+				});
+				parent.appendChild(node);
+				listedSubscriptions.push(subscription);
+			}
+			let selectedNode = Utils.chooseFilterSubscription(listedSubscriptions);
+			list.selectedItem = Templater.getNodeForData(parent, "node", selectedNode) || parent.firstChild;
+
+			// Show panel and focus list
+			let position = (Utils.versionComparator.compare(Utils.platformVersion, "2.0") < 0 ? "after_end" : "bottomcenter topleft");
+			panel.openPopup(E("selectSubscriptionButton"), position, 0, 0, false, false, event);
+			Utils.runAsync(list.focus, list);
+		};
+		request.send();
+	},
+
+	/**
+	 * Adds filter subscription that is selected.
+	 */
+	add: function()
+	{
+		E("selectSubscriptionPanel").hidePopup();
+
+		let data = Templater.getDataForNode(E("selectSubscription").selectedItem);
+		if (!data)
+			return;
+
+		let subscription = Subscription.fromURL(data.node.getAttribute("url"));
+		if (!subscription)
+			return;
+
+		FilterStorage.addSubscription(subscription);
+		subscription.disabled = false;
+		subscription.title = data.node.getAttribute("title");
+		subscription.homepage = data.node.getAttribute("homepage");
+
+		// Make sure the subscription is visible and selected
+		let list = E("subscriptions");
+		let node = Templater.getNodeForData(list, "subscription", subscription);
+		if (node)
+		{
+			list.ensureElementIsVisible(node);
+			list.selectedItem = node;
+			list.focus();
+		}
+
+		// Trigger download if necessary
+		if (subscription instanceof DownloadableSubscription && !subscription.lastDownload)
+			Synchronizer.execute(subscription);
+	},
+
+	/**
+	 * Called if the user chooses to view the complete subscriptions list.
+	 */
+	chooseOther: function()
+	{
+		E("selectSubscriptionPanel").hidePopup();
+		window.openDialog("subscriptionSelection.xul", "_blank", "chrome,centerscreen,modal,resizable,dialog=no", null, null);
+	},
+
+	/**
+	 * Called for keys pressed on the subscription selection panel.
+	 */
+	keyPress: function(/**Event*/ event)
+	{
+		// Buttons and text links handle Enter key themselves
+		if (event.target.localName == "button" || event.target.localName == "label")
+			return;
+
+		if (event.keyCode == event.DOM_VK_RETURN || event.keyCode == event.DOM_VK_ENTER)
+		{
+			// This shouldn't accept our dialog, only the panel
+			event.preventDefault();
+			E("selectSubscriptionAccept").doCommand();
+		}
+	}
+};
diff --git a/chrome/adblockplus.jar!/content/ui/filters-subscriptionview.js b/chrome/adblockplus.jar!/content/ui/filters-subscriptionview.js
new file mode 100644
index 0000000..9b0d591
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters-subscriptionview.js
@@ -0,0 +1,322 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Fills a list of filter groups and keeps it updated.
+ * @param {Element} list  richlistbox element to be filled
+ * @param {Node} template  template to use for the groups
+ * @param {Function} filter  filter to decide which lists should be included
+ * @param {Function} listener  function to be called on changes
+ * @constructor
+ */
+function ListManager(list, template, filter, listener)
+{
+	this._list = list;
+	this._template = template;
+	this._filter = filter;
+	this._listener = listener || function(){};
+
+	this._deck = this._list.parentNode;
+
+	this._list.listManager = this;
+	this.reload();
+
+	let me = this;
+	let proxy = function()
+	{
+		return me._onChange.apply(me, arguments);
+	};
+	FilterNotifier.addListener(proxy);
+	window.addEventListener("unload", function()
+	{
+		FilterNotifier.removeListener(proxy);
+	}, false);
+}
+ListManager.prototype =
+{
+	/**
+	 * List element being managed.
+	 * @type Element
+	 */
+	_list: null,
+	/**
+	 * Template used for the groups.
+	 * @type Node
+	 */
+	_template: null,
+	/**
+	 * Filter function to decide which subscriptions should be included.
+	 * @type Function
+	 */
+	_filter: null,
+	/**
+	 * Function to be called whenever list contents change.
+	 * @type Function
+	 */
+	_listener: null,
+	/**
+	 * Deck switching between list display and "no entries" message.
+	 * @type Element
+	 */
+	_deck: null,
+
+	/**
+	 * Completely rebuilds the list.
+	 */
+	reload: function()
+	{
+		// Remove existing entries if any
+		while (this._list.firstChild)
+			this._list.removeChild(this._list.firstChild);
+
+		// Now add all subscriptions
+		let subscriptions = FilterStorage.subscriptions.filter(this._filter, this);
+		if (subscriptions.length)
+		{
+			for each (let subscription in subscriptions)
+				this.addSubscription(subscription, null);
+
+			// Make sure first list item is selected after list initialization
+			Utils.runAsync(function()
+			{
+				this._list.selectItem(this._list.getItemAtIndex(this._list.getIndexOfFirstVisibleRow()));
+			}, this);
+		}
+
+		this._deck.selectedIndex = (subscriptions.length ? 1 : 0);
+		this._listener();
+	},
+
+	/**
+	 * Adds a filter subscription to the list.
+	 */
+	addSubscription: function(/**Subscription*/ subscription, /**Node*/ insertBefore) /**Node*/
+	{
+		let disabledFilters = 0;
+		for (let i = 0, l = subscription.filters.length; i < l; i++)
+			if (subscription.filters[i] instanceof ActiveFilter && subscription.filters[i].disabled)
+				disabledFilters++;
+
+		let node = Templater.process(this._template, {
+			__proto__: null,
+			subscription: subscription,
+			isExternal: subscription instanceof ExternalSubscription,
+			downloading: Synchronizer.isExecuting(subscription.url),
+			disabledFilters: disabledFilters
+		});
+		if (insertBefore)
+			this._list.insertBefore(node, insertBefore);
+		else
+			this._list.appendChild(node);
+		return node;
+	},
+
+	/**
+	 * Map indicating subscriptions that need their "disabledFilters" property to
+	 * be updated by next updateDisabled() call.
+	 * @type Object
+	 */
+	_scheduledUpdateDisabled: null,
+
+	/**
+	 * Updates subscriptions that had some of their filters enabled/disabled.
+	 */
+	updateDisabled: function()
+	{
+		let list = this._scheduledUpdateDisabled;
+		this._scheduledUpdateDisabled = null;
+		for (let url in list)
+		{
+			let subscription = Subscription.fromURL(url);
+			let subscriptionNode = Templater.getNodeForData(this._list, "subscription", subscription);
+			if (subscriptionNode)
+			{
+				let data = Templater.getDataForNode(subscriptionNode);
+				let disabledFilters = 0;
+				for (let i = 0, l = subscription.filters.length; i < l; i++)
+					if (subscription.filters[i] instanceof ActiveFilter && subscription.filters[i].disabled)
+						disabledFilters++;
+
+				if (disabledFilters != data.disabledFilters)
+				{
+					data.disabledFilters = disabledFilters;
+					Templater.update(this._template, subscriptionNode);
+
+					if (!document.commandDispatcher.focusedElement)
+						this._list.focus();
+				}
+			}
+		}
+	},
+
+	/**
+	 * Subscriptions change processing.
+	 * @see FilterNotifier.addListener()
+	 */
+	_onChange: function(action, item, param1, param2)
+	{
+		if ((action == "subscription.added" || action == "subscription.removed") && item.url == Prefs.subscriptions_exceptionsurl)
+			E("acceptableAds").checked = FilterStorage.subscriptions.some(function(s) s.url == Prefs.subscriptions_exceptionsurl);
+
+		if (action == "filter.disabled")
+		{
+			if (this._scheduledUpdateDisabled == null)
+			{
+				this._scheduledUpdateDisabled = {__proto__: null};
+				Utils.runAsync(this.updateDisabled, this);
+			}
+			for (let i = 0; i < item.subscriptions.length; i++)
+				this._scheduledUpdateDisabled[item.subscriptions[i].url] = true;
+			return;
+		}
+
+		if (action != "load" && !this._filter(item))
+			return;
+
+		switch (action)
+		{
+			case "load":
+			{
+				this.reload();
+				break;
+			}
+			case "subscription.added":
+			{
+				let index = FilterStorage.subscriptions.indexOf(item);
+				if (index >= 0)
+				{
+					let insertBefore = null;
+					for (index++; index < FilterStorage.subscriptions.length && !insertBefore; index++)
+						insertBefore = Templater.getNodeForData(this._list, "subscription", FilterStorage.subscriptions[index]);
+					this.addSubscription(item, insertBefore);
+					this._deck.selectedIndex = 1;
+					this._listener();
+				}
+				break;
+			}
+			case "subscription.removed":
+			{
+				let node = Templater.getNodeForData(this._list, "subscription", item);
+				if (node)
+				{
+					let newSelection = node.nextSibling || node.previousSibling;
+					node.parentNode.removeChild(node);
+					if (!this._list.firstChild)
+					{
+						this._deck.selectedIndex = 0;
+						this._list.selectedIndex = -1;
+					}
+					else if (newSelection)
+					{
+						this._list.ensureElementIsVisible(newSelection);
+						this._list.selectedItem = newSelection;
+					}
+					this._listener();
+				}
+				break
+			}
+			case "subscription.moved":
+			{
+				let node = Templater.getNodeForData(this._list, "subscription", item);
+				if (node)
+				{
+					node.parentNode.removeChild(node);
+					let insertBefore = null;
+					let index = FilterStorage.subscriptions.indexOf(item);
+					if (index >= 0)
+						for (index++; index < FilterStorage.subscriptions.length && !insertBefore; index++)
+							insertBefore = Templater.getNodeForData(this._list, "subscription", FilterStorage.subscriptions[index]);
+					this._list.insertBefore(node, insertBefore);
+					this._list.ensureElementIsVisible(node);
+					this._listener();
+				}
+				break;
+			}
+			case "subscription.title":
+			case "subscription.disabled":
+			case "subscription.homepage":
+			case "subscription.lastDownload":
+			case "subscription.downloadStatus":
+			{
+				let subscriptionNode = Templater.getNodeForData(this._list, "subscription", item);
+				if (subscriptionNode)
+				{
+					Templater.getDataForNode(subscriptionNode).downloading = Synchronizer.isExecuting(item.url);
+					Templater.update(this._template, subscriptionNode);
+
+					if (!document.commandDispatcher.focusedElement)
+						this._list.focus();
+					this._listener();
+				}
+				break;
+			}
+		}
+	}
+};
+
+/**
+ * Attaches list managers to the lists.
+ */
+ListManager.init = function()
+{
+	new ListManager(E("subscriptions"),
+									E("subscriptionTemplate"),
+									function(s) s instanceof RegularSubscription && !(ListManager.acceptableAdsCheckbox && s.url == Prefs.subscriptions_exceptionsurl),
+									SubscriptionActions.updateCommands);
+	new ListManager(E("groups"),
+									E("groupTemplate"),
+									function(s) s instanceof SpecialSubscription,
+									SubscriptionActions.updateCommands);
+	E("acceptableAds").checked = FilterStorage.subscriptions.some(function(s) s.url == Prefs.subscriptions_exceptionsurl);
+	E("acceptableAds").parentNode.hidden = !ListManager.acceptableAdsCheckbox;
+};
+
+/**
+ * Defines whether the "acceptable ads" subscription needs special treatment.
+ * @type Boolean
+ */
+ListManager.acceptableAdsCheckbox = Prefs.subscriptions_exceptionscheckbox;
+
+/**
+ * Adds or removes filter subscription allowing acceptable ads.
+ */
+ListManager.allowAcceptableAds = function(/**Boolean*/ allow)
+{
+	let subscription = Subscription.fromURL(Prefs.subscriptions_exceptionsurl);
+	if (!subscription)
+		return;
+
+	subscription.disabled = false;
+	subscription.title = "Allow non-intrusive advertising";
+	if (allow)
+	{
+		FilterStorage.addSubscription(subscription);
+		if (subscription instanceof DownloadableSubscription && !subscription.lastDownload)
+			Synchronizer.execute(subscription);
+	}
+	else
+		FilterStorage.removeSubscription(subscription);
+};
+
+window.addEventListener("load", ListManager.init, false);
diff --git a/chrome/adblockplus.jar!/content/ui/filters.js b/chrome/adblockplus.jar!/content/ui/filters.js
new file mode 100644
index 0000000..f3b0cbc
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters.js
@@ -0,0 +1,228 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Initialization function, called when the window is loaded.
+ */
+function init()
+{
+	if (window.arguments && window.arguments.length)
+	{
+		let filter = window.arguments[0].wrappedJSObject;
+		if (filter instanceof Filter)
+			Utils.runAsync(SubscriptionActions.selectFilter, SubscriptionActions, filter);
+	}
+}
+
+/**
+ * Called whenever the currently selected tab changes.
+ */
+function onTabChange(/**Element*/ tabbox)
+{
+	updateSelectedSubscription();
+
+	Utils.runAsync(function()
+	{
+		let panel = tabbox.selectedPanel;
+		if (panel)
+			panel.getElementsByClassName("initialFocus")[0].focus();
+		SubscriptionActions.updateCommands();
+	});
+}
+
+/**
+ * Called whenever the selected subscription changes.
+ */
+function onSelectionChange(/**Element*/ list)
+{
+	SubscriptionActions.updateCommands();
+	updateSelectedSubscription();
+	list.focus();
+
+	// Take elements of the previously selected item out of the tab order
+	if ("previousSelection" in list && list.previousSelection)
+	{
+		let elements = list.previousSelection.getElementsByClassName("tabable");
+		for (let i = 0; i < elements.length; i++)
+			elements[i].setAttribute("tabindex", "-1");
+	}
+	// Put elements of the selected item into tab order
+	if (list.selectedItem)
+	{
+		let elements = list.selectedItem.getElementsByClassName("tabable");
+		for (let i = 0; i < elements.length; i++)
+			elements[i].removeAttribute("tabindex");
+	}
+	list.previousSelection = list.selectedItem;
+}
+
+/**
+ * Called when splitter state changes to make sure it is persisted properly.
+ */
+function onSplitterStateChange(/**Element*/ splitter)
+{
+	let state = splitter.getAttribute("state");
+	if (!state)
+	{
+		splitter.setAttribute("state", "open");
+		document.persist(splitter.id, "state");
+	}
+}
+
+/**
+ * Updates filter list when selected subscription changes.
+ */
+function updateSelectedSubscription()
+{
+	let panel = E("tabs").selectedPanel;
+	if (!panel)
+		return;
+
+	let list = panel.getElementsByTagName("richlistbox")[0];
+	if (!list)
+		return;
+
+	let data = Templater.getDataForNode(list.selectedItem);
+	FilterView.subscription = (data ? data.subscription : null);
+	FilterActions.updateCommands();
+}
+
+/**
+ * Template processing functions.
+ * @class
+ */
+var Templater =
+{
+	/**
+	 * Processes a template node using given data object.
+	 */
+	process: function(/**Node*/ template, /**Object*/ data) /**Node*/
+	{
+		// Use a sandbox to resolve attributes (for convenience, not security)
+		let sandbox = Cu.Sandbox(window);
+		for (let key in data)
+			sandbox[key] = data[key];
+		sandbox.formatTime = Utils.formatTime;
+
+		// Clone template but remove id/hidden attributes from it
+		let result = template.cloneNode(true);
+		result.removeAttribute("id");
+		result.removeAttribute("hidden");
+		result._data = data;
+
+		// Resolve any attributes of the for attr="{obj.foo}"
+		let conditionals = [];
+		let nodeIterator = document.createNodeIterator(result, NodeFilter.SHOW_ELEMENT, null, false);
+		for (let node = nodeIterator.nextNode(); node; node = nodeIterator.nextNode())
+		{
+			if (node.localName == "if")
+				conditionals.push(node);
+			for (let i = 0; i < node.attributes.length; i++)
+			{
+				let attribute = node.attributes[i];
+				let len = attribute.value.length;
+				if (len >= 2 && attribute.value[0] == "{" && attribute.value[len - 1] == "}")
+					attribute.value = Cu.evalInSandbox(attribute.value.substr(1, len - 2), sandbox);
+			}
+		}
+
+		// Process <if> tags - remove if condition is false, replace by their children
+		// if it is true
+		for each (let node in conditionals)
+		{
+			let fragment = document.createDocumentFragment();
+			let condition = node.getAttribute("condition");
+			if (condition == "false")
+				condition = false;
+			for (let i = 0; i < node.childNodes.length; i++)
+			{
+				let child = node.childNodes[i];
+				if (child.localName == "elif" || child.localName == "else")
+				{
+					if (condition)
+						break;
+					condition = (child.localName == "elif" ? child.getAttribute("condition") : true);
+					if (condition == "false")
+						condition = false;
+				}
+				else if (condition)
+					fragment.appendChild(node.childNodes[i--]);
+			}
+			node.parentNode.replaceChild(fragment, node);
+		}
+
+		return result;
+	},
+
+	/**
+	 * Updates first child of a processed template if the underlying data changed.
+	 */
+	update: function(/**Node*/ template, /**Node*/ node)
+	{
+		if (!("_data" in node))
+			return;
+		let newChild = Templater.process(template.firstChild, node._data);
+		delete newChild._data;
+		node.replaceChild(newChild, node.firstChild);
+	},
+
+	/**
+	 * Walks up the parent chain for a node until the node corresponding with a
+	 * template is found.
+	 */
+	getDataNode: function(/**Node*/ node) /**Node*/
+	{
+		while (node)
+		{
+			if ("_data" in node)
+				return node;
+			node = node.parentNode;
+		}
+		return null;
+	},
+
+	/**
+	 * Returns the data used to generate the node from a template.
+	 */
+	getDataForNode: function(/**Node*/ node) /**Object*/
+	{
+		node = Templater.getDataNode(node);
+		if (node)
+			return node._data;
+		else
+			return null;
+	},
+
+	/**
+	 * Returns a node that has been generated from a template using a particular
+	 * data object.
+	 */
+	getNodeForData: function(/**Node*/ parent, /**String*/ property, /**Object*/ data) /**Node*/
+	{
+		for (let child = parent.firstChild; child; child = child.nextSibling)
+			if ("_data" in child && property in child._data && child._data[property] == data)
+				return child;
+		return null;
+	}
+};
diff --git a/chrome/adblockplus.jar!/content/ui/filters.xul b/chrome/adblockplus.jar!/content/ui/filters.xul
new file mode 100644
index 0000000..cc3ef5d
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/filters.xul
@@ -0,0 +1,412 @@
+<?xml version="1.0"?>
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+	 - Version: MPL 1.1
+	 -
+	 - The contents of this file are subject to the Mozilla Public License Version
+	 - 1.1 (the "License"); you may not use this file except in compliance with
+	 - the License. You may obtain a copy of the License at
+	 - http://www.mozilla.org/MPL/
+	 -
+	 - Software distributed under the License is distributed on an "AS IS" basis,
+	 - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+	 - for the specific language governing rights and limitations under the
+	 - License.
+	 -
+	 - The Original Code is Adblock Plus.
+	 -
+	 - The Initial Developer of the Original Code is
+	 - Wladimir Palant.
+	 - Portions created by the Initial Developer are Copyright (C) 2006-2011
+	 - the Initial Developer. All Rights Reserved.
+	 -
+	 - Contributor(s):
+	 -
+	 - ***** END LICENSE BLOCK ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://adblockplus/skin/filters.css" type="text/css"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://adblockplus/locale/filters.dtd">
+
+<dialog
+	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+	title="&dialog.title;"
+	id="abpFiltersWindow"
+	onload="init()"
+	buttons="accept"
+	width="950"
+	height="450"
+	persist="screenX screenY width height sizemode"
+	windowtype="abp:filters">
+
+<script type="application/x-javascript;version=1.7" src="utils.js"/>
+<script type="application/x-javascript;version=1.7" src="filters.js"/>
+<script type="application/x-javascript;version=1.7" src="filters-subscriptionview.js"/>
+<script type="application/x-javascript;version=1.7" src="filters-subscriptionactions.js"/>
+<script type="application/x-javascript;version=1.7" src="filters-filterview.js"/>
+<script type="application/x-javascript;version=1.7" src="filters-filteractions.js"/>
+<script type="application/x-javascript;version=1.7" src="filters-backup.js"/>
+<script type="application/x-javascript;version=1.7" src="filters-search.js"/>
+
+<keyset id="filtersKeyset">
+	<key id="subscription-update-key" key="T" modifiers="accel" command="subscription-update-command"/>
+	<key id="subscription-update-all-key" key="T" modifiers="accel,shift" command="subscription-update-all-command"/>
+	<key id="edit-key" keycode="VK_F2" oncommand="E(FilterActions.focused ? 'filters-edit-command' : 'subscription-editTitle-command').doCommand();"/>
+	<key id="delete-key" keycode="VK_DELETE" oncommand="E(FilterActions.focused ? 'filters-delete-command' : 'subscription-delete-command').doCommand();"/>
+	<key id="subscription-showHideFilters-key" key="R" modifiers="accel" command="subscription-showHideFilters-command"/>
+	<key id="moveUp-key" keycode="VK_UP" modifiers="accel"/>
+	<key id="moveDown-key" keycode="VK_DOWN" modifiers="accel"/>
+	<key id="filters-add-key" keycode="VK_INSERT" oncommand="E('filters-add-command').doCommand();"/>
+	<key id="filters-selectAll-key" key="A" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-selectAll-command').doCommand();"/>
+	<key id="filters-copy-key" key="C" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-copy-command').doCommand();"/>
+	<key id="filters-cut-key" key="X" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-cut-command').doCommand();"/>
+	<key id="filters-paste-key" key="V" modifiers="accel" oncommand="if (FilterActions.focused) E('filters-paste-command').doCommand();"/>
+	<key id="backup-key" key="E" modifiers="accel" oncommand="E('backup').doCommand();"/>
+	<key id="restore-key" key="I" modifiers="accel" oncommand="E('restoreOwnBackup').doCommand();"/>
+	<key id="find-key" key="F" modifiers="accel" oncommand="if (FilterActions.visible) E('find-command').doCommand();"/>
+	<key id="find-again-key" key="G" modifiers="accel" oncommand="if (FilterActions.visible) E('find-again-command').doCommand();"/>
+	<key id="find-previous-key" key="G" modifiers="accel,shift" oncommand="if (FilterActions.visible) E('find-previous-command').doCommand();"/>
+	<key id="find-again-key2" keycode="VK_F3" oncommand="if (FilterActions.visible) E('find-again-command').doCommand();"/>
+	<key id="find-previous-key2" keycode="VK_F3" modifiers="shift" oncommand="if (FilterActions.visible) E('find-previous-command').doCommand();"/>
+</keyset>
+
+<commandset id="filtersCommandset">
+	<command id="subscription-update-command" oncommand="SubscriptionActions.updateFilters();"/>
+	<command id="subscription-update-all-command" oncommand="SubscriptionActions.updateAllFilters();"/>
+	<command id="subscription-editTitle-command" oncommand="SubscriptionActions.editTitle();"/>
+	<command id="subscription-delete-command" oncommand="SubscriptionActions.remove();"/>
+	<command id="subscription-showHideFilters-command" oncommand="E('filtersGrippy').doCommand();"/>
+	<command id="subscription-moveUp-command" oncommand="SubscriptionActions.moveUp();"/>
+	<command id="subscription-moveDown-command" oncommand="SubscriptionActions.moveDown();"/>
+	<command id="subscription-add-command" oncommand="SelectSubscription.start(event);"/>
+	<command id="subscription-addSelected-command" oncommand="SelectSubscription.add();"/>
+	<command id="subscription-addOther-command" oncommand="SelectSubscription.chooseOther();"/>
+	<command id="group-add-command" oncommand="SubscriptionActions.addGroup();"/>
+	<command id="filters-selectAll-command" oncommand="FilterActions.selectAll();"/>
+	<command id="filters-edit-command" oncommand="FilterActions.startEditing();"/>
+	<command id="filters-add-command" oncommand="FilterActions.insertFilter();"/>
+	<command id="filters-delete-command" oncommand="FilterActions.deleteSelected();"/>
+	<command id="filters-resetHitCounts-command" oncommand="FilterActions.resetHitCounts();"/>
+	<command id="filters-moveUp-command" oncommand="FilterActions.moveUp();"/>
+	<command id="filters-moveDown-command" oncommand="FilterActions.moveDown();"/>
+	<command id="filters-copy-command" oncommand="FilterActions.copySelected(true);"/>
+	<command id="filters-cut-command" oncommand="FilterActions.copySelected(false);"/>
+	<command id="filters-paste-command" oncommand="FilterActions.paste();"/>
+	<command id="find-command" oncommand="E('findbar').startFind(E('findbar').FIND_NORMAL)"/>
+	<command id="find-again-command" oncommand="E('findbar').onFindAgainCommand(false)"/>
+	<command id="find-previous-command" oncommand="E('findbar').onFindAgainCommand(true)"/>
+</commandset>
+
+<popupset id="filtersPopupset">
+	<menupopup id="filters-view-menu1" onpopupshowing="FilterActions.fillColumnPopup(this);">
+		<menuitem id="filters-view-filter1" label="&filter.column;" accesskey="&filter.accesskey;" type="checkbox" disabled="true"/>
+		<menuitem id="filters-view-slow1" label="&slow.column;" accesskey="&slow.accesskey;" type="checkbox" oncommand="FilterActions.toggleColumn('col-slow')"/>
+		<menuitem id="filters-view-enabled1" label="&enabled.column;" accesskey="&enabled.accesskey;" type="checkbox" oncommand="FilterActions.toggleColumn('col-enabled')"/>
+		<menuitem id="filters-view-hitcount1" label="&hitcount.column;" accesskey="&hitcount.accesskey;" type="checkbox" oncommand="FilterActions.toggleColumn('col-hitcount')"/>
+		<menuitem id="filters-view-lasthit1" label="&lasthit.column;" accesskey="&lasthit.accesskey;" type="checkbox" oncommand="FilterActions.toggleColumn('col-lasthit')"/>
+		<menuseparator/>
+		<menu id="filters-sort-menu1" label="&sort.label;" accesskey="&sort.accesskey;">
+			<menupopup id="filters-sort-popup1">
+				<menuitem id="filters-sort-none1" label="&sort.none.label;" accesskey="&sort.none.accesskey;" type="radio" name="sortColumn" oncommand="FilterView.sortBy(null)"/>
+				<menuitem id="filters-sort-filter1" label="&filter.column;" accesskey="&filter.accesskey;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-filter')"/>
+				<menuitem id="filters-sort-slow1" label="&slow.column;" accesskey="&slow.accesskey;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-slow')"/>
+				<menuitem id="filters-sort-enabled1" label="&enabled.column;" accesskey="&enabled.accesskey;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-enabled')"/>
+				<menuitem id="filters-sort-hitcount1" label="&hitcount.column;" accesskey="&hitcount.accesskey;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-hitcount')"/>
+				<menuitem id="filters-sort-lasthit1" label="&lasthit.column;" accesskey="&lasthit.accesskey;" type="radio" name="sortColumn" oncommand="FilterView.sortBy('col-lasthit')"/>
+				<menuseparator/>
+				<menuitem id="filters-sort-asc1" label="&sort.ascending.label;" accesskey="&sort.ascending.accesskey;" type="radio" name="sortOrder" oncommand="FilterActions.setSortOrder('ascending')"/>
+				<menuitem id="filters-sort-desc1" label="&sort.descending.label;" accesskey="&sort.descending.accesskey;" type="radio" name="sortOrder" oncommand="FilterActions.setSortOrder('descending')"/>
+			</menupopup>
+		</menu>
+	</menupopup>
+	<tooltip id="filtersTooltip" onpopupshowing="FilterActions.fillTooltip(event);">
+		<grid>
+			<columns>
+				<column/>
+				<column flex="1"/>
+			</columns>
+			<rows>
+				<row id="tooltip-filter-row" align="top">
+					<label class="tooltipLabel" value="&filter.column;"/>
+					<vbox id="tooltip-filter"/>
+				</row>
+				<row id="tooltip-hitcount-row">
+					<label class="tooltipLabel" value="&hitcount.column;"/>
+					<description id="tooltip-hitcount"/>
+				</row>
+				<row id="tooltip-lasthit-row">
+					<label class="tooltipLabel" value="&lasthit.column;"/>
+					<description id="tooltip-lasthit"/>
+				</row>
+			</rows>
+		</grid>
+
+		<description id="tooltip-additional"/>
+	</tooltip>
+</popupset>
+
+<hbox id="content" flex="1">
+	<tabbox id="tabs" flex="1" persist="selectedIndex">
+		<tabs onselect="onTabChange(this.parentNode);">
+			<tab label="&subscriptions.tab.label;"/>
+			<tab label="&filters.tab.label;"/>
+		</tabs>
+		<tabpanels flex="1">
+			<tabpanel id="subscriptionsTab" orient="vertical" flex="1">
+				<hbox pack="end">
+					<button id="selectSubscriptionButton" label="&addSubscription.label;…" accesskey="&addSubscription.accesskey;" command="subscription-add-command"/>
+				</hbox>
+
+				<panel id="selectSubscriptionPanel" type="arrow" position="bottomcenter topleft"
+							 orient="vertical" onkeypress="SelectSubscription.keyPress(event);">
+					<menuitem id="selectSubscriptionTemplate" hidden="true"
+							class="{localePrefix ? 'localeMatch' : ''}"
+							label="{node.getAttribute('title')}"
+							value="{node.getAttribute('url')}">
+						<label class="selectSubscriptionItem" value="{node.getAttribute('title')}"/>
+						<label class="selectSubscriptionItem" value=" ("/>
+						<label class="selectSubscriptionItem" value="{node.getAttribute('specialization')}"/>
+						<label class="selectSubscriptionItem" value=")"/>
+					</menuitem>
+					<menulist id="selectSubscription">
+						<menupopup/>
+					</menulist>
+					<hbox align="baseline">
+						<label class="text-link" value="&addSubscriptionOther.label;" onclick="E('subscription-addOther-command').doCommand();"/>
+						<spacer flex="1"/>
+						<button id="selectSubscriptionAccept" default="true" label="&addSubscriptionAdd.label;" command="subscription-addSelected-command"/>
+						<spacer flex="1"/>
+						<button label="&addSubscriptionCancel.label;" oncommand="E('selectSubscriptionPanel').hidePopup();"/>
+					</hbox>
+				</panel>
+
+				<richlistitem id="subscriptionTemplate" class="subscription" hidden="true" orient="vertical"
+						onmousedown="this._wasSelected = (this.parentNode.selectedItem == this);"
+						ondragstart="SubscriptionActions.startDrag(event, this);"
+						ondragend="SubscriptionActions.endDrag();"
+						ondragover="SubscriptionActions.dragOver(event);"
+						ondrop="SubscriptionActions.drop(event, this);"
+						oncontextmenu="SubscriptionActions.openMenu(event, this);">
+					<vbox class="{subscription.disabled ? 'disabled' : ''}">
+						<hbox align="center">
+							<deck class="titleBox" flex="1" selectedIndex="0" onselect="event.stopPropagation();">
+								<description ondblclick="if (event.button == 0) TitleEditor.start(this, true);">
+									<description value="{subscription.title}" flex="1" crop="end"/>
+									<hbox align="baseline">
+										<description value=" ("/>
+										<if condition="{isExternal}">
+											<description value="&subscription.external.label;"/>
+										<else/>
+											<if condition="{subscription.homepage}">
+												<description class="text-link" value="&subscription.homepage.label;"
+													_url="{subscription.homepage}" tooltiptext="{subscription.homepage}"
+													onclick="if (event.button == 0) { event.stopPropagation();Utils.loadInBrowser(this.getAttribute('_url')); }"/>
+												<description value=", "/>
+											</if>
+											<description class="text-link" value="&subscription.source.label;"
+												_url="{subscription.url}" tooltiptext="{subscription.url}"
+												onclick="if (event.button == 0) { event.stopPropagation();Utils.loadInBrowser(this.getAttribute('_url')); }"/>
+										</if>
+										<description value=")"/>
+									</hbox>
+								</description>
+								<textbox oncontextmenu="event.stopPropagation();" class="titleEditor" onkeypress="TitleEditor.keyPress(event);" onblur="TitleEditor.end(true);"/>
+							</deck>
+							<checkbox label="&subscription.enabled.label;" class="tabable" tabindex="-1"
+								checked="{subscription.disabled ? 'false' : 'true'}" oncommand="SubscriptionActions.setDisabled(this, !this.checked);"/>
+						</hbox>
+						<hbox align="center">
+							<description flex="1" class="status">
+								<description value="&subscription.lastDownload.label;"/>
+								<description value=" "/>
+								<if condition="{downloading}">
+									<description value="&subscription.lastDownload.inProgress;"/>
+								<elif condition="{!subscription.lastDownload}"/>
+									<description value="&subscription.lastDownload.unknown;"/>
+								<else/>
+									<description value="{formatTime(subscription.lastDownload * 1000)}"/>
+									<description value=" "/>
+									<if condition="{subscription.downloadStatus}">
+										<hbox>
+											<description value=" ("/>
+											<if condition="{subscription.downloadStatus == 'synchronize_invalid_url'}">
+												<description value="&subscription.lastDownload.invalidURL;"/>
+											<elif condition="{subscription.downloadStatus == 'synchronize_connection_error'}"/>
+												<description value="&subscription.lastDownload.connectionError;"/>
+											<elif condition="{subscription.downloadStatus == 'synchronize_invalid_data'}"/>
+												<description value="&subscription.lastDownload.invalidData;"/>
+											<elif condition="{subscription.downloadStatus == 'synchronize_checksum_mismatch'}"/>
+												<description value="&subscription.lastDownload.checksumMismatch;"/>
+											<else/>   <!-- synchronize_ok -->
+												<description value="&subscription.lastDownload.success;"/>
+											</if>
+											<description value=")"/>
+										</hbox>
+									</if>
+								</if>
+							</description>
+							<spacer flex="1"/>
+							<button class="actionButton tabable" type="menu" label="&subscription.actions.label;" tabindex="-1">
+								<menupopup class="actionMenu">
+									<menuitem label="&subscription.editTitle.label;" key="edit-key" command="subscription-editTitle-command"/>
+									<menuitem label="&subscription.update.label;" key="subscription-update-key" command="subscription-update-command"/>
+									<menuitem label="&subscription.showHideFilters.label;" key="subscription-showHideFilters-key" command="subscription-showHideFilters-command"/>
+									<menuitem label="&subscription.delete.label;…" key="delete-key" command="subscription-delete-command"/>
+									<menuseparator/>
+									<menuitem label="&subscription.moveUp.label;" key="moveUp-key" command="subscription-moveUp-command"/>
+									<menuitem label="&subscription.moveDown.label;" key="moveDown-key" command="subscription-moveDown-command"/>
+								</menupopup>
+							</button>
+						</hbox>
+						<description class="warning" hidden="{!subscription.upgradeRequired}">&subscription.minVersion.warning;</description>
+						<description class="warning" hidden="{!disabledFilters}">
+							&subscription.disabledFilters.warning;
+							<description class="text-link" value="&subscription.disabledFilters.enable;" onclick="SubscriptionActions.enableFilters(this);"/>
+						</description>
+					</vbox>
+				</richlistitem>
+
+				<deck id="noSubscriptionsDeck" flex="1">
+					<description flex="1">&noSubscriptions.text;</description>
+					<richlistbox id="subscriptions" class="initialFocus" flex="1"
+							onselect="onSelectionChange(this);"
+							ondragover="SubscriptionActions.dragOver(event);"
+							ondrop="SubscriptionActions.drop(event, null);"
+							onkeypress="SubscriptionActions.keyPress(event);">
+					</richlistbox>
+				</deck>
+
+				<hbox align="baseline">
+					<checkbox id="acceptableAds" label="&acceptableAds.label;" accesskey="&acceptableAds.accesskey;" oncommand="ListManager.allowAcceptableAds(this.checked);"/>
+					<label class="text-link" value="&readMore.label;" onclick="Utils.loadDocLink('acceptable_ads');"/>
+				</hbox>
+			</tabpanel>
+			<tabpanel id="filtersTab" orient="vertical" flex="1">
+				<hbox pack="end">
+					<button id="addGroupButton" label="&addGroup.label;" accesskey="&addGroup.accesskey;" command="group-add-command"/>
+				</hbox>
+
+				<richlistitem id="groupTemplate" class="subscription" hidden="true" orient="vertical"
+						onmousedown="this._wasSelected = (this.parentNode.selectedItem == this);"
+						ondragstart="SubscriptionActions.startDrag(event, this);"
+						ondragend="SubscriptionActions.endDrag();"
+						ondragover="SubscriptionActions.dragOver(event);"
+						ondrop="SubscriptionActions.drop(event, this);"
+						oncontextmenu="SubscriptionActions.openMenu(event, this);">
+					<vbox class="{subscription.disabled ? 'disabled' : ''}">
+						<hbox align="center">
+							<deck class="titleBox" flex="1" selectedIndex="0" onselect="event.stopPropagation();">
+								<description value="{subscription.title}" crop="end" ondblclick="if (event.button == 0) TitleEditor.start(this, true);"/>
+								<textbox oncontextmenu="event.stopPropagation();" class="titleEditor" onkeypress="TitleEditor.keyPress(event);" onblur="TitleEditor.end(true);"/>
+							</deck>
+							<checkbox label="&subscription.enabled.label;" class="tabable" tabindex="-1"
+								checked="{subscription.disabled ? 'false' : 'true'}" oncommand="SubscriptionActions.setDisabled(this, !this.checked);"/>
+							<button class="actionButton tabable" type="menu" label="&subscription.actions.label;" tabindex="-1">
+								<menupopup class="actionMenu">
+									<menuitem label="&subscription.editTitle.label;" key="edit-key" command="subscription-editTitle-command"/>
+									<menuitem label="&subscription.showHideFilters.label;" key="subscription-showHideFilters-key" command="subscription-showHideFilters-command"/>
+									<menuitem label="&subscription.delete.label;…" key="delete-key" command="subscription-delete-command"/>
+									<menuseparator/>
+									<menuitem label="&subscription.moveUp.label;" key="moveUp-key" command="subscription-moveUp-command"/>
+									<menuitem label="&subscription.moveDown.label;" key="moveDown-key" command="subscription-moveDown-command"/>
+								</menupopup>
+							</button>
+						</hbox>
+					</vbox>
+				</richlistitem>
+
+				<deck id="noFiltersDeck" flex="1">
+					<description flex="1">&noFilters.text;</description>
+					<richlistbox id="groups" class="initialFocus" flex="1"
+							onselect="onSelectionChange(this);"
+							ondragover="SubscriptionActions.dragOver(event);"
+							ondrop="SubscriptionActions.drop(event, null);"
+							onkeypress="SubscriptionActions.keyPress(event);">
+					</richlistbox>
+				</deck>
+			</tabpanel>
+		</tabpanels>
+	</tabbox>
+
+	<splitter id="filtersSplitter" persist="state" orient="horizontal" collapse="after" state="collapsed" oncommand="FilterView.refresh();onSplitterStateChange(this);">
+		<grippy id="filtersGrippy"/>
+	</splitter>
+
+	<vbox id="filtersContainer" persist="width height" width="500">
+		<hbox pack="end">
+			<button id="findButton" label="&find.label;" accesskey="&find.accesskey;" command="find-command"/>
+			<button id="filterActionButton" type="menu" label="&filter.actions.label;">
+				<menupopup id="filterActionMenu" onpopupshowing="FilterActions.fillActionsPopup();">
+					<menuitem label="&filter.edit.label;" key="edit-key" command="filters-edit-command"/>
+					<menuitem label="&filter.cut.label;" key="filters-cut-key" command="filters-cut-command"/>
+					<menuitem label="&filter.copy.label;" key="filters-copy-key" command="filters-copy-command"/>
+					<menuitem label="&filter.paste.label;" key="filters-paste-key" command="filters-paste-command"/>
+					<menuitem label="&filter.delete.label;" key="delete-key" command="filters-delete-command"/>
+					<menuseparator/>
+					<menuitem label="&filter.selectAll.label;" key="filters-selectAll-key" command="filters-selectAll-command"/>
+					<menuitem label="&filter.resetHitCounts.label;" command="filters-resetHitCounts-command"/>
+					<menuseparator/>
+					<menuitem label="&filter.moveUp.label;" key="moveUp-key" command="filters-moveUp-command"/>
+					<menuitem label="&filter.moveDown.label;" key="moveDown-key" command="filters-moveDown-command"/>
+					<menuseparator/>
+					<menu id="viewMenu" label="&viewMenu.label;"/>
+				</menupopup>
+			</button>
+			<button id="addFilterButton" label="&addFilter.label;" accesskey="&addFilter.accesskey;" command="filters-add-command"/>
+		</hbox>
+		<tree id="filtersTree"
+				flex="1"
+				editable="true"
+				seltype="multiple"
+				enableColumnDrag="true"
+				hidecolumnpicker="true"
+				_removewarning="&filters.remove.warning;">
+			<treecols context="filters-view-menu1">
+				<treecol id="col-filter" label="&filter.column;" flex="10" persist="width ordinal sortDirection hidden"/>
+				<splitter class="tree-splitter"/>
+				<treecol id="col-slow" label="!" display="&slow.column;" tooltiptext="&slow.column;" flex="0" width="16" persist="width ordinal sortDirection hidden"/>
+				<splitter class="tree-splitter"/>
+				<treecol id="col-enabled" label="&enabled.column;" cycler="true" flex="0" persist="width ordinal sortDirection hidden"/>
+				<splitter class="tree-splitter"/>
+				<treecol id="col-hitcount" label="&hitcount.column;" flex="0" persist="width ordinal sortDirection hidden"/>
+				<splitter class="tree-splitter"/>
+				<treecol id="col-lasthit" label="&lasthit.column;" hidden="true" flex="4" persist="width ordinal sortDirection hidden"/>
+			</treecols>
+
+			<treechildren id="filtersTreeChildren"
+					oncontextmenu="E('filterActionMenu').openPopupAtScreen(event.screenX, event.screenY, true);"
+					tooltip="filtersTooltip"
+					noGroupText="&noGroupSelected.text;"
+					noFiltersText="&noFiltersInGroup.text;"
+					ondragstart="FilterActions.startDrag(event);"
+					ondragend="FilterActions.endDrag(event);"/>
+		</tree>
+	</vbox>
+</hbox>
+
+<findbar id="findbar"/>
+
+<hbox id="buttons">
+	<button id="backupButton" type="menu"
+			label="&backupButton.label;" accesskey="&backupButton.accesskey;"
+			_backupDialogTitle="&backup.label;" _restoreDialogTitle="&restore.own.label;"
+			_fileFilterComplete="&backup.complete.title;" _fileFilterCustom="&backup.custom.title;"
+			_backupError="&backup.error;" _restoreError="&restore.error;"
+			_restoreCompleteWarning="&restore.complete.warning;" _restoreCustomWarning="&restore.custom.warning;"
+			_restoreVersionWarning="&restore.minVersion.warning;"
+			oncommand="if (event.target == this) Utils.runAsync(function() this.open = true, this);">
+		<menupopup onpopupshowing="Backup.fillRestorePopup();">
+			<menuitem id="backup" key="backup-key" label="&backup.label;…" oncommand="Backup.backupToFile();"/>
+			<menuseparator/>
+			<menuitem id="restoreBackupTemplate" label="&restore.default.label;" hidden="true"/>
+			<menuitem id="restoreOwnBackup" key="restore-key" label="&restore.own.label;…" oncommand="Backup.restoreFromFile();"/>
+		</menupopup>
+	</button>
+
+	<spacer flex="1"/>
+
+	<button id="close" dlgtype="accept" label="&close.label;"/>
+</hbox>
+
+</dialog>
diff --git a/chrome/adblockplus.jar!/content/ui/findbar.js b/chrome/adblockplus.jar!/content/ui/findbar.js
deleted file mode 100644
index 16b657f..0000000
--- a/chrome/adblockplus.jar!/content/ui/findbar.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Adblock Plus.
- *
- * The Initial Developer of the Original Code is
- * Wladimir Palant.
- * Portions created by the Initial Developer are Copyright (C) 2006-2011
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * ***** END LICENSE BLOCK ***** */
-
-/**
- * Fake browser implementation to make findbar widget happy - searches in
- * the filter list.
- */
-let fastFindBrowser =
-{
-	fastFind: {
-		searchString: null,
-		foundLink: null,
-		foundEditable: null,
-		caseSensitive: false,
-		get currentWindow() { return fastFindBrowser.contentWindow; },
-
-		find: function(searchString, linksOnly)
-		{
-			this.searchString = searchString;
-			return treeView.find(this.searchString, 0, false, this.caseSensitive);
-		},
-
-		findAgain: function(findBackwards, linksOnly)
-		{
-			return treeView.find(this.searchString, findBackwards ? -1 : 1, false, this.caseSensitive);
-		},
-
-		// Irrelevant for us
-		init: function() {},
-		setDocShell: function() {},
-		setSelectionModeAndRepaint: function() {},
-		collapseSelection: function() {}
-	},
-	currentURI: Utils.makeURI("http://example.com/"),
-	contentWindow: {
-		focus: function()
-		{
-			E("list").focus();
-		},
-		scrollByLines: function(num)
-		{
-			E("list").boxObject.scrollByLines(num);
-		},
-		scrollByPages: function(num)
-		{
-			E("list").boxObject.scrollByPages(num);
-		},
-	},
-
-	addEventListener: function(event, handler, capture)
-	{
-		E("list").addEventListener(event, handler, capture);
-	},
-	removeEventListener: function(event, handler, capture)
-	{
-		E("list").addEventListener(event, handler, capture);
-	},
-}
diff --git a/chrome/adblockplus.jar!/content/ui/firefoxOverlay.xul b/chrome/adblockplus.jar!/content/ui/firefoxOverlay.xul
index 965b899..a49975f 100644
--- a/chrome/adblockplus.jar!/content/ui/firefoxOverlay.xul
+++ b/chrome/adblockplus.jar!/content/ui/firefoxOverlay.xul
@@ -43,7 +43,7 @@
 			getToolbox="return this.E('navigator-toolbox')"
 			getDefaultToolbar="return this.E('addon-bar') || this.E('nav-bar');"
 			toolbarInsertBefore="return this.E('addonbar-closebutton');"
-			unhideToolbar="return this.E('addon-bar')"/>
+			hasAddonBar="return this.E('addon-bar')"/>
 	</window>
 
 	<!-- Songbird window -->
@@ -72,12 +72,7 @@
 
 	<!-- Tools menu -->
 	<menupopup id="menu_ToolsPopup">
-		<menuitem id="abp-menuitem" insertafter="javascriptConsole"/>
-	</menupopup>
-
-	<!-- View menu -->
-	<menupopup id="menu_viewPopup">
-		<menuitem id="abp-blockableitems" insertafter="viewSidebarMenuMenu"/>
+		<menu id="abp-menuitem"/>
 	</menupopup>
 
 	<!-- Context menu -->
diff --git a/chrome/adblockplus.jar!/content/ui/firstRun.js b/chrome/adblockplus.jar!/content/ui/firstRun.js
new file mode 100644
index 0000000..62bb7ec
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/firstRun.js
@@ -0,0 +1,92 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function init()
+{
+
+	if (Utils.isFennec)
+	{
+		let topWnd = window.QueryInterface(Ci.nsIInterfaceRequestor)
+											 .getInterface(Ci.nsIWebNavigation)
+											 .QueryInterface(Ci.nsIDocShellTreeItem)
+											 .rootTreeItem
+											 .QueryInterface(Ci.nsIInterfaceRequestor)
+											 .getInterface(Ci.nsIDOMWindow);
+		if (topWnd.wrappedJSObject)
+			topWnd = topWnd.wrappedJSObject;
+
+		// window.close() closes the entire window (bug 642604), make sure to close
+		// only a single tab instead.
+		if ("BrowserUI" in topWnd)
+		{
+			window.close = function()
+			{
+				topWnd.BrowserUI.closeTab();
+			};
+		}
+	}
+
+	generateLinkText(E("changeDescription"));
+
+	for each (let subscription in FilterStorage.subscriptions)
+	{
+		if (subscription instanceof DownloadableSubscription && subscription.url != Prefs.subscriptions_exceptionsurl)
+		{
+			E("listName").textContent = subscription.title;
+
+			let link = E("listHomepage");
+			link.setAttribute("_url", subscription.homepage);
+			link.setAttribute("tooltiptext", subscription.homepage);
+
+			E("listNameContainer").hidden = false;
+			E("listNone").hidden = true;
+			break;
+		}
+	}
+
+	if (FilterStorage.subscriptions.some(function(s) s.url == Prefs.subscriptions_exceptionsurl))
+		E("acceptableAds").hidden = false;
+}
+
+function generateLinkText(element)
+{
+	let template = element.getAttribute("_textTemplate");
+
+	let beforeLink, linkText, afterLink;
+	if (/(.*)\[link\](.*)\[\/link\](.*)/.test(template))
+		[beforeLink, linkText, afterLink] = [RegExp.$1, RegExp.$2, RegExp.$3];
+	else
+		[beforeLink, linkText, afterLink] = ["", template, ""];
+
+	while (element.firstChild && element.firstChild.nodeType != Node.ELEMENT_NODE)
+		element.removeChild(element.firstChild);
+	while (element.lastChild && element.lastChild.nodeType != Node.ELEMENT_NODE)
+		element.removeChild(element.lastChild);
+	if (!element.firstChild)
+		return;
+
+	element.firstChild.textContent = linkText;
+	element.insertBefore(document.createTextNode(beforeLink), element.firstChild);
+	element.appendChild(document.createTextNode(afterLink));
+}
diff --git a/chrome/adblockplus.jar!/content/ui/firstRun.xul b/chrome/adblockplus.jar!/content/ui/firstRun.xul
new file mode 100644
index 0000000..e55a0d1
--- /dev/null
+++ b/chrome/adblockplus.jar!/content/ui/firstRun.xul
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+	 - Version: MPL 1.1
+	 -
+	 - The contents of this file are subject to the Mozilla Public License Version
+	 - 1.1 (the "License"); you may not use this file except in compliance with
+	 - the License. You may obtain a copy of the License at
+	 - http://www.mozilla.org/MPL/
+	 -
+	 - Software distributed under the License is distributed on an "AS IS" basis,
+	 - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+	 - for the specific language governing rights and limitations under the
+	 - License.
+	 -
+	 - The Original Code is Adblock Plus.
+	 -
+	 - The Initial Developer of the Original Code is
+	 - Wladimir Palant.
+	 - Portions created by the Initial Developer are Copyright (C) 2006-2011
+	 - the Initial Developer. All Rights Reserved.
+	 -
+	 - Contributor(s):
+	 -
+	 - ***** END LICENSE BLOCK ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://adblockplus/skin/firstRun.css" type="text/css"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://adblockplus/locale/firstRun.dtd">
+
+<dialog
+	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+	buttons="accept"
+	title="&dialog.title;"
+	id="abpFirstRun"
+	windowtype="abp:firstRun"
+	onload="init()">
+
+	<script type="application/x-javascript;version=1.7" src="utils.js"/>
+	<script type="application/x-javascript;version=1.7" src="firstRun.js"/>
+
+	<description>&confirmation;</description>
+
+	<vbox class="sectionContainer">
+		<description class="sectionTitle">&advancedSection;</description>
+
+		<description>&listSelection1;</description>
+
+		<vbox id="listNameContainer" hidden="true">
+			<description id="listName"/>
+			<label class="text-link" id="listHomepage" value="&visitHomepage.label;" onclick="Utils.loadInBrowser(this.getAttribute('_url'))"/>
+		</vbox>
+		<description id="listNone">&noList;</description>
+
+		<description id="acceptableAds" hidden="true">
+			&acceptableAds;
+			<label class="text-link" value="&readMore.label;" onclick="Utils.loadDocLink('acceptable_ads');"/>
+		</description>
+	</vbox>
+
+	<description id="changeDescription" _textTemplate="&listSelection2;">
+		<label class="text-link" onclick="Utils.openFiltersDialog();"/>
+	</description>
+
+</dialog>
diff --git a/chrome/adblockplus.jar!/content/ui/mailOverlay.xul b/chrome/adblockplus.jar!/content/ui/mailOverlay.xul
index e7bd449..f845373 100644
--- a/chrome/adblockplus.jar!/content/ui/mailOverlay.xul
+++ b/chrome/adblockplus.jar!/content/ui/mailOverlay.xul
@@ -52,7 +52,7 @@
 
 	<!-- Tools menu -->
 	<menupopup id="taskPopup">
-		<menuitem id="abp-menuitem" insertafter="downloadmgr,javaScriptConsole"/>
+		<menu id="abp-menuitem" insertafter="downloadmgr,javaScriptConsole"/>
 	</menupopup>
 
 	<!-- Context menu -->
diff --git a/chrome/adblockplus.jar!/content/ui/overlayGeneral.xul b/chrome/adblockplus.jar!/content/ui/overlayGeneral.xul
index 801dcc8..fcacb31 100644
--- a/chrome/adblockplus.jar!/content/ui/overlayGeneral.xul
+++ b/chrome/adblockplus.jar!/content/ui/overlayGeneral.xul
@@ -26,12 +26,7 @@
 
 <?xml-stylesheet href="chrome://adblockplus/skin/overlay.css" type="text/css"?>
 
-<!DOCTYPE overlay [
-<!ENTITY % overlayDTD SYSTEM "chrome://adblockplus/locale/overlay.dtd">
-%overlayDTD;
-<!ENTITY % settingsDTD SYSTEM "chrome://adblockplus/locale/settings.dtd">
-%settingsDTD;
-]>
+<!DOCTYPE overlay SYSTEM "chrome://adblockplus/locale/overlay.dtd">
 
 <overlay id="abp-overlay-general" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 	<script type="application/x-javascript;version=1.7" src="overlay.js"/>  
@@ -50,11 +45,11 @@
 		</tooltip>
 
 		<!-- Icon's context menu -->
-		<menupopup id="abp-status-popup">
+		<menupopup id="abp-status-popup" context="">
 			<menuitem id="abp-status-sendReport" label="&sendReport.label;…" accesskey="&sendReport.accesskey;" key="abp-key-sendReport" command="abp-command-sendReport"/>
 			<menuitem id="abp-status-opensidebar" label="&opensidebar.label;" accesskey="&opensidebar.accesskey;" key="abp-key-sidebar" command="abp-command-sidebar"/>
 			<menuitem id="abp-status-closesidebar" label="&closesidebar.label;" accesskey="&closesidebar.accesskey;" key="abp-key-sidebar" command="abp-command-sidebar"/>
-			<menuitem id="abp-status-settings" label="&settings.label;…" accesskey="&settings.accesskey;" key="abp-key-settings" command="abp-command-settings"/>
+			<menuitem id="abp-status-filters" label="&filters.label;…" accesskey="&filters.accesskey;" key="abp-key-filters" command="abp-command-filters"/>
 			<menuseparator id="abp-status-whitelist-sep"/>
 			<menuitem id="abp-status-whitelistsite" labeltempl="&whitelist.site.label;" type="checkbox" command="abp-command-togglesitewhitelist"/>
 			<menuitem id="abp-status-whitelistpage" label="&whitelist.page.label;" type="checkbox" command="abp-command-togglepagewhitelist"/>
@@ -63,17 +58,19 @@
 			<menu id="abp-status-options" label="&options.label;" accesskey="&options.accesskey;">
 				<menupopup id="abp-status-options-popup">
 					<menuitem id="abp-status-frameobjects" label="&objecttabs.label;" accesskey="&objecttabs.accesskey;" type="checkbox" command="abp-command-toggleobjtabs"/>
-					<menuitem id="abp-status-slowcollapse" label="&collapse.label;" accesskey="&collapse.accesskey;" type="checkbox" command="abp-command-togglecollapse"/>
+					<menuitem id="abp-status-slowcollapse" label="&hideplaceholders.label;" accesskey="&hideplaceholders.accesskey;" type="checkbox" command="abp-command-togglecollapse"/>
+					<menuitem id="abp-status-savestats" label="&counthits.label;" accesskey="&counthits.accesskey;" type="checkbox" command="abp-command-togglesavestats"/>
 					<menuitem id="abp-status-sync" label="&sync.label;" accesskey="&sync.accesskey;" type="checkbox" command="abp-command-togglesync"/>
-					<menuseparator/>
+					<menuseparator id="abp-status-iconSettingsSeparator"/>
+					<menuitem id="abp-status-showinaddonbar" label="&showinaddonbar.label;" accesskey="&showinaddonbar.accesskey;" type="checkbox" command="abp-command-toggleshowintoolbar"/>
 					<menuitem id="abp-status-showintoolbar" label="&showintoolbar.label;" accesskey="&showintoolbar.accesskey;" type="checkbox" command="abp-command-toggleshowintoolbar"/>
 					<menuitem id="abp-status-showinstatusbar" label="&showinstatusbar.label;" accesskey="&showinstatusbar.accesskey;" type="checkbox" command="abp-command-toggleshowinstatusbar"/>
 				</menupopup>
 			</menu>
 
-			<hbox class="abp-recommendbutton" id="abp-status-recommendbutton" pack="center">
-				<button class="abp-recommendbutton-btn" label="&recommend.label;" command="abp-command-recommend" flex="1"/>
-				<toolbarbutton class="abp-recommendbutton-close" command="abp-command-recommend-hide"/>
+			<hbox class="abp-contributebutton" id="abp-status-contributebutton" pack="center" persist="hidden">
+				<button class="abp-contributebutton-btn" label="&contribute.label;" command="abp-command-contribute" flex="1"/>
+				<toolbarbutton class="abp-contributebutton-close" command="abp-command-contribute-hide"/>
 			</hbox>
 		</menupopup>
 	</popupset>
@@ -81,18 +78,20 @@
 	<commandset id="abp-commandset">
 		<!-- Dummy oncommand attributes are work-arounds for bug 371900 -->
 		<command id="abp-command-sendReport" oncommand="//"/>
+		<command id="abp-command-filters" oncommand="//"/>
 		<command id="abp-command-settings" oncommand="//"/>
 		<command id="abp-command-sidebar" oncommand="//"/>
 		<command id="abp-command-togglesitewhitelist"/>
 		<command id="abp-command-togglepagewhitelist"/>
 		<command id="abp-command-toggleobjtabs"/>
 		<command id="abp-command-togglecollapse"/>
+		<command id="abp-command-togglesavestats"/>
 		<command id="abp-command-togglesync"/>
 		<command id="abp-command-toggleshowintoolbar"/>
 		<command id="abp-command-toggleshowinstatusbar"/>
 		<command id="abp-command-enable" oncommand="//"/>
-		<command id="abp-command-recommend"/>
-		<command id="abp-command-recommend-hide"/>
+		<command id="abp-command-contribute"/>
+		<command id="abp-command-contribute-hide"/>
 	</commandset>
 
 	<statusbarpanel id="abp-status" class="statusbarpanel-iconic"
@@ -104,10 +103,7 @@
 	<box id="abp-hooks" objtabtext="&objecttab.title;…" objtabtooltip="&objecttab.tooltip;"/>
 
 	<!-- Tools menu -->
-	<menuitem id="abp-menuitem" label="&menuitem.label;…" accesskey="&menuitem.accesskey;" key="abp-key-settings" command="abp-command-settings"/>
-
-	<!-- View menu -->
-	<menuitem id="abp-blockableitems" label="&view.blockableItems.label;" type="checkbox" autocheck="false" key="abp-key-sidebar" command="abp-command-sidebar"/>
+	<menu id="abp-menuitem" label="&toolbarbutton.label;"/>
 
 	<!-- Context menu -->
 	<menuitem id="abp-image-menuitem" label="&context.image.label;…" hidden="true"/>
diff --git a/chrome/adblockplus.jar!/content/ui/prismOverlay.xul b/chrome/adblockplus.jar!/content/ui/prismOverlay.xul
deleted file mode 100644
index 7e8bd58..0000000
--- a/chrome/adblockplus.jar!/content/ui/prismOverlay.xul
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- ***** BEGIN LICENSE BLOCK *****
-	 - Version: MPL 1.1
-	 -
-	 - The contents of this file are subject to the Mozilla Public License Version
-	 - 1.1 (the "License"); you may not use this file except in compliance with
-	 - the License. You may obtain a copy of the License at
-	 - http://www.mozilla.org/MPL/
-	 -
-	 - Software distributed under the License is distributed on an "AS IS" basis,
-	 - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-	 - for the specific language governing rights and limitations under the
-	 - License.
-	 -
-	 - The Original Code is Adblock Plus.
-	 -
-	 - The Initial Developer of the Original Code is
-	 - Wladimir Palant.
-	 - Portions created by the Initial Developer are Copyright (C) 2008
-	 - the Initial Developer. All Rights Reserved.
-	 -
-	 - Contributor(s):
-	 -
-	 - ***** END LICENSE BLOCK ***** -->
-
-<?xul-overlay href="chrome://adblockplus/content/ui/overlayGeneral.xul"?>
-
-<overlay id="abp-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-	<!-- Window extensions -->
-	<window id="webrunner">
-		<popupset id="abp-popupset"/>
-		<keyset id="abp-keyset"/>
-		<commandset id="abp-commandset"/>
-		<box id="abp-hooks" getBrowser="return this.E('browser_content');"
-			getContextMenu="return this.E('popup_content');"/>
-	</window>
-
-	<!-- Status bar -->
-	<statusbar id="statusbar">
-		<statusbarpanel id="abp-status" mousethrough="never" insertbefore="button_commands"/>
-	</statusbar>
-
-	<!-- Tools menu -->
-	<menupopup id="popup_tools">
-		<menuitem id="abp-menuitem" insertbefore="menuitem_console"/>
-	</menupopup>
-
-	<!-- Context menu -->
-	<menupopup id="popup_content"> 
-		<menuitem id="abp-image-menuitem"/>
-		<menuitem id="abp-object-menuitem"/>
-		<menuitem id="abp-media-menuitem"/>
-		<menuitem id="abp-frame-menuitem"/>
-		<menuitem id="abp-removeWhitelist-menuitem"/>
-	</menupopup>
-
-	<!-- Fake sidebar -->
-	<vbox id="box_content">
-		<splitter id="abp-sidebar-splitter"/>
-		<vbox id="abp-sidebar"/>
-	</vbox>
-</overlay>
diff --git a/chrome/adblockplus.jar!/content/ui/seamonkeyOverlay.xul b/chrome/adblockplus.jar!/content/ui/seamonkeyOverlay.xul
index b26543f..a558c36 100644
--- a/chrome/adblockplus.jar!/content/ui/seamonkeyOverlay.xul
+++ b/chrome/adblockplus.jar!/content/ui/seamonkeyOverlay.xul
@@ -37,10 +37,8 @@
 			addTab="
 				if (arguments[1] && 'openNewTabWith' in this.window)
 					this.window.openNewTabWith(arguments[0], this.window.content.document, arguments[1].shiftKey);
-				else if ('loadOneTab' in this.window.gBrowser)  /* SeaMonkey 2.1 */
-					this.window.gBrowser.loadOneTab(arguments[0], {inBackground: false});
-				else  /* SeaMonkey 2.0 */
-					this.window.gBrowser.addTab(arguments[0], null, null, true);"
+				else
+					this.window.gBrowser.loadOneTab(arguments[0], {inBackground: false});"
 			getContextMenu="return this.E('contentAreaContextMenu');"
 			getToolbox="return this.E('navigator-toolbox')"
 			getDefaultToolbar="return this.E('PersonalToolbar');"  toolbarInsertBefore="return this.E('bookmarks-button');"/>
@@ -59,12 +57,7 @@
 
 	<!-- Tools menu -->
 	<menupopup id="taskPopup">
-		<menuitem id="abp-menuitem" insertafter="downloadmgr"/>
-	</menupopup>
-
-	<!-- View menu -->
-	<menupopup id="view_toolbars_popup">
-		<menuitem id="abp-blockableitems" insertafter="sidebar-menu"/>
+		<menu id="abp-menuitem" insertafter="downloadmgr"/>
 	</menupopup>
 
 	<!-- Context menu -->
diff --git a/chrome/adblockplus.jar!/content/ui/sendReport.js b/chrome/adblockplus.jar!/content/ui/sendReport.js
index 21b286a..d864cb9 100644
--- a/chrome/adblockplus.jar!/content/ui/sendReport.js
+++ b/chrome/adblockplus.jar!/content/ui/sendReport.js
@@ -50,7 +50,6 @@ let reportData =
 
 let reportsListDataSource =
 {
-	json: Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON),
 	list: [],
 
 	collectData: function(wnd, windowURI, callback)
@@ -58,7 +57,7 @@ let reportsListDataSource =
 		let data = null;
 		try
 		{
-			data = this.json.decode(Prefs.recentReports);
+			data = JSON.parse(Prefs.recentReports);
 		}
 		catch (e)
 		{
@@ -120,7 +119,7 @@ let reportsListDataSource =
 		this.list.unshift({site: site, reportURL: reportURL, time: Date.now()});
 		try
 		{
-			Prefs.recentReports = this.json.encode(this.list);
+			Prefs.recentReports = JSON.stringify(this.list);
 		}
 		catch (e)
 		{
@@ -131,7 +130,7 @@ let reportsListDataSource =
 	clear: function()
 	{
 		this.list = [];
-		Prefs.recentReports = this.json.encode(this.list);
+		Prefs.recentReports = JSON.stringify(this.list);
 		E("recentReports").hidden = true;
 	},
 
@@ -224,7 +223,7 @@ let filtersDataSource =
 			{
 				let filter = Filter.fromText(f)
 				let hitCount = wndStats.filters[f];
-				filters.appendChild(<filter text={filter.text} subscriptions={filter.subscriptions.filter(function(s) !s.disabled).map(function(s) s.url).join(" ")} hitCount={hitCount}/>);
+				filters.appendChild(<filter text={filter.text} subscriptions={filter.subscriptions.filter(subscriptionsDataSource.subscriptionFilter).map(function(s) s.url).join(" ")} hitCount={hitCount}/>);
 				this.origFilters.push(filter);
 			}
 		}
@@ -234,6 +233,15 @@ let filtersDataSource =
 
 let subscriptionsDataSource =
 {
+	subscriptionFilter: function(s)
+	{
+		if (s.disabled || !(s instanceof RegularSubscription))
+			return false;
+		if (s instanceof DownloadableSubscription && !/^(http|https|ftp):/i.test(s.url))
+			return false;
+		return true;
+	},
+
 	collectData: function(wnd, windowURI, callback)
 	{
 		let subscriptions = reportData.subscriptions;
@@ -241,7 +249,7 @@ let subscriptionsDataSource =
 		for (let i = 0; i < FilterStorage.subscriptions.length; i++)
 		{
 			let subscription = FilterStorage.subscriptions[i];
-			if (subscription.disabled || !(subscription instanceof RegularSubscription))
+			if (!this.subscriptionFilter(subscription))
 				continue;
 
 			let subscriptionXML = <subscription id={subscription.url} disabledFilters={subscription.filters.filter(function(filter) filter instanceof ActiveFilter && filter.disabled).length}/>;
@@ -255,7 +263,6 @@ let subscriptionsDataSource =
 					subscriptionXML. at softExpiration = subscription.softExpiration - now;
 				if (subscription.expires)
 					subscriptionXML. at hardExpiration = subscription.expires - now;
-				subscriptionXML. at autoDownloadEnabled = subscription.autoDownload;
 				subscriptionXML. at downloadStatus = subscription.downloadStatus;
 			}
 			subscriptions.appendChild(subscriptionXML);
@@ -696,9 +703,17 @@ let issuesDataSource =
 	disabledFilters: [],
 	disabledSubscriptions: [],
 	ownFilters: [],
-	numSubscriptions: FilterStorage.subscriptions.filter(function(subscription) subscription instanceof DownloadableSubscription && !subscription.disabled).length,
+	numSubscriptions: 0,
 	numAppliedFilters: Infinity,
 
+	subscriptionFilter: function(s)
+	{
+		if (s instanceof DownloadableSubscription)
+			return subscriptionsDataSource.subscriptionFilter(s);
+		else
+			return false;
+	},
+
 	collectData: function(wnd, windowURI, callback)
 	{
 		this.contentWnd = wnd;
@@ -759,6 +774,7 @@ let issuesDataSource =
 				}
 			}
 
+			this.numSubscriptions = FilterStorage.subscriptions.filter(this.subscriptionFilter).length;
 			this.numAppliedFilters = 0;
 			for each (let filter in filtersDataSource.origFilters)
 			{
@@ -885,11 +901,8 @@ let issuesDataSource =
 
 	removeWhitelist: function()
 	{
-		if (this.whitelistFilter && this.whitelistFilter.subscriptions.length && !this.whitelistFilter.disabled)
-		{
+		if (this.whitelistFilter && this.whitelistFilter.subscriptions.length)
 			this.whitelistFilter.disabled = true;
-			FilterStorage.triggerObservers("filters disable", [this.whitelistFilter]);
-		}
 		E("issuesWhitelistBox").hidden = true;
 		this.forceReload();
 	},
@@ -920,21 +933,12 @@ let issuesDataSource =
 		
 			FilterStorage.addSubscription(subscription);
 
-			if (subscription.disabled)
-			{
-				subscription.disabled = false;
-				FilterStorage.triggerObservers("subscriptions enable", [subscription]);
-			}
-
+			subscription.disabled = false;
 			subscription.title = title;
-			if (subscription instanceof DownloadableSubscription)
-				subscription.autoDownload = result.autoDownload;
-			FilterStorage.triggerObservers("subscriptions updateinfo", [subscription]);
 		
 			if (subscription instanceof DownloadableSubscription && !subscription.lastDownload)
 				Synchronizer.execute(subscription);
 		}
-		FilterStorage.saveToDisk();
 
 		E("issuesNoSubscriptionsBox").hidden = true;
 		this.forceReload();
@@ -943,11 +947,8 @@ let issuesDataSource =
 	disableFilter: function(node)
 	{
 		let filter = node.abpFilter;
-		if (filter && filter.subscriptions.length && !filter.disabled)
-		{
+		if (filter && filter.subscriptions.length)
 			filter.disabled = true;
-			FilterStorage.triggerObservers("filters disable", [filter]);
-		}
 
 		node.parentNode.removeChild(node);
 		if (!E("issuesOwnFilters").firstChild)
@@ -958,11 +959,8 @@ let issuesDataSource =
 	enableFilter: function(node)
 	{
 		let filter = node.abpFilter;
-		if (filter && filter.subscriptions.length && filter.disabled)
-		{
+		if (filter && filter.subscriptions.length)
 			filter.disabled = false;
-			FilterStorage.triggerObservers("filters enable", [filter]);
-		}
 
 		node.parentNode.removeChild(node);
 		if (!E("issuesDisabledFilters").firstChild)
@@ -974,11 +972,8 @@ let issuesDataSource =
 	enableSubscription: function(node)
 	{
 		let subscription = node.abpSubscription;
-		if (subscription && subscription.disabled)
-		{
+		if (subscription)
 			subscription.disabled = false;
-			FilterStorage.triggerObservers("subscriptions enable", [subscription]);
-		}
 
 		node.parentNode.removeChild(node);
 		if (!E("issuesDisabledSubscriptions").firstChild)
@@ -1252,7 +1247,7 @@ function reportSent(event)
 {
 	let request = event.target;
 	let success = false;
-	let errorMessage = Utils.getString("synchronize_connection_error");
+	let errorMessage = E("sendReportError").getAttribute("defaultError");
 	try
 	{
 		let status = request.channel.status;
@@ -1358,8 +1353,7 @@ function processLinkClick(event)
 
 function copyLink(url)
 {
-	let clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
-	clipboardHelper.copyString(url);
+	Utils.clipboardHelper.copyString(url);
 }
 
 function censorURL(url)
diff --git a/chrome/adblockplus.jar!/content/ui/sendReport.xul b/chrome/adblockplus.jar!/content/ui/sendReport.xul
index d1db467..738b205 100644
--- a/chrome/adblockplus.jar!/content/ui/sendReport.xul
+++ b/chrome/adblockplus.jar!/content/ui/sendReport.xul
@@ -28,7 +28,12 @@
 <?xml-stylesheet href="chrome://global/skin/tree.css" type="text/css"?>
 <?xml-stylesheet href="chrome://adblockplus/skin/sendReport.css" type="text/css"?>
 
-<!DOCTYPE dialog SYSTEM "chrome://adblockplus/locale/sendReport.dtd">
+<!DOCTYPE dialog [
+<!ENTITY % reporterDTD SYSTEM "chrome://adblockplus/locale/sendReport.dtd">
+%reporterDTD;
+<!ENTITY % filtersDTD SYSTEM "chrome://adblockplus/locale/filters.dtd">
+%filtersDTD;
+]>
 
 <wizard
 	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
@@ -136,7 +141,7 @@
 		<groupbox id="issuesSubscriptionCountBox" hidden="true">
 			<description>&issues.subscriptionCount.description;</description>
 			<hbox pack="end">
-				<button label="&issues.openPreferences.label;" oncommand="Utils.openSettingsDialog();window.close();"/>
+				<button label="&issues.openPreferences.label;" oncommand="Utils.openFiltersDialog();window.close();"/>
 			</hbox>
 		</groupbox>
 		<groupbox id="issuesOwnFiltersBox" hidden="true">
@@ -220,7 +225,7 @@
 	<description id="sendReportMessage">&sendPage.waitMessage;</description>
 
 	<vbox id="sendReportErrorBox" align="end" hidden="true">
-		<description id="sendReportError" textTemplate="&sendPage.errorMessage;">
+		<description id="sendReportError" textTemplate="&sendPage.errorMessage;" defaultError="&subscription.lastDownload.connectionError;">
 			<label id="sendReportErrorLinks" class="text-link" onclick="Utils.loadDocLink('reporter_connect_issue');"/>
 		</description>
 		<button id="sendRetryButton" label="&sendPage.retry.label;" oncommand="initSendPage();"/>
diff --git a/chrome/adblockplus.jar!/content/ui/settings.js b/chrome/adblockplus.jar!/content/ui/settings.js
deleted file mode 100644
index d79a185..0000000
--- a/chrome/adblockplus.jar!/content/ui/settings.js
+++ /dev/null
@@ -1,3049 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Adblock Plus.
- *
- * The Initial Developer of the Original Code is
- * Wladimir Palant.
- * Portions created by the Initial Developer are Copyright (C) 2006-2011
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * ***** END LICENSE BLOCK ***** */
-
-const altMask = 2;
-const ctrlMask = 4;
-const metaMask = 8;
-
-let accelMask = ctrlMask;
-try {
-	let accelKey = Utils.prefService.getIntPref("ui.key.accelKey");
-	if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_META)
-		accelMask = metaMask;
-	else if (accelKey == Ci.nsIDOMKeyEvent.DOM_VK_ALT)
-		accelMask = altMask;
-} catch(e) {}
-
-/**
- * Initialization function, called when the window is loaded.
- */
-function init()
-{
-	// Insert Apply button between OK and Cancel
-	let okBtn = document.documentElement.getButton("accept");
-	let cancelBtn = document.documentElement.getButton("cancel");
-	let applyBtn = E("applyButton");
-	let insertBefore = cancelBtn;
-	for (let sibling = cancelBtn; sibling; sibling = sibling.nextSibling)
-		if (sibling == okBtn)
-			insertBefore = okBtn;
-	insertBefore.parentNode.insertBefore(applyBtn, insertBefore);
-	applyBtn.setAttribute("disabled", "true");
-	applyBtn.hidden = false;
-
-	// Convert menubar into toolbar on Mac OS X
-	let isMac = ("@mozilla.org/xre/app-info;1" in Cc && Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS == "Darwin");
-	if (isMac)
-	{
-		function copyAttributes(from, to)
-		{
-			for (let i = 0; i < from.attributes.length; i++)
-				to.setAttribute(from.attributes[i].name, from.attributes[i].value);
-		}
-
-		let menubar = E("menu");
-		let toolbar = document.createElement("toolbar");
-		copyAttributes(menubar, toolbar);
-
-		for (let menu = menubar.firstChild; menu; menu = menu.nextSibling)
-		{
-			let button = document.createElement("toolbarbutton");
-			copyAttributes(menu, button);
-			button.setAttribute("type", "menu");
-			while (menu.firstChild)
-				button.appendChild(menu.firstChild);
-			toolbar.appendChild(button);
-		}
-
-		menubar.parentNode.replaceChild(toolbar, menubar);
-	}
-
-	// Copy View menu contents into list header context menu
-	let viewMenu = E("view-popup").cloneNode(true);
-	let viewContext = E("treecols-context");
-	function replaceId(menuItem)
-	{
-		if (menuItem.id)
-			menuItem.id = "context-" + menuItem.id;
-		for (let child = menuItem.firstChild; child; child = child.nextSibling)
-			replaceId(child);
-	}
-	while (viewMenu.firstChild)
-	{
-		replaceId(viewMenu.firstChild);
-		viewContext.appendChild(viewMenu.firstChild);
-	}
-
-	// Install listener
-	FilterStorage.addObserver(onFilterStorageChange);
-
-	// Capture keypress events - need to get them before the tree does
-	E("listStack").addEventListener("keypress", onListKeyPress, true);
-
-	// Use our fake browser with the findbar - and prevent default action on Enter key
-	E("findbar").browser = fastFindBrowser;
-	E("findbar").addEventListener("keypress", function(event)
-	{
-		// Work-around for bug 490047
-		if (event.keyCode == KeyEvent.DOM_VK_RETURN)
-			event.preventDefault();
-	}, false);
-	// Hack to prevent "highlight all" from getting enabled
-	E("findbar").toggleHighlight = function() {};
-
-	// Initialize tree view
-	E("list").view = treeView;
-	treeView.setEditor(E("listEditor"), E("listEditorParent"));
-
-	// Set the focus to the input field by default
-	E("list").focus();
-
-	// Execute these actions delayed to work around bug 489881
-	Utils.runAsync(function()
-	{
-		treeView.ensureSelection(0);
-
-		let e = document.createEvent("Events");
-		e.initEvent("post-load", false, false);
-		window.dispatchEvent(e);
-	});
-}
-
-/**
- * This should be called from "post-load" event handler to set the address that is
- * supposed to be edited. This will initialize the editor and start the editor delayed
- * (a subsequent call to selectFilter() will prevent the editor from opening).
- * @param {String}  location  URL of the address to be taken as template of a new filter
- */
-function setLocation(location)
-{
-	treeView.editorDummyInit = location;
-}
-
-/**
- * This should be called from "post-load" event handler to select a particular filter
- * in the list. If setLocation() was called before, this will also prevent the editor
- * from opening (though it keeps editor's initial value in case the user opens the editor
- * himself later).
- * @param {Filter} filter  filter to be selected
- */
-function selectFilter(filter)
-{
-	treeView.selectFilter(getFilterByText(filter.text));
-	E("list").focus();
-}
-
-/**
- * Cleanup function to remove observers, called when the window is unloaded.
- */
-function cleanUp()
-{
-	FilterStorage.removeObserver(onFilterStorageChange);
-}
-
-/**
- * Map of all subscription wrappers by their download location.
- * @type Object
- */
-let subscriptionWrappers = {__proto__: null};
-
-/**
- * Creates a subscription wrapper that can be modified
- * without affecting the original subscription. The properties
- * _sortedFilters and _description are initialized immediately.
- *
- * @param {Subscription} subscription subscription to be wrapped
- * @return {Subscription} subscription wrapper
- */
-function createSubscriptionWrapper(subscription)
-{
-	if (subscription.url in subscriptionWrappers)
-		return subscriptionWrappers[subscription.url];
-
-	let wrapper = 
-	{
-		__proto__: subscription,
-		_isWrapper: true,
-		_sortedFilters: subscription.filters,
-		_description: getSubscriptionDescription(subscription)
-	};
-	subscriptionWrappers[subscription.url] = wrapper;
-	return wrapper;
-}
-
-/**
- * Retrieves a subscription wrapper by the download location.
- *
- * @param {String} url download location of the subscription
- * @return Subscription subscription wrapper or null for invalid URL
- */
-function getSubscriptionByURL(url)
-{
-	if (url in subscriptionWrappers)
-	{
-		let result = subscriptionWrappers[url];
-		if (treeView.subscriptions.indexOf(result) < 0)
-			treeView.resortSubscription(result);
-		return result;
-	}
-	else
-	{
-		let result = Subscription.fromURL(url);
-		if (!result || "_isWrapper" in result)
-			return result;
-
-		result = createSubscriptionWrapper(result);
-		result.filters = result.filters.slice();
-		for (let i = 0; i < result.filters.length; i++)
-			result.filters[i] = getFilterByText(result.filters[i].text);
-
-		treeView.resortSubscription(result);
-		return result;
-	}
-}
-
-/**
- * Map of all filter wrappers by their text representation.
- * @type Object
- */
-let filterWrappers = {__proto__: null};
-
-/**
- * Creates a filter wrapper that can be modified without affecting
- * the original filter.
- *
- * @param {Filter} filter filter to be wrapped
- * @return {Filter} filter wrapper
- */
-function createFilterWrapper(filter)
-{
-	if (filter.text in filterWrappers)
-		return filterWrappers[filter.text];
-
-	let wrapper = 
-	{
-		__proto__: filter,
-		_isWrapper: true
-	};
-	filterWrappers[filter.text] = wrapper;
-	return wrapper;
-}
-
-/**
- * Retrieves a filter by its text (might be a filter wrapper).
- *
- * @param {String} text text representation of the filter
- * @return Filter
- */
-function getFilterByText(text)
-{
-	if (text in filterWrappers)
-		return filterWrappers[text];
-	else
-		return Filter.fromText(text);
-}
-
-/**
- * Generates the additional rows that should be shown as description
- * of the subscription in the list.
- *
- * @param {Subscription} subscription
- * @return {Array of String}
- */
-function getSubscriptionDescription(subscription)
-{
-	let result = [];
-
-	if (!(subscription instanceof RegularSubscription))
-		return result;
-
-	if (subscription instanceof DownloadableSubscription && subscription.upgradeRequired)
-		result.push(Utils.getString("subscription_wrong_version").replace(/\?1\?/, subscription.requiredVersion));
-
-	if (subscription instanceof DownloadableSubscription)
-		result.push(Utils.getString("subscription_source") + " " + subscription.url);
-
-	let status = "";
-	if (subscription instanceof ExternalSubscription)
-		status += Utils.getString("subscription_status_externaldownload");
-	else
-		status += (subscription.autoDownload ? Utils.getString("subscription_status_autodownload") : Utils.getString("subscription_status_manualdownload"));
-
-	status += "; " + Utils.getString("subscription_status_lastdownload") + " ";
-	if (Synchronizer.isExecuting(subscription.url))
-		status += Utils.getString("subscription_status_lastdownload_inprogress");
-	else
-	{
-		status += (subscription.lastDownload > 0 ? Utils.formatTime(subscription.lastDownload * 1000) : Utils.getString("subscription_status_lastdownload_unknown"));
-		if (subscription instanceof DownloadableSubscription && subscription.downloadStatus)
-		{
-			try {
-				status += " (" + Utils.getString(subscription.downloadStatus) + ")";
-			} catch (e) {}
-		}
-	}
-
-	result.push(Utils.getString("subscription_status") + " " + status);
-	return result;
-}
-
-/**
- * Removes all filters from the list (after a warning).
- */
-function clearList()
-{
-	if (Utils.confirm(window, Utils.getString("clearall_warning")))
-		treeView.removeUserFilters();
-}
-
-/**
- * Shows a warning and resets hit statistics on the filters if the user confirms.
- * @param {Boolean} resetAll  If true, statistics of all filters will be reset. If false, only selected filters will be reset.
- */
-function resetHitCounts(resetAll)
-{
-	if (resetAll && Utils.confirm(window, Utils.getString("resethitcounts_warning")))
-		FilterStorage.resetHitCounts(null);
-	else if (!resetAll && Utils.confirm(window, Utils.getString("resethitcounts_selected_warning")))
-	{
-		let filters = treeView.getSelectedFilters(false);
-		FilterStorage.resetHitCounts(filters.map(function(filter)
-		{
-			return ("_isWrapper" in filter ? filter.__proto__ : filter);
-		}));
-	}
-}
-
-/**
- * Gets the default download dir, as used by the browser itself.
- * @return {nsIFile}
- * @see saveDefaultDir()
- */
-function getDefaultDir()
-{
-	// Copied from Firefox: getTargetFile() in contentAreaUtils.js
-	try
-	{
-		return Utils.prefService.getComplexValue("browser.download.lastDir", Ci.nsILocalFile);
-	}
-	catch (e)
-	{
-		// No default download location. Default to desktop. 
-		let fileLocator = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
-	
-		return fileLocator.get("Desk", Ci.nsILocalFile);
-	}
-}
-
-/**
- * Saves new default download dir after the user chose a different directory to
- * save his files to.
- * @param {nsIFile} dir
- * @see getDefaultDir()
- */
-function saveDefaultDir(dir)
-{
-	// Copied from Firefox: getTargetFile() in contentAreaUtils.js
-	try
-	{
-		Utils.prefService.setComplexValue("browser.download.lastDir", Ci.nsILocalFile, dir);
-	} catch(e) {};
-}
-
-/**
- * Adds a set of filters to the list.
- * @param {Array of String} filters
- * @return {Filter} last filter added (or null)
- */
-function addFilters(filters)
-{
-	let commentQueue = [];
-	let lastAdded = null;
-	for each (let text in filters)
-	{
-		// Don't add checksum comments
-		if (/!\s*checksum[\s\-:]+([\w\+\/]+)/i.test(text))
-			continue;
-
-		text = Filter.normalize(text);
-		if (!text)
-			continue;
-
-		let filter = getFilterByText(text);
-		if (filter instanceof CommentFilter)
-			commentQueue.push(filter);
-		else
-		{
-			lastAdded = filter;
-			let subscription = treeView.addFilter(filter, null, null, true);
-			if (subscription && commentQueue.length)
-			{
-				// Insert comments before the filter that follows them
-				for each (let comment in commentQueue)
-					treeView.addFilter(comment, subscription, filter, true);
-				commentQueue.splice(0, commentQueue.length);
-			}
-		}
-	}
-
-	for each (let comment in commentQueue)
-	{
-		lastAdded = comment;
-		treeView.addFilter(comment, null, null, true);
-	}
-
-	return lastAdded;
-}
-
-/**
- * Lets the user choose a file and reads user-defined filters from this file.
- */
-function importList()
-{
-	let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
-	picker.init(window, Utils.getString("import_filters_title"), picker.modeOpen);
-	picker.appendFilters(picker.filterText);
-	picker.appendFilters(picker.filterAll);
-
-	let dir = getDefaultDir();
-	if (dir)
-		picker.displayDirectory = dir;
-
-	if (picker.show() != picker.returnCancel)
-	{
-		saveDefaultDir(picker.file.parent.QueryInterface(Ci.nsILocalFile));
-		let fileStream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
-		fileStream.init(picker.file, 0x01, 0444, 0);
-
-		let stream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
-		stream.init(fileStream, "UTF-8", 16384, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
-		stream = stream.QueryInterface(Ci.nsIUnicharLineInputStream);
-
-		let lines = [];
-		let line = {value: null};
-		while (stream.readLine(line))
-			lines.push(Filter.normalize(line.value));
-		if (line.value)
-			lines.push(Filter.normalize(line.value));
-		stream.close();
-
-		if (/\[Adblock(?:\s*Plus\s*([\d\.]+)?)?\]/i.test(lines[0]))
-		{
-			let minVersion = RegExp.$1;
-			let warning = "";
-			if (minVersion && Utils.versionComparator.compare(minVersion, Utils.addonVersion) > 0)
-				warning = Utils.getString("import_filters_wrong_version").replace(/\?1\?/, minVersion) + "\n\n";
-
-			let promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService);
-			let flags = promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0 +
-									promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_1 +
-									promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_2;
-			let result = promptService.confirmEx(window, Utils.getString("import_filters_title"),
-				warning + Utils.getString("import_filters_warning"), flags, Utils.getString("overwrite"),
-				null, Utils.getString("append"), null, {});
-			if (result == 1)
-				return;
-
-			if (result == 0)
-				treeView.removeUserFilters();
-
-			lines.shift();
-			addFilters(lines);
-			treeView.ensureSelection(0);
-		}
-		else 
-			Utils.alert(window, Utils.getString("invalid_filters_file"));
-	}
-}
-
-/**
- * Lets the user choose a file and writes user-defined filters into this file.
- */
-function exportList()
-{
-	if (!treeView.hasUserFilters())
-		return;
-
-	let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
-	picker.init(window, Utils.getString("export_filters_title"), picker.modeSave);
-	picker.defaultExtension = ".txt";
-	picker.appendFilters(picker.filterText);
-	picker.appendFilters(picker.filterAll);
-
-	let dir = getDefaultDir();
-	if (dir)
-		picker.displayDirectory = dir;
-
-	if (picker.show() != picker.returnCancel)
-	{
-		saveDefaultDir(picker.file.parent.QueryInterface(Ci.nsILocalFile));
-		let lineBreak = Utils.getLineBreak();
-
-		let list = ["[Adblock]"];
-		let minVersion = "0";
-		for each (let subscription in treeView.subscriptions)
-		{
-			if (subscription instanceof SpecialSubscription)
-			{
-				for each (let filter in subscription.filters)
-				{
-					// Skip checksums
-					if (filter instanceof CommentFilter && /!\s*checksum[\s\-:]+([\w\+\/]+)/i.test(filter.text))
-						continue;
-
-					list.push(filter.text);
-
-					// Find version requirements of this filter
-					let filterVersion;
-					if (filter instanceof RegExpFilter)
-					{
-						if (filter.contentType & RegExpFilter.typeMap.DONOTTRACK)
-							filterVersion = "1.3.5";
-						else if (filter.contentType & RegExpFilter.typeMap.ELEMHIDE)
-							filterVersion = "1.2";
-						else if (/^(?:@@)?\|\|/.test(filter.text) || (!Filter.regexpRegExp.test(filter.text) && /\^/.test(filter.text)))
-							filterVersion = "1.1";
-						else if (filter.includeDomains != null || filter.excludeDomains != null)
-							filterVersion = "1.0.1";
-						else if (filter.thirdParty != null)
-							filterVersion = "1.0";
-						else if (filter.collapse != null)
-							filterVersion = "0.7.5";
-						else if (Filter.optionsRegExp.test(filter.text))
-							filterVersion = "0.7.1";
-						else if (/^(?:@@)?\|/.test(filter.text) || /\|$/.test(filter.text))
-							filterVersion = "0.6.1.2";
-						else
-							filterVersion = "0";
-					}
-					else if (filter instanceof ElemHideFilter)
-					{
-						if (filter.excludeDomains != null)
-							filterVersion = "1.1";
-						else if (/^#([\w\-]+|\*)(?:\(([\w\-]+)\))?$/.test(filter.text))
-							filterVersion = "0.6.1";
-						else
-							filterVersion = "0.7";
-					}
-					else
-						filterVersion = "0";
-					
-					// Adjust version requirements of the complete filter set
-					if (filterVersion != "0" && Utils.versionComparator.compare(minVersion, filterVersion) < 0)
-						minVersion = filterVersion;
-				}
-			}
-		}
-
-		if (minVersion != "0")
-		{
-			if (Utils.versionComparator.compare(minVersion, "0.7.1") >= 0)
-				list[0] = "[Adblock Plus " + minVersion + "]";
-			else
-				list[0] = "(Adblock Plus " + minVersion + " or higher required) " + list[0];
-		}
-
-		list.push("");
-
-		// Insert checksum
-		let checksum = Utils.generateChecksum(list);
-		if (checksum)
-			list.splice(1, 0, "! Checksum: " + checksum);
-
-		try
-		{
-			let fileStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
-			fileStream.init(picker.file, 0x02 | 0x08 | 0x20, 0644, 0);
-
-			let stream = Cc["@mozilla.org/intl/converter-output-stream;1"].createInstance(Ci.nsIConverterOutputStream);
-			stream.init(fileStream, "UTF-8", 16384, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
-
-			stream.writeString(list.join(lineBreak));
-	
-			stream.close();
-		}
-		catch (e)
-		{
-			dump("Adblock Plus: error writing to file: " + e + "\n");
-			Utils.alert(window, Utils.getString("filters_write_error"));
-		}
-	}
-}
-
-/**
- * Handles keypress event on the filter list
- */
-function onListKeyPress(/**Event*/ e)
-{
-	// Ignore any keys directed to the editor
-	if (treeView.isEditing)
-		return;
-
-	let modifiers = 0;
-	if (e.altKey)
-		modifiers |= altMask;
-	if (e.ctrlKey)
-		modifiers |= ctrlMask;
-	if (e.metaKey)
-		modifiers |= metaMask;
-
-	if ((e.keyCode == e.DOM_VK_RETURN || e.keyCode == e.DOM_VK_ENTER) && modifiers)
-		document.documentElement.acceptDialog();
-	else if (e.keyCode == e.DOM_VK_RETURN || e.keyCode == e.DOM_VK_ENTER || e.keyCode == e.DOM_VK_F2)
-	{
-		e.preventDefault();
-		if (editFilter(null))
-			e.stopPropagation();
-	}
-	else if (e.keyCode == e.DOM_VK_DELETE || e.keyCode == e.DOM_VK_BACK_SPACE)
-		removeFilters(true);
-	else if (e.keyCode == e.DOM_VK_INSERT)
-		treeView.startEditor(true);
-	else if (e.charCode == e.DOM_VK_SPACE && !E("col-enabled").hidden)
-		toggleDisabled();
-	else if ((e.keyCode == e.DOM_VK_UP || e.keyCode == e.DOM_VK_DOWN) && modifiers == accelMask)
-	{
-		if (e.shiftKey)
-			treeView.moveSubscription(e.keyCode == e.DOM_VK_UP);
-		else
-			treeView.moveFilter(e.keyCode == e.DOM_VK_UP);
-		e.stopPropagation();
-	}
-	else if (String.fromCharCode(e.charCode).toLowerCase() == "t" && modifiers == accelMask)
-		synchSubscription(false);
-}
-
-/**
- * Handles click event on the filter list
- */
-function onListClick(/**Event*/ e)
-{
-	if (e.button != 0)
-		return;
-
-	let row = {};
-	let col = {};
-	treeView.boxObject.getCellAt(e.clientX, e.clientY, row, col, {});
-
-	if (!col.value || col.value.id != "col-enabled")
-		return;
-
-	let [subscription, filter] = treeView.getRowInfo(row.value);
-	if (subscription && !filter)
-		treeView.toggleDisabled([subscription]);
-	else if (filter instanceof ActiveFilter)
-		treeView.toggleDisabled([filter]);
-}
-
-/**
- * Handles dblclick event on the filter list
- */
-function onListDblClick(/**Event*/ e)
-{
-	if (e.button != 0)
-		return;
-
-	let col = {};
-	treeView.boxObject.getCellAt(e.clientX, e.clientY, {}, col, {});
-
-	if (col.value && col.value.id == "col-enabled")
-		return;
-
-	editFilter(null);
-}
-
-/**
- * Handles dragstart event on the filter list
- */
-function onListDragStart(/**Event*/ e)
-{
-	treeView.startDrag(treeView.boxObject.getRowAt(e.clientX, e.clientY), e);
-}
-
-/**
- * Handles dragend event on the filter list
- */
-function onListDragEnd(/**Event*/ e)
-{
-	treeView.finishDrag();
-}
-
-/**
- * Observer for filter storage changes, calls onFilterChange or onSubscriptionChange
- * @see FilterStorage.addObserver()
- */
-function onFilterStorageChange(/**String*/ action, /**Array*/ items, additionalData)
-{
-	if (/^filters (.*)/.test(action))
-		onFilterChange(RegExp.$1, items, additionalData);
-	else if (/^subscriptions (.*)/.test(action))
-		onSubscriptionChange(RegExp.$1, items, additionalData);
-}
-
-/**
- * Filter change observer
- */
-function onFilterChange(/**String*/ action, /**Array of Filter*/ filters, additionalData)
-{
-	switch (action)
-	{
-		case "add":
-			// addFilter() won't invalidate if the filter is already there because
-			// the subscription didn't create its subscription.filters copy yet,
-			// an update batch makes sure that everything is invalidated.
-			treeView.boxObject.beginUpdateBatch();
-			for each (let filter in filters)
-			{
-				let insertBefore = (additionalData ? getFilterByText(additionalData.text) : null);
-				treeView.addFilter(getFilterByText(filter.text), null, insertBefore, true);
-			}
-			treeView.boxObject.endUpdateBatch();
-			return;
-		case "remove":
-			// removeFilter() won't invalidate if the filter is already removed because
-			// the subscription didn't create its subscription.filters copy yet,
-			// an update batch makes sure that everything is invalidated.
-			treeView.boxObject.beginUpdateBatch();
-			for each (let filter in filters)
-				treeView.removeFilter(null, getFilterByText(filter.text));
-			treeView.boxObject.endUpdateBatch();
-			return;
-		case "enable":
-		case "disable":
-			// Remove existing changes to "disabled" property
-			for each (let filter in filters)
-			{
-				filter = getFilterByText(filter.text);
-				if ("_isWrapper" in filter && filter.hasOwnProperty("disabled"))
-					delete filter.disabled;
-			}
-			break;
-		case "hit":
-			if (E("col-hitcount").hidden && E("col-lasthit").hidden)
-			{
-				// The data isn't visible, no need to invalidate
-				return;
-			}
-			break;
-		default:
-			return;
-	}
-
-	if (filters.length == 1)
-		treeView.invalidateFilter(getFilterByText(filters[0].text));
-	else
-		treeView.boxObject.invalidate();
-}
-
-/**
- * Subscription change observer
- */
-function onSubscriptionChange(/**String*/ action, /**Array of Subscription*/ subscriptions)
-{
-	for each (let subscription in subscriptions)
-	{
-		subscription = getSubscriptionByURL(subscription.url);
-		switch (action)
-		{
-			case "add":
-				treeView.addSubscription(subscription, true);
-				break;
-			case "remove":
-				treeView.removeSubscription(subscription);
-				break;
-			case "enable":
-			case "disable":
-				// Remove existing changes to "disabled" property
-				delete subscription.disabled;
-				treeView.invalidateSubscription(subscription);
-				break;
-			case "update":
-				if ("oldSubscription" in subscription)
-				{
-					treeView.removeSubscription(getSubscriptionByURL(subscription.oldSubscription.url));
-					delete subscriptionWrappers[subscription.oldSubscription.url];
-					if (treeView.subscriptions.indexOf(subscription) < 0)
-					{
-						treeView.addSubscription(subscription, true);
-						break;
-					}
-				}
-				let oldCount = treeView.getSubscriptionRowCount(subscription);
-
-				delete subscription.filters;
-				subscription.filters = subscription.filters.map(function(filter)
-				{
-					return getFilterByText(filter.text);
-				});
-
-				treeView.resortSubscription(subscription);
-				treeView.invalidateSubscription(subscription, oldCount);
-				break;
-			case "updateinfo":
-				if ("oldSubscription" in subscription)
-				{
-					treeView.removeSubscription(getSubscriptionByURL(subscription.oldSubscription.url));
-					delete subscriptionWrappers[subscription.oldSubscription.url];
-					if (treeView.subscriptions.indexOf(subscription) < 0)
-					{
-						treeView.addSubscription(subscription, true);
-						break;
-					}
-				}
-				treeView.invalidateSubscriptionInfo(subscription);
-				break;
-		}
-	}
-
-	// Date.toLocaleFormat() doesn't handle Unicode properly if called directly from XPCOM (bug 441370)
-	setTimeout(function()
-	{
-		for each (let subscription in subscriptions)
-		{
-			subscription = getSubscriptionByURL(subscription.url);
-			treeView.invalidateSubscriptionInfo(subscription);
-		}
-	}, 0);
-}
-
-/**
- * Starts editor for filter or subscription.
- * @param {String} type  "filter", "subscription" or null (any)
- */
-function editFilter(type) /**Boolean*/
-{
-	let [subscription, filter] = treeView.getRowInfo(treeView.selection.currentIndex);
-	if (!filter && !type)
-	{
-		// Don't do anything for group titles unless we were explicitly told what to do
-		return false;
-	}
-
-	if (type != "filter" && subscription instanceof RegularSubscription)
-		editSubscription(subscription);
-	else
-		treeView.startEditor(false);
-
-	return true;
-}
-
-/**
- * Starts editor for a given subscription (pass null to add a new subscription).
- */
-function editSubscription(/**Subscription*/ subscription)
-{
-	let hasSubscription = function(url) treeView.subscriptions.indexOf(getSubscriptionByURL(url)) >= 0;
-	let result = {};
-	openDialog("subscriptionSelection.xul", "_blank", "chrome,centerscreen,modal,resizable,dialog=no", subscription, result, hasSubscription);
-
-	if (!("url" in result))
-		return;
-
-	let subscriptionResults = [[result.url, result.title]];
-	if ("mainSubscriptionURL" in result)
-		subscriptionResults.push([result.mainSubscriptionURL, result.mainSubscriptionTitle]);
-
-	let changed = false;
-	for each (let [url, title] in subscriptionResults)
-	{
-		let newSubscription = getSubscriptionByURL(url);
-		if (!newSubscription)
-			continue;
-	
-		changed = true;
-		if (subscription && subscription != newSubscription)
-			treeView.removeSubscription(subscription);
-	
-		treeView.addSubscription(newSubscription);
-	
-		newSubscription.title = title;
-		newSubscription.disabled = result.disabled;
-		newSubscription.autoDownload = result.autoDownload;
-	
-		treeView.invalidateSubscriptionInfo(newSubscription);
-
-		if (newSubscription instanceof DownloadableSubscription && !newSubscription.lastDownload)
-			Synchronizer.execute(newSubscription.__proto__, false);
-	}
-
-	if (changed)
-		onChange();
-}
-
-/**
- * Removes the selected entries from the list and sets selection to the
- * next item.
- * @param {Boolean} allowSubscriptions  if true, a subscription will be
- *                  removed if no removable filters are selected
- */
-function removeFilters(allowSubscriptions)
-{
-	// Retrieve selected items
-	let selected = treeView.getSelectedInfo(false);
-
-	let found = false;
-	for each (let [subscription, filter] in selected)
-	{
-		if (subscription instanceof SpecialSubscription && filter instanceof Filter)
-		{
-			treeView.removeFilter(subscription, filter);
-			found = true;
-		}
-	}
-
-	if (found)
-		return;
-
-	if (allowSubscriptions)
-	{
-		// No removable filters found, maybe we can remove a subscription?
-		let selectedSubscription = null;
-		for each (let [subscription, filter] in selected)
-		{
-			if (!selectedSubscription)
-				selectedSubscription = subscription;
-			else if (selectedSubscription != subscription)
-				return;
-		}
-
-		if (selectedSubscription && selectedSubscription instanceof RegularSubscription && Utils.confirm(window, Utils.getString("remove_subscription_warning")))
-			treeView.removeSubscription(selectedSubscription);
-	}
-}
-
-/**
- * Enables or disables selected filters or the selected subscription
- */
-function toggleDisabled()
-{
-	// Look for selected filters first
-	let selected = treeView.getSelectedFilters(true).filter(function(filter)
-	{
-		return filter instanceof ActiveFilter;
-	});
-
-	if (selected.length)
-		treeView.toggleDisabled(selected);
-	else
-	{
-		// No filters selected, maybe a subscription?
-		let [subscription, filter] = treeView.getRowInfo(treeView.selection.currentIndex);
-		if (subscription && !filter)
-			treeView.toggleDisabled([subscription]);
-	}
-}
-
-/**
- * Copies selected filters to clipboard.
- */
-function copyToClipboard()
-{
-	let selected = treeView.getSelectedFilters(false);
-	if (!selected.length)
-		return;
-
-	let clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
-	let lineBreak = Utils.getLineBreak();
-	clipboardHelper.copyString(selected.map(function(filter)
-	{
-		return filter.text;
-	}).join(lineBreak) + lineBreak);
-}
-
-/**
- * Pastes text as list of filters from clipboard
- */
-function pasteFromClipboard() {
-	let clipboard = Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard);
-	let transferable = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable);
-	transferable.addDataFlavor("text/unicode");
-
-	try {
-		clipboard.getData(transferable, clipboard.kGlobalClipboard);
-	}
-	catch (e) {
-		return;
-	}
-
-	let data = {};
-	transferable.getTransferData("text/unicode", data, {});
-
-	try {
-		data = data.value.QueryInterface(Ci.nsISupportsString).data;
-	}
-	catch (e) {
-		return;
-	}
-
-	let lastAdded = addFilters(data.split(/[\r\n]+/));
-	if (lastAdded)
-		treeView.selectFilter(lastAdded);
-}
-
-/**
- * Starts synchronization of the currently selected subscription
- */
-function synchSubscription()
-{
-	let [subscription, filter] = treeView.getRowInfo(treeView.selection.currentIndex);
-	if (subscription instanceof DownloadableSubscription)
-		Synchronizer.execute(subscription.__proto__, true, true);
-}
-
-/**
- * Starts synchronization for all subscriptions
- */
-function synchAllSubscriptions()
-{
-	for each (let subscription in treeView.subscriptions)
-		if (subscription instanceof DownloadableSubscription)
-			Synchronizer.execute(subscription.__proto__, true, true);
-}
-
-/**
- * Updates the contents of the Filters menu, making sure the right
- * items are checked/enabled.
- */
-function fillFiltersPopup()
-{
-	let empty = !treeView.hasUserFilters();
-	E("export-command").setAttribute("disabled", empty);
-	E("clearall").setAttribute("disabled", empty);
-}
-
-/**
- * Updates the contents of the View menu, making sure the right
- * items are checked/enabled.
- */
-function fillViewPopup(/**String*/prefix)
-{
-	E(prefix + "view-filter").setAttribute("checked", !E("col-filter").hidden);
-	E(prefix + "view-slow").setAttribute("checked", !E("col-slow").hidden);
-	E(prefix + "view-enabled").setAttribute("checked", !E("col-enabled").hidden);
-	E(prefix + "view-hitcount").setAttribute("checked", !E("col-hitcount").hidden);
-	E(prefix + "view-lasthit").setAttribute("checked", !E("col-lasthit").hidden);
-
-	let sortColumn = treeView.sortColumn;
-	let sortColumnID = (sortColumn ? sortColumn.id : null);
-	let sortDir = (sortColumn ? sortColumn.getAttribute("sortDirection") : "natural");
-	E(prefix + "sort-none").setAttribute("checked", sortColumn == null);
-	E(prefix + "sort-filter").setAttribute("checked", sortColumnID == "col-filter");
-	E(prefix + "sort-enabled").setAttribute("checked", sortColumnID == "col-enabled");
-	E(prefix + "sort-hitcount").setAttribute("checked", sortColumnID == "col-hitcount");
-	E(prefix + "sort-lasthit").setAttribute("checked", sortColumnID == "col-lasthit");
-	E(prefix + "sort-asc").setAttribute("checked", sortDir == "ascending");
-	E(prefix + "sort-desc").setAttribute("checked", sortDir == "descending");
-}
-
-/**
- * Toggles visibility of a column.
- * @param {String} col  ID of the column to made visible/invisible
- */
-function toggleColumn(col)
-{
-	col = E(col);
-	col.setAttribute("hidden", col.hidden ? "false" : "true");
-}
-
-/**
- * Switches list sorting to the specified column. Sort order is kept.
- * @param {String} col  ID of the column to sort by or null for unsorted
- */
-function sortBy(col)
-{
-	if (col)
-		treeView.resort(E(col), treeView.sortColumn ? treeView.sortColumn.getAttribute("sortDirection") : "ascending");
-	else
-		treeView.resort(null, "natural");
-}
-
-/**
- * Changes sort order of the list. Sorts by filter column if the list is unsorted.
- * @param {String} order  either "ascending" or "descending"
- */
-function setSortOrder(order)
-{
-	let col = treeView.sortColumn || E("col-filter");
-	treeView.resort(col, order);
-}
-
-/**
- * Updates the contents of the Options menu, making sure the right
- * items are checked/enabled.
- */
-function fillOptionsPopup()
-{
-	E("abp-enabled").setAttribute("checked", Prefs.enabled);
-	E("frameobjects").setAttribute("checked", Prefs.frameobjects);
-	E("slowcollapse").setAttribute("checked", !Prefs.fastcollapse);
-	E("showintoolbar").setAttribute("checked", Prefs.showintoolbar);
-	E("showinstatusbar").setAttribute("checked", Prefs.showinstatusbar);
-
-	let syncEngine = Sync.getEngine();
-	E("sync").hidden = !syncEngine;
-	E("sync").setAttribute("checked", syncEngine && syncEngine.enabled);
-}
-
-/**
- * Updates the state of copy/paste commands whenever selection changes.
- */
-function updateCommands()
-{
-	// Retrieve selected items
-	let selected = treeView.getSelectedInfo(true);
-
-	// Check whether all selected items belong to the same subscription
-	let selectedSubscription = null;
-	for each (let [subscription, filter] in selected)
-	{
-		if (!selectedSubscription)
-			selectedSubscription = subscription;
-		else if (subscription != selectedSubscription)
-		{
-			// More than one subscription selected, ignoring it
-			selectedSubscription = null;
-			break;
-		}
-	}
-
-	// Check whether any filters have been selected and whether any of them can be removed
-	let hasFilters = selected.some(function([subscription, filter]) filter instanceof Filter);
-	let hasRemovable = selected.some(function([subscription, filter]) subscription instanceof SpecialSubscription && filter instanceof Filter);
-
-	// Check whether clipboard contains text
-	let clipboard = Cc["@mozilla.org/widget/clipboard;1"].getService(Ci.nsIClipboard);
-	let hasFlavour = clipboard.hasDataMatchingFlavors(["text/unicode"], 1, clipboard.kGlobalClipboard);
-
-	E("copy-command").setAttribute("disabled", !hasFilters);
-	E("cut-command").setAttribute("disabled", !hasRemovable);
-	E("paste-command").setAttribute("disabled", !hasFlavour);
-	E("remove-command").setAttribute("disabled", !(hasRemovable || selectedSubscription instanceof RegularSubscription));
-}
-
-/**
- * Updates the contents of the context menu, making sure the right
- * items are checked/enabled.
- */
-function fillContext()
-{
-	// Retrieve selected items
-	let selected = treeView.getSelectedInfo(true);
-
-	let currentSubscription = null;
-	let currentFilter = null;
-	if (selected.length)
-		[currentSubscription, currentFilter] = selected[0];
-
-	// Check whether all selected items belong to the same subscription
-	let selectedSubscription = null;
-	for each (let [subscription, filter] in selected)
-	{
-		if (!selectedSubscription)
-			selectedSubscription = subscription;
-		else if (subscription != selectedSubscription)
-		{
-			// More than one subscription selected, ignoring it
-			selectedSubscription = null;
-			break;
-		}
-	}
-
-	// Check whether any filters have been selected and which filters can be enabled/disabled
-	let hasFilters = selected.some(function([subscription, filter]) filter instanceof Filter);
-	let activeFilters = selected.filter(function([subscription, filter]) filter instanceof ActiveFilter);
-
-	if (selectedSubscription instanceof RegularSubscription)
-	{
-		E("context-editsubscription").hidden = false;
-		E("context-edit").hidden = true;
-	}
-	else
-	{
-		E("context-editsubscription").hidden = true;
-		E("context-edit").hidden = false;
-		E("context-edit").setAttribute("disabled", !(currentSubscription instanceof SpecialSubscription && currentFilter instanceof Filter));
-	}
-
-	E("context-synchsubscription").setAttribute("disabled", !(selectedSubscription instanceof DownloadableSubscription));
-	E("context-resethitcount").setAttribute("disabled", !hasFilters);
-
-	E("context-moveup").setAttribute("disabled", !(currentSubscription instanceof SpecialSubscription && currentFilter instanceof Filter && !treeView.isSorted() && currentSubscription._sortedFilters.indexOf(currentFilter) > 0));
-	E("context-movedown").setAttribute("disabled", !(currentSubscription instanceof SpecialSubscription && currentFilter instanceof Filter && !treeView.isSorted() && currentSubscription._sortedFilters.indexOf(currentFilter) < currentSubscription._sortedFilters.length - 1));
-
-	E("context-movegroupup").setAttribute("disabled", !selectedSubscription || treeView.isFirstSubscription(selectedSubscription));
-	E("context-movegroupdown").setAttribute("disabled", !selectedSubscription || treeView.isLastSubscription(selectedSubscription));
-
-	if (activeFilters.length || (selectedSubscription && !currentFilter))
-	{
-		let current = activeFilters.length ? activeFilters[0][1] : selectedSubscription;
-		E("context-enable").hidden = !current.disabled;
-		E("context-disable").hidden = current.disabled;
-		E("context-disable").setAttribute("disabled", "false");
-	}
-	else
-	{
-		E("context-enable").hidden = true;
-		E("context-disable").hidden = false;
-		E("context-disable").setAttribute("disabled", "true");
-	}
-
-	return true;
-}
-
-/**
- * Toggles the value of a boolean preference.
- * @param {String} pref preference name (Prefs object property)
- */
-function togglePref(pref)
-{
-	Prefs[pref] = !Prefs[pref];
-}
-
-/**
- * Toggles the pref for the Adblock Plus sync engine.
- */
-function toggleSync()
-{
-	let syncEngine = Sync.getEngine();
-	syncEngine.enabled = !syncEngine.enabled;
-}
-
-/**
- * Applies filter list changes.
- */
-function applyChanges()
-{
-	treeView.applyChanges();
-	E("applyButton").setAttribute("disabled", "true");
-}
-
-/**
- * Checks whether a tooltip should be shown and sets tooltip text appropriately
- */
-function showTreeTooltip(/**Event*/ event) /**Boolean*/
-{
-	let col = {};
-	let row = {};
-	let childElement = {};
-	treeView.boxObject.getCellAt(event.clientX, event.clientY, row, col, childElement);
-
-	let [subscription, filter] = treeView.getRowInfo(row.value);
-	if (row.value && col.value && col.value.id == "col-slow" && treeView.getCellText(row.value, col.value))
-	{
-		E("tree-tooltip").setAttribute("label", Utils.getString("filter_regexp_tooltip"));
-		return true;
-	}
-
-	if (filter instanceof InvalidFilter && filter.reason)
-	{
-		E("tree-tooltip").setAttribute("label", filter.reason);
-		return true;
-	}
-
-	if (row.value && col.value && treeView.boxObject.isCellCropped(row.value, col.value))
-	{
-		let text = treeView.getCellText(row.value, col.value);
-		if (text)
-		{
-			E("tree-tooltip").setAttribute("label", text);
-			return true;
-		}
-	}
-
-	return false;
-}
-
-/**
- * Opens About Adblock Plus dialog
- */
-function openAbout()
-{
-	openDialog("about.xul", "_blank", "chrome,centerscreen,modal");
-}
-
-/**
- * Should be called after each change to the filter list that needs applying later
- */
-function onChange() {
-	E("applyButton").removeAttribute("disabled");
-}
-
-/**
- * Sort function for the filter list, compares two filters by their text
- * representation.
- */
-function compareText(/**Filter*/ filter1, /**Filter*/ filter2)
-{
-	if (filter1.text < filter2.text)
-		return -1;
-	else if (filter1.text > filter2.text)
-		return 1;
-	else
-		return 0;
-}
-
-/**
- * Sort function for the filter list, compares two filters by "slow"
- * marker.
- */
-function compareSlow(/**Filter*/ filter1, /**Filter*/ filter2)
-{
-	let isSlow1 = filter1 instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter1);
-	let isSlow2 = filter2 instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter2);
-	return isSlow1 - isSlow2;
-}
-
-/**
- * Sort function for the filter list, compares two filters by "enabled"
- * state.
- */
-function compareEnabled(/**Filter*/ filter1, /**Filter*/ filter2)
-{
-	let hasEnabled1 = (filter1 instanceof ActiveFilter ? 1 : 0);
-	let hasEnabled2 = (filter2 instanceof ActiveFilter ? 1 : 0);
-	if (hasEnabled1 != hasEnabled2)
-		return hasEnabled1 - hasEnabled2;
-	else if (hasEnabled1 && filter1.disabled != filter2.disabled)
-		return (filter1.disabled ? -1 : 1);
-	else
-		return 0;
-}
-
-/**
- * Sort function for the filter list, compares two filters by their hit count.
- */
-function compareHitCount(/**Filter*/ filter1, /**Filter*/ filter2)
-{
-	let hasHitCount1 = (filter1 instanceof ActiveFilter ? 1 : 0);
-	let hasHitCount2 = (filter2 instanceof ActiveFilter ? 1 : 0);
-	if (hasHitCount1 != hasHitCount2)
-		return hasHitCount1 - hasHitCount2;
-	else if (hasHitCount1)
-		return filter1.hitCount - filter2.hitCount;
-	else
-		return 0;
-}
-
-/**
- * Sort function for the filter list, compares two filters by their last hit.
- */
-function compareLastHit(/**Filter*/ filter1, /**Filter*/ filter2)
-{
-	let hasLastHit1 = (filter1 instanceof ActiveFilter ? 1 : 0);
-	let hasLastHit2 = (filter2 instanceof ActiveFilter ? 1 : 0);
-	if (hasLastHit1 != hasLastHit2)
-		return hasLastHit1 - hasLastHit2;
-	else if (hasLastHit1)
-		return filter1.lastHit - filter2.lastHit;
-	else
-		return 0;
-}
-
-/**
- * Creates a sort function from a primary and a secondary comparison function.
- * @param {Function} cmpFunc  comparison function to be called first
- * @param {Function} fallbackFunc  (optional) comparison function to be called if primary function returns 0
- * @param {Boolean} desc  if true, the result of the primary function (not the secondary function) will be reversed - sorting in descending order
- * @result {Function} comparison function to be used
- */
-function createSortFunction(cmpFunc, fallbackFunc, desc)
-{
-	let factor = (desc ? -1 : 1);
-
-	return function(filter1, filter2)
-	{
-		// Comment replacements without prototype always go last
-		let isLast1 = (filter1.__proto__ == null);
-		let isLast2 = (filter2.__proto__ == null);
-		if (isLast1)
-			return (isLast2 ? 0 : 1)
-		else if (isLast2)
-			return -1;
-
-		let ret = cmpFunc(filter1, filter2);
-		if (ret == 0 && fallbackFunc)
-			return fallbackFunc(filter1, filter2);
-		else
-			return factor * ret;
-	}
-}
-
-const nsITreeView = Ci.nsITreeView;
-
-/**
- * nsITreeView implementation used for the filters list.
- * @class
- */
-let treeView = {
-	//
-	// nsISupports implementation
-	//
-
-	QueryInterface: function(uuid) {
-		if (!uuid.equals(Ci.nsISupports) &&
-				!uuid.equals(Ci.nsITreeView))
-		{
-			throw Cr.NS_ERROR_NO_INTERFACE;
-		}
-	
-		return this;
-	},
-
-	//
-	// nsITreeView implementation
-	//
-
-	setTree: function(boxObject)
-	{
-		if (!boxObject)
-			return;
-
-		this.boxObject = boxObject;
-
-		let stringAtoms = ["col-filter", "col-enabled", "col-hitcount", "col-lasthit", "type-comment", "type-filterlist", "type-whitelist", "type-elemhide", "type-invalid"];
-		let boolAtoms = ["selected", "dummy", "subscription", "description", "filter", "filter-regexp", "subscription-special", "subscription-external", "subscription-autoDownload", "subscription-disabled", "subscription-upgradeRequired", "subscription-dummy", "filter-disabled"];
-		let atomService = Cc["@mozilla.org/atom-service;1"].getService(Ci.nsIAtomService);
-
-		this.atoms = {};
-		for each (let atom in stringAtoms)
-			this.atoms[atom] = atomService.getAtom(atom);
-		for each (let atom in boolAtoms)
-		{
-			this.atoms[atom + "-true"] = atomService.getAtom(atom + "-true");
-			this.atoms[atom + "-false"] = atomService.getAtom(atom + "-false");
-		}
-
-		// Copy the subscription list, we don't want to apply our changes immediately
-		this.subscriptions = FilterStorage.subscriptions.map(createSubscriptionWrapper);
-
-		this.closed = {__proto__: null};
-		let closed = this.boxObject.treeBody.parentNode.getAttribute("closedSubscriptions");
-		if (closed)
-			for each (let id in closed.split(" "))
-				if (id in FilterStorage.knownSubscriptions)
-					this.closed[id] = true;
-
-		// Check current sort direction
-		let cols = document.getElementsByTagName("treecol");
-		let sortColumn = null;
-		let sortDir = null;
-		for (let i = 0; i < cols.length; i++)
-		{
-			let col = cols[i];
-			let dir = col.getAttribute("sortDirection");
-			if (dir && dir != "natural")
-			{
-				sortColumn = col;
-				sortDir = dir;
-			}
-		}
-
-		if (sortColumn)
-			this.resort(sortColumn, sortDir);
-
-		// Make sure we stop the editor when scrolling or resizing window
-		let me = this;
-		this.boxObject.treeBody.addEventListener("DOMMouseScroll", function()
-		{
-			me.stopEditor(true);
-		}, false);
-		window.addEventListener("resize", function()
-		{
-			me.stopEditor(true);
-		}, false);
-	},
-
-	get rowCount()
-	{
-		let count = 0;
-		for each (let subscription in this.subscriptions)
-		{
-			// Special subscriptions are only shown if they aren't empty
-			if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length == 0)
-				continue;
-
-			count++;
-			if (!(subscription.url in this.closed))
-				count += subscription._description.length + subscription._sortedFilters.length;
-		}
-
-		return count;
-	},
-
-	getCellText: function(row, col)
-	{
-		col = col.id;
-
-		// Only three columns have text
-		if (col != "col-filter" && col != "col-slow" && col != "col-hitcount" && col != "col-lasthit")
-			return null;
-
-		// Don't show text in the edited row
-		if (col == "col-filter" && this.editedRow == row)
-			return null;
-
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!subscription)
-			return null;
-
-		if (filter instanceof Filter)
-		{
-			if (col == "col-filter")
-				return filter.text;
-			else if (col == "col-slow")
-				return (filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter) ? "!" : null);
-			else if (filter instanceof ActiveFilter)
-			{
-				if (col == "col-hitcount")
-					return filter.hitCount;
-				else
-					return (filter.lastHit ? Utils.formatTime(filter.lastHit) : null);
-			}
-			else
-				return null;
-		}
-		else if (col != "col-filter")
-			return null;
-		else if (!filter)
-			return (subscription instanceof RegularSubscription ? this.titlePrefix : "") + subscription.title;
-		else
-			return filter;
-	},
-
-	getColumnProperties: function(col, properties)
-	{
-		col = col.id;
-
-		if (col in this.atoms)
-			properties.AppendElement(this.atoms[col]);
-	},
-
-	getRowProperties: function(row, properties)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!subscription)
-			return;
-
-		properties.AppendElement(this.atoms["selected-" + this.selection.isSelected(row)]);
-		properties.AppendElement(this.atoms["subscription-" + !filter]);
-		properties.AppendElement(this.atoms["filter-" + (filter instanceof Filter)]);
-		properties.AppendElement(this.atoms["filter-regexp-" + (filter instanceof RegExpFilter && defaultMatcher.isSlowFilter(filter))]);
-		properties.AppendElement(this.atoms["description-" + (typeof filter == "string")]);
-		properties.AppendElement(this.atoms["subscription-special-" + (subscription instanceof SpecialSubscription)]);
-		properties.AppendElement(this.atoms["subscription-external-" + (subscription instanceof ExternalSubscription)]);
-		properties.AppendElement(this.atoms["subscription-autoDownload-" + (subscription instanceof DownloadableSubscription && subscription.autoDownload)]);
-		properties.AppendElement(this.atoms["subscription-disabled-" + subscription.disabled]);
-		properties.AppendElement(this.atoms["subscription-upgradeRequired-" + (subscription instanceof DownloadableSubscription && subscription.upgradeRequired)]);
-		properties.AppendElement(this.atoms["subscription-dummy-" + (subscription instanceof Subscription && subscription.url == "~dummy~")]);
-		if (filter instanceof Filter)
-		{
-			if (filter instanceof ActiveFilter)
-				properties.AppendElement(this.atoms["filter-disabled-" + filter.disabled]);
-
-			if (filter instanceof CommentFilter)
-				properties.AppendElement(this.atoms["type-comment"]);
-			else if (filter instanceof BlockingFilter)
-				properties.AppendElement(this.atoms["type-filterlist"]);
-			else if (filter instanceof WhitelistFilter)
-				properties.AppendElement(this.atoms["type-whitelist"]);
-			else if (filter instanceof ElemHideFilter)
-				properties.AppendElement(this.atoms["type-elemhide"]);
-			else if (filter instanceof InvalidFilter)
-				properties.AppendElement(this.atoms["type-invalid"]);
-		}
-	},
-
-	getCellProperties: function(row, col, properties)
-	{
-		this.getColumnProperties(col, properties);
-		this.getRowProperties(row, properties);
-	},
-
-	isContainer: function(row)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		return subscription && !filter;
-	},
-
-	isContainerOpen: function(row)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		return subscription && !filter && !(subscription.url in this.closed);
-	},
-
-	isContainerEmpty: function(row)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		return subscription && !filter && subscription._description.length + subscription._sortedFilters.length == 0;
-	},
-
-	getLevel: function(row)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		return (filter ? 1 : 0);
-	},
-
-	getParentIndex: function(row)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		return (subscription && filter ? this.getSubscriptionRow(subscription) : -1);
-	},
-
-	hasNextSibling: function(row, afterRow)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!filter)
-			return false;
-
-		let startIndex = this.getSubscriptionRow(subscription);
-		if (startIndex < 0)
-			return false;
-
-		return (startIndex + subscription._description.length + subscription._sortedFilters.length > afterRow);
-	},
-
-	toggleOpenState: function(row)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!subscription || filter)
-			return;
-
-		let count = subscription._description.length + subscription._sortedFilters.length;
-		if (subscription.url in this.closed)
-		{
-			delete this.closed[subscription.url];
-			this.boxObject.rowCountChanged(row + 1, count);
-		}
-		else
-		{
-			this.closed[subscription.url] = true;
-			this.boxObject.rowCountChanged(row + 1, -count);
-		}
-		this.boxObject.invalidateRow(row);
-
-		// Update closedSubscriptions attribute so that the state persists
-		let closed = [];
-		for (let url in this.closed)
-			closed.push(url);
-		this.boxObject.treeBody.parentNode.setAttribute("closedSubscriptions", closed.join(" "));
-	},
-
-	cycleHeader: function(col)
-	{
-		col = col.element;
-
-		let cycle =
-		{
-			natural: 'ascending',
-			ascending: 'descending',
-			descending: 'natural'
-		};
-
-		let curDirection = "natural";
-		if (this.sortColumn == col)
-			curDirection = col.getAttribute("sortDirection");
-		else if (this.sortColumn)
-			this.sortColumn.removeAttribute("sortDirection");
-
-		this.resort(col, cycle[curDirection]);
-	},
-
-	isSorted: function()
-	{
-		return (this.sortProc != null);
-	},
-
-	canDrop: function(row, orientation)
-	{
-		if (!this.dragSubscription || orientation == nsITreeView.DROP_ON)
-			return false;
-
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!subscription)
-			return false;
-
-		if (this.dragFilter)
-		{
-			// Dragging a filter
-			return filter && subscription instanceof SpecialSubscription && subscription.isFilterAllowed(this.dragFilter);
-		}
-		else
-		{
-			// Dragging a subscription
-			return true;
-		}
-	},
-
-	drop: function(row, orientation)
-	{
-		if (!this.dragSubscription || orientation == nsITreeView.DROP_ON)
-			return;
-
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!subscription)
-			return;
-
-		if (this.dragFilter)
-		{
-			// Dragging a filter
-			if (!(filter && subscription instanceof SpecialSubscription && subscription.isFilterAllowed(this.dragFilter)))
-				return;
-
-			let oldSubscription = this.dragSubscription;
-			let oldSortedIndex = oldSubscription._sortedFilters.indexOf(this.dragFilter);
-			let newSortedIndex = subscription._sortedFilters.indexOf(filter);
-			if (oldSortedIndex < 0 || newSortedIndex < 0)
-				return;
-			if (orientation == nsITreeView.DROP_AFTER)
-				newSortedIndex++;
-
-			let oldIndex = (oldSubscription.filters == oldSubscription._sortedFilters ? oldSortedIndex : oldSubscription.filters.indexOf(this.dragFilter));
-			let newIndex = (subscription.filters == subscription._sortedFilters || newSortedIndex >= subscription._sortedFilters.length ? newSortedIndex : subscription.filters.indexOf(subscription._sortedFilters[newSortedIndex]));
-			if (oldIndex < 0 || newIndex < 0)
-				return;
-			if (oldSubscription == subscription && (newIndex == oldIndex || newIndex == oldIndex + 1))
-				return;
-
-			{
-				if (!oldSubscription.hasOwnProperty("filters"))
-					oldSubscription.filters = oldSubscription.filters.slice();
-
-				let rowCountBefore = treeView.getSubscriptionRowCount(oldSubscription);
-				let row = treeView.getSubscriptionRow(oldSubscription) + rowCountBefore - oldSubscription._sortedFilters.length + oldSortedIndex;
-				oldSubscription.filters.splice(oldIndex, 1);
-				this.resortSubscription(oldSubscription);
-				let rowCountAfter = treeView.getSubscriptionRowCount(oldSubscription);
-				this.boxObject.rowCountChanged(row + 1 + rowCountAfter - rowCountBefore, rowCountAfter - rowCountBefore);
-			}
-
-			if (oldSubscription == subscription && newSortedIndex > oldSortedIndex)
-				newSortedIndex--;
-			if (oldSubscription == subscription && newIndex > oldIndex)
-				newIndex--;
-
-			{
-				if (!subscription.hasOwnProperty("filters"))
-					subscription.filters = subscription.filters.slice();
-
-				let rowCountBefore = treeView.getSubscriptionRowCount(subscription);
-				subscription.filters.splice(newIndex, 0, this.dragFilter);
-				this.resortSubscription(subscription);
-				let rowCountAfter = treeView.getSubscriptionRowCount(subscription);
-				let row = treeView.getSubscriptionRow(subscription) + rowCountAfter - subscription._sortedFilters.length + newSortedIndex;
-				this.boxObject.rowCountChanged(row + 1 + rowCountBefore - rowCountAfter, rowCountAfter - rowCountBefore);
-
-				treeView.selectRow(row);
-			}
-		}
-		else
-		{
-			// Dragging a subscription
-			if (subscription == this.dragSubscription)
-				return;
-
-			let rowCount = this.getSubscriptionRowCount(this.dragSubscription);
-
-			let oldIndex = this.subscriptions.indexOf(this.dragSubscription);
-			let newIndex = this.subscriptions.indexOf(subscription);
-			if (oldIndex < 0 || newIndex < 0)
-				return;
-
-			if (filter && oldIndex > newIndex)
-				orientation = nsITreeView.DROP_BEFORE;
-			else if (filter)
-				orientation = nsITreeView.DROP_AFTER;
-
-			let oldRow = this.getSubscriptionRow(this.dragSubscription);
-			this.subscriptions.splice(oldIndex, 1);
-			this.boxObject.rowCountChanged(oldRow, -rowCount);
-
-			if (orientation == nsITreeView.DROP_AFTER)
-				newIndex++;
-			if (oldIndex < newIndex)
-				newIndex--;
-
-			this.subscriptions.splice(newIndex, 0, this.dragSubscription);
-			let newRow = this.getSubscriptionRow(this.dragSubscription);
-			this.boxObject.rowCountChanged(newRow, rowCount);
-
-			treeView.selectRow(newRow);
-		}
-
-		onChange();
-	},
-
-	getCellValue: function() {return null},
-	getProgressMode: function() {return null},
-	getImageSrc: function() {return null},
-	isSeparator: function() {return false},
-	isEditable: function() {return false},
-	cycleCell: function() {},
-	performAction: function() {},
-	performActionOnRow: function() {},
-	performActionOnCell: function() {},
-	selection: null,
-	selectionChanged: function() {},
-
-	//
-	// Custom properties and methods
-	//
-
-	/**
-	 * List of subscriptions displayed
-	 * @type Array of Subscription
-	 */
-	subscriptions: null,
-
-	/**
-	 * Box object of the tree
-	 * @type nsITreeBoxObject
-	 */
-	boxObject: null,
-
-	/**
-	 * Map containing URLs of subscriptions that are displayed collapsed
-	 * @type Object
-	 */
-	closed: null,
-
-	/**
-	 * String to be displayed before the title of regular subscriptions
-	 * @type String
-	 * @const
-	 */
-	titlePrefix: Utils.getString("subscription_description") + " ",
-
-	/**
-	 * Map of atoms being used as col/row/cell properties, String => nsIAtom
-	 * @type Object
-	 */
-	atoms: null,
-
-	/**
-	 * Column by which the list is sorted or null for natural order
-	 * @type Element
-	 */
-	sortColumn: null,
-
-	/**
-	 * Comparison function used to sort the list or null for natural order
-	 * @type Function
-	 */
-	sortProc: null,
-
-	/**
-	 * Returns the first row of a subscription in the list or -1 if the
-	 * subscription isn't in the list or isn't visible.
-	 */
-	getSubscriptionRow: function(/**Subscription*/ search)  /**Integer*/
-	{
-		let index = 0;
-		for each (let subscription in this.subscriptions)
-		{
-			let rowCount = this.getSubscriptionRowCount(subscription);
-			if (rowCount > 0 && search == subscription)
-				return index;
-
-			index += rowCount;
-		}
-		return -1;
-	},
-
-	/**
-	 * Returns the number of rows used to display the subscription in the list.
-	 */
-	getSubscriptionRowCount: function(/**Subscription*/ subscription) /**Integer*/
-	{
-		if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length == 0)
-			return 0;
-
-		if (subscription.url in this.closed)
-			return 1;
-
-		return 1 + subscription._description.length + subscription._sortedFilters.length;
-	},
-
-	/**
-	 * Returns the filter displayed in the given row and the corresponding filter subscription.
-	 * @param {Integer} row   row index
-	 * @return {Array}  array with two elements indicating the contents of the row:
-	 *                    [null, null] - empty row
-	 *                    [Subscription, null] - subscription title row
-	 *                    [Subscription, String] - subscription description row (row text is second array element)
-	 *                    [Subscription, Filter] - filter from the given subscription
-	 */
-	getRowInfo: function(row)
-	{
-		for each (let subscription in this.subscriptions)
-		{
-			// Special subscriptions are only shown if they aren't empty
-			if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length == 0)
-				continue;
-
-			// Check whether the subscription row has been requested
-			row--;
-			if (row < 0)
-				return [subscription, null];
-
-			if (!(subscription.url in this.closed))
-			{
-				// Check whether the subscription description row has been requested
-				if (row < subscription._description.length)
-					return [subscription, subscription._description[row]];
-
-				row -= subscription._description.length;
-
-				// Check whether one of the filters has been requested
-				if (row < subscription._sortedFilters.length)
-					return [subscription, subscription._sortedFilters[row]];
-
-				row -= subscription._sortedFilters.length;
-			}
-		}
-
-		return [null, null];
-	},
-
-	/**
-	 * Returns the filters currently selected.
-	 * @param {Boolean} prependCurrent if true, current element will be returned first
-	 * @return {Array of Filter}
-	 */
-	getSelectedFilters: function(prependCurrent)
-	{
-		return this.getSelectedInfo(prependCurrent).map(function(info)
-		{
-			return info[1];
-		}).filter(function(filter)
-		{
-			return filter instanceof Filter;
-		});
-	},
-
-	/**
-	 * Returns the filters/subscription currently selected.
-	 * @param {Boolean} prependCurrent if true, current element will be returned first
-	 * @return {Array} each array entry has the same format as treeView.getRowInfo() result
-	 * @see treeView.getRowInfo()
-	 */
-	getSelectedInfo: function(prependCurrent)
-	{
-		let result = [];
-		for (let i = 0; i < this.selection.getRangeCount(); i++)
-		{
-			let min = {};
-			let max = {};
-			this.selection.getRangeAt(i, min, max);
-			for (let j = min.value; j <= max.value; j++)
-			{
-				let info = this.getRowInfo(j);
-				if (info[0])
-				{
-					if (prependCurrent && j == treeView.selection.currentIndex)
-						result.unshift(info);
-					else
-						result.push(info);
-				}
-			}
-		}
-		return result;
-	},
-
-	/**
-	 * Checks whether the filter already has a wrapper. If
-	 * not, replaces all instances of the filter but the
-	 * wrapper.
-	 * @param {Filter} filter   filter to be tested
-	 * @return {Filter} wrapped filter
-	 */
-	ensureFilterWrapper: function(filter)
-	{
-		if ("_isWrapper" in filter)
-			return filter;
-
-		let wrapper = createFilterWrapper(filter);
-		for each (let subscription in this.subscriptions)
-		{
-			// Replace filter by its wrapper in all subscriptions
-			let index = -1;
-			let found = false;
-			do
-			{
-				index = subscription.filters.indexOf(filter, index + 1);
-				if (index >= 0)
-				{
-					if (!subscription.hasOwnProperty("filters"))
-						subscription.filters = subscription.filters.slice();
-
-					subscription.filters[index] = wrapper;
-					found = true;
-				}
-			} while (index >= 0);
-
-			if (found)
-			{
-				if (treeView.sortProc)
-				{
-					// Sorted filter list needs updating as well
-					index = -1;
-					do
-					{
-						index = subscription._sortedFilters.indexOf(filter, index + 1);
-						if (index >= 0)
-							subscription._sortedFilters[index] = wrapper;
-					} while (index >= 0);
-				}
-				else
-					subscription._sortedFilters = subscription.filters;
-			}
-		}
-		return wrapper;
-	},
-
-	/**
-	 * Map of comparison functions by column ID  or column ID + "Desc" for
-	 * descending sort order.
-	 * @const
-	 */
-	sortProcs:
-	{
-		filter: createSortFunction(compareText, null, false),
-		filterDesc: createSortFunction(compareText, null, true),
-		slow: createSortFunction(compareSlow, compareText, true),
-		slowDesc: createSortFunction(compareSlow, compareText, false),
-		enabled: createSortFunction(compareEnabled, compareText, false),
-		enabledDesc: createSortFunction(compareEnabled, compareText, true),
-		hitcount: createSortFunction(compareHitCount, compareText, false),
-		hitcountDesc: createSortFunction(compareHitCount, compareText, true),
-		lasthit: createSortFunction(compareLastHit, compareText, false),
-		lasthitDesc: createSortFunction(compareLastHit, compareText, true)
-	},
-
-	/**
-	 * Changes sort direction of the list.
-	 * @param {Element} col column (<treecol>) the list should be sorted by
-	 * @param {String} direction either "natural" (unsorted), "ascending" or "descending"
-	 */
-	resort: function(col, direction)
-	{
-		if (this.sortColumn)
-			this.sortColumn.removeAttribute("sortDirection");
-
-		if (direction == "natural")
-		{
-			this.sortColumn = null;
-			this.sortProc = null;
-		}
-		else
-		{
-			this.sortColumn = col;
-			this.sortProc = this.sortProcs[col.id.replace(/^col-/, "") + (direction == "descending" ? "Desc" : "")];
-			this.sortColumn.setAttribute("sortDirection", direction);
-		}
-
-		for each (let subscription in this.subscriptions)
-			this.resortSubscription(subscription);
-
-		this.boxObject.invalidate();
-	},
-
-	/**
-	 * Updates subscription's _sortedFilters property (sorted index
-	 * of subscription's filters).
-	 */
-	resortSubscription: function(/**Subscription*/ subscription)
-	{
-		if (this.sortProc)
-		{
-			// Hide comments in the list, they should be sorted like the filter following them
-			let filters = subscription.filters.slice();
-			let followingFilter = null;
-			for (let i = filters.length - 1; i >= 0; i--)
-			{
-				if (filters[i] instanceof CommentFilter)
-					filters[i] = { __proto__: followingFilter, _origFilter: filters[i] };
-				else
-					followingFilter = filters[i];
-			}
-
-			filters.sort(this.sortProc);
-
-			// Restore comments
-			for (let i = 0; i < filters.length; i++)
-				if ("_origFilter" in filters[i])
-					filters[i] = filters[i]._origFilter;
-
-			subscription._sortedFilters = filters;
-		}
-		else
-			subscription._sortedFilters = subscription.filters;
-	},
-
-	/**
-	 * Selects given tree row.
-	 */
-	selectRow: function(/**Integer*/ row)
-	{
-		treeView.selection.select(row);
-		treeView.boxObject.ensureRowIsVisible(row);
-	},
-
-	/**
-	 * Finds the given filter in the list and selects it.
-	 */
-	selectFilter: function(/**Filter*/ filter)
-	{
-		let resultSubscription = null;
-		let resultIndex;
-		for each (let subscription in this.subscriptions)
-		{
-			let index = subscription._sortedFilters.indexOf(filter);
-			if (index >= 0)
-			{
-				[resultSubscription, resultIndex] = [subscription, index];
-
-				// If the subscription is disabled continue searching - maybe
-				// we have the same filter in an enabled subscription as well
-				if (!subscription.disabled)
-					break;
-			}
-		}
-
-		if (resultSubscription)
-		{
-			let parentRow = this.getSubscriptionRow(resultSubscription);
-			if (resultSubscription.url in this.closed)
-				this.toggleOpenState(parentRow);
-			this.selectRow(parentRow + 1 + resultSubscription._description.length + resultIndex);
-		}
-	},
-
-	/**
-	 * This method will select the first row of a subscription.
-	 */
-	selectSubscription: function(/**Subscription*/ subscription)
-	{
-		let row = this.getSubscriptionRow(subscription);
-		if (row < 0)
-			return;
-
-		this.selection.select(row);
-		this.boxObject.ensureRowIsVisible(row);
-	},
-
-	/**
-	 * This method will make sure that the list has some selection (assuming
-	 * that it has at least one entry).
-	 * @param {Integer} row   row to be selected if the list has no selection
-	 */
-	ensureSelection: function(row)
-	{
-		if (this.selection.count == 0)
-		{
-			let rowCount = this.rowCount;
-			if (row < 0)
-				row = 0;
-			if (row >= rowCount)
-				row = rowCount - 1;
-			if (row >= 0)
-			{
-				this.selection.select(row);
-				this.boxObject.ensureRowIsVisible(row);
-			}
-		}
-		else if (this.selection.currentIndex < 0)
-		{
-			let min = {};
-			this.selection.getRangeAt(0, min, {});
-			this.selection.currentIndex = min.value;
-		}
-	},
-
-	/**
-	 * Checks whether there are any user-defined filters in the list.
-	 */
-	hasUserFilters: function() /**Boolean*/
-	{
-		for each (let subscription in this.subscriptions)
-			if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length)
-				return true;
-
-		return false;
-	},
-
-	/**
-	 * Checks whether the given subscription is the first one displayed.
-	 */
-	isFirstSubscription: function(/**Subscription*/ search) /**Boolean*/
-	{
-		for each (let subscription in this.subscriptions)
-		{
-			if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length == 0)
-				continue;
-
-			return (subscription == search);
-		}
-		return false;
-	},
-
-	/**
-	 * Checks whether the given subscription is the last one displayed.
-	 */
-	isLastSubscription: function(/**Subscription*/ search) /**Boolean*/
-	{
-		for (let i = this.subscriptions.length - 1; i >= 0; i--)
-		{
-			let subscription = this.subscriptions[i];
-			if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length == 0)
-				continue;
-
-			return (subscription == search);
-		}
-		return false;
-	},
-
-	/**
-	 * Adds a filter to a subscription. If no subscription is given, will
-	 * find one that accepts filters of this type.
-	 * @result {Subscription} the subscription this filter was added to
-	 */
-	addFilter: function(/**Filter*/ filter, /**Subscription*/ subscription, /**Filter*/ insertBefore, /**Boolean*/ noSelect)
-	{
-		if (!filter)
-			return null;
-
-		if (!subscription)
-		{
-			for each (let s in this.subscriptions)
-			{
-				if (s instanceof SpecialSubscription && s.isFilterAllowed(filter))
-				{
-					if (s._sortedFilters.indexOf(filter) >= 0 || s.filters.indexOf(filter) >= 0)
-					{
-						subscription = s;
-						break;
-					}
-
-					if (!subscription || s.priority > subscription.priority)
-						subscription = s;
-				}
-			}
-		}
-		if (!subscription)
-			return null;
-
-		let insertPositionSorted = subscription._sortedFilters.indexOf(filter);
-		if (insertPositionSorted >= 0)
-		{
-			// We have that filter already, only need to select it
-			if (!noSelect)
-			{
-				let parentRow = this.getSubscriptionRow(subscription);
-				if (subscription.url in this.closed)
-					this.toggleOpenState(parentRow);
-
-				this.selectRow(parentRow + 1 + subscription._description.length + insertPositionSorted);
-			}
-			return subscription;
-		}
-
-		let insertPosition = -1;
-		if (insertBefore)
-			insertPosition = subscription.filters.indexOf(insertBefore);
-		if (insertPosition < 0)
-		{
-			insertPosition = subscription.filters.length;
-
-			// Insert before the comments at the end
-			while (insertPosition > 0 && subscription.filters[insertPosition - 1] instanceof CommentFilter && !(filter instanceof CommentFilter))
-				insertPosition--;
-			if (insertPosition == 0)
-				insertPosition = subscription.filters.length;
-		}
-
-		// If we don't have our own filters property the filter might be there already
-		if (subscription.filters.indexOf(filter) < 0)
-		{
-			// Create a copy of the original subscription filters before modifying
-			if (!subscription.hasOwnProperty("filters"))
-				subscription.filters = subscription.filters.slice();
-
-			subscription.filters.splice(insertPosition, 0, filter);
-		}
-		this.resortSubscription(subscription);
-		insertPositionSorted = subscription._sortedFilters.indexOf(filter);
-
-		let parentRow = this.getSubscriptionRow(subscription);
-
-		if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length == 1)
-		{
-			this.boxObject.rowCountChanged(parentRow, this.getSubscriptionRowCount(subscription));
-		}
-		else if (!(subscription.url in this.closed))
-		{
-			this.boxObject.rowCountChanged(parentRow + 1 + subscription._description.length + insertPositionSorted, 1);
-			this.boxObject.invalidateRow(parentRow + 1 + subscription._description.length + insertPositionSorted);
-		}
-
-		if (!noSelect)
-		{
-			if (subscription.url in this.closed)
-				this.toggleOpenState(parentRow);
-			this.selectRow(parentRow + 1 + subscription._description.length + insertPositionSorted);
-		}
-
-		onChange();
-		return subscription;
-	},
-
-	/**
-	 * Adds a subscription to the list (if it isn't there already)
-	 * and makes sure it is selected.
-	 */
-	addSubscription: function(/**Subscription*/ subscription, /**Boolean*/ noSelect)
-	{
-		if (this.subscriptions.indexOf(subscription) < 0)
-		{
-			this.subscriptions.push(subscription);
-			this.boxObject.rowCountChanged(this.getSubscriptionRow(subscription), this.getSubscriptionRowCount(subscription));
-		}
-
-		if (!noSelect)
-		{
-			let [currentSelected, dummy] = this.getRowInfo(this.selection.currentIndex);
-			if (currentSelected != subscription)
-				this.selectSubscription(subscription);
-		}
-	},
-
-	/**
-	 * Removes a filter from the list.
-	 * @param {SpecialSubscription} subscription  the subscription the filter belongs to (if null, filter will be removed from all special subscriptions)
-	 * @param {Filter} filter filter to be removed
-	 */
-	removeFilter: function(subscription, filter)
-	{
-		if (!subscription)
-		{
-			for each (let subscription in this.subscriptions)
-			{
-				if (!(subscription instanceof SpecialSubscription))
-					continue;
-
-				this.removeFilter(subscription, filter);
-			}
-			return;
-		}
-
-		let parentRow = this.getSubscriptionRow(subscription);
-		let rowCount = this.getSubscriptionRowCount(subscription);
-		let newSelection = parentRow;
-
-		// The filter might be removed already if we don't have our own filters property yet
-		let index = subscription.filters.indexOf(filter);
-		if (index >= 0)
-		{
-			if (!subscription.hasOwnProperty("filters"))
-				subscription.filters = subscription.filters.slice();
-
-			subscription.filters.splice(index, 1);
-		}
-
-		if (subscription.filters != subscription._sortedFilters)
-			index = subscription._sortedFilters.indexOf(filter);
-		if (index < 0)
-			return;
-
-		if (treeView.sortProc)
-			subscription._sortedFilters.splice(index, 1);
-		else
-			subscription._sortedFilters = subscription.filters;
-
-		if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length == 0)
-		{
-			// Empty special subscriptions aren't shown, remove everything
-			this.boxObject.rowCountChanged(parentRow, -rowCount);
-			newSelection -= rowCount;
-		}
-		else if (!(subscription.url in this.closed))
-		{
-			newSelection = parentRow + 1 + subscription._description.length + index;
-			this.boxObject.rowCountChanged(newSelection, -1);
-		}
-
-		this.ensureSelection(newSelection);
-		onChange();
-	},
-
-	/**
-	 * Removes a filter subscription from the list.
-	 * @param {RegularSubscription} subscription  filter subscription to be removed
-	 */
-	removeSubscription: function(subscription)
-	{
-		let index = this.subscriptions.indexOf(subscription);
-		if (index < 0)
-			return;
-
-		let firstRow = this.getSubscriptionRow(subscription);
-		let rowCount = this.getSubscriptionRowCount(subscription);
-
-		this.subscriptions.splice(index, 1);
-		this.boxObject.rowCountChanged(firstRow, -rowCount);
-
-		this.ensureSelection(firstRow);
-		onChange();
-	},
-
-	/**
-	 * Moves a filter in the list up or down.
-	 * @param {Boolean} up  if true, the filter is moved up
-	 */
-	moveFilter: function(up)
-	{
-		let oldRow = this.selection.currentIndex;
-		let [subscription, filter] = this.getRowInfo(oldRow);
-		if (this.isSorted() || !(filter instanceof Filter) || !(subscription instanceof SpecialSubscription))
-			return;
-
-		let oldIndex = subscription.filters.indexOf(filter);
-		if (oldIndex < 0)
-			return;
-
-		let newIndex = (up ? oldIndex - 1 : oldIndex + 1);
-		if (newIndex < 0 || newIndex >= subscription.filters.length)
-			return;
-
-		// Create a copy of the original subscription filters before modifying
-		if (!subscription.hasOwnProperty("filters"))
-		{
-			subscription.filters = subscription.filters.slice();
-			subscription._sortedFilters = subscription.filters;
-		}
-
-		[subscription.filters[oldIndex], subscription.filters[newIndex]] = [subscription.filters[newIndex], subscription.filters[oldIndex]];
-
-		let newRow = oldRow - oldIndex + newIndex;
-		this.boxObject.invalidateRange(Math.min(oldRow, newRow), Math.max(oldRow, newRow));
-		this.selectRow(newRow);
-
-		onChange();
-	},
-
-	/**
-	 * Moves a filter in the list up or down.
-	 * @param {Boolean} up  if true, the filter is moved up
-	 */
-	moveSubscription: function(up)
-	{
-		let [subscription, filter] = this.getRowInfo(this.selection.currentIndex);
-
-		let oldIndex = this.subscriptions.indexOf(subscription);
-		if (oldIndex < 0)
-			return;
-
-		let oldRow = this.getSubscriptionRow(subscription);
-		let offset = this.selection.currentIndex - oldRow;
-		let newIndex = oldIndex;
-		do
-		{
-			newIndex = (up ? newIndex - 1 : newIndex + 1);
-			if (newIndex < 0 || newIndex >= this.subscriptions.length)
-				return;
-		} while (this.subscriptions[newIndex] instanceof SpecialSubscription && this.subscriptions[newIndex]._sortedFilters.length == 0);
-
-		[this.subscriptions[oldIndex], this.subscriptions[newIndex]] = [this.subscriptions[newIndex], this.subscriptions[oldIndex]];
-
-		let newRow = this.getSubscriptionRow(subscription);
-		let rowCount = this.getSubscriptionRowCount(subscription);
-		this.boxObject.invalidateRange(Math.min(oldRow, newRow), Math.max(oldRow, newRow) + rowCount - 1);
-		this.selectRow(newRow + offset);
-
-		onChange();
-	},
-
-	dragSubscription: null,
-	dragFilter: null,
-	startDrag: function(row, e)
-	{
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!subscription)
-			return;
-		if (filter instanceof Filter && !(subscription instanceof SpecialSubscription))
-			return;
-		if (filter instanceof Filter && !(filter instanceof CommentFilter) && this.isSorted())
-			return;
-
-		if (!(filter instanceof Filter))
-			filter = null;
-
-		let array = Cc["@mozilla.org/supports-array;1"].createInstance(Ci.nsISupportsArray);
-		let transferable = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable);
-		let data = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
-		if (filter instanceof Filter)
-			e.dataTransfer.setData("text/plain", filter.text);
-		else
-			e.dataTransfer.setData("text/plain", subscription.title);
-
-		this.dragSubscription = subscription;
-		this.dragFilter = filter;
-
-		e.stopPropagation();
-	},
-
-	finishDrag: function()
-	{
-		this.dragSubscription = null;
-		this.dragFilter = null;
-	},
-
-	/**
-	 * Toggles disabled state of the selected filters/subscriptions.
-	 * @param {Array of Filter or Subscription} items
-	 */
-	toggleDisabled: function(items)
-	{
-		let newValue;
-		for each (let item in items)
-		{
-			if (!(item instanceof ActiveFilter || item instanceof Subscription))
-				return;
-
-			if (item instanceof ActiveFilter)
-				item = this.ensureFilterWrapper(item);
-
-			if (typeof newValue == "undefined")
-				newValue = !item.disabled;
-
-			item.disabled = newValue;
-		}
-
-		if (typeof newValue != "undefined")
-		{
-			this.boxObject.invalidate();
-			onChange();
-		}
-	},
-
-	/**
-	 * Invalidates all instances of a filter in the list, making sure changes
-	 * are displayed.
-	 */
-	invalidateFilter: function(/**Filter*/ search)
-	{
-		let min = this.boxObject.getFirstVisibleRow();
-		let max = this.boxObject.getLastVisibleRow();
-		for (let i = min; i <= max; i++)
-		{
-			let [subscription, filter] = this.getRowInfo(i);
-			if (filter == filter)
-				this.boxObject.invalidateRow(i);
-		}
-	},
-
-	/**
-	 * Invalidates a subscription in the list, making sure changes are displayed.
-	 * @param {Subscription} subscription
-	 * @param {Integer} oldRowCount  (optional) number of roww in the subscription before the change
-	 */
-	invalidateSubscription: function(subscription, oldRowCount)
-	{
-		let row = this.getSubscriptionRow(subscription);
-		if (row < 0)
-			return;
-
-		let rowCount = this.getSubscriptionRowCount(subscription);
-		if (typeof oldRowCount != "undefined" && rowCount != oldRowCount)
-			this.boxObject.rowCountChanged(row + Math.min(rowCount, oldRowCount), rowCount - oldRowCount);
-
-		if (typeof oldRowCount != "undefined" && oldRowCount < rowCount)
-			rowCount = oldRowCount;
-		this.boxObject.invalidateRange(row, row + rowCount - 1);
-	},
-
-	/**
-	 * Makes sure the description rows of the subscription are updated.
-	 */
-	invalidateSubscriptionInfo: function(/**Subscription*/subscription)
-	{
-		let row = this.getSubscriptionRow(subscription);
-
-		let oldCount = subscription._description.length;
-		subscription._description = getSubscriptionDescription(subscription);
-		let newCount = subscription._description.length;
-		if (oldCount != newCount)
-			this.boxObject.rowCountChanged(row + Math.min(oldCount, newCount), newCount - oldCount);
-
-		this.boxObject.invalidateRange(row, row + newCount);
-	},
-
-	/**
-	 * Removes all user-defined filters from the list.
-	 */
-	removeUserFilters: function()
-	{
-		for each (let subscription in this.subscriptions)
-		{
-			if (subscription instanceof SpecialSubscription && subscription._sortedFilters.length > 0)
-			{
-				let row = this.getSubscriptionRow(subscription);
-				let count = this.getSubscriptionRowCount(subscription);
-
-				subscription.filters = [];
-				subscription._sortedFilters = subscription.filters;
-				this.boxObject.rowCountChanged(row, -count);
-
-				onChange();
-			}
-		}
-		this.ensureSelection(0);
-	},
-
-	/**
-	 * Saves all changes back to filter storage.
-	 */
-	applyChanges: function()
-	{
-		try
-		{
-			FilterListener.batchMode = true;
-
-			let oldSubscriptions = {__proto__: null};
-			for each (let subscription in FilterStorage.subscriptions)
-				oldSubscriptions[subscription.url] = true;
-
-			let newSubscriptions = {__proto__: null};
-			let subscriptions = [];
-			for each (let subscription in this.subscriptions)
-			{
-				let changed = false;
-				let disableChanged = (subscription.disabled != subscription.__proto__.disabled);
-				for (let key in subscription)
-				{
-					if (subscription.hasOwnProperty(key) && key[0] != "_" && key != "filters")
-					{
-						subscription.__proto__[key] = subscription[key];
-						delete subscription[key];
-						changed = true;
-					}
-				}
-
-				let hasFilters = {__proto__: null};
-				let hadWrappers = false;
-				for (let i = 0; i < subscription.filters.length; i++)
-				{
-					let filter = subscription.filters[i];
-					if ("_isWrapper" in filter)
-					{
-						if (filter.disabled != filter.__proto__.disabled)
-						{
-							filter.__proto__.disabled = filter.disabled;
-							FilterStorage.triggerObservers(filter.disabled ? "filters disable" : "filters enable", [filter.__proto__]);
-						}
-						subscription.filters[i] = filter.__proto__;
-						hadWrappers = true;
-					}
-					hasFilters[filter.text] = true;
-				}
-
-				let filtersChanged = (subscription.filters.length != subscription.__proto__.filters.length);
-				if (!filtersChanged)
-				{
-					for each (let filter in subscription.__proto__.filters)
-					{
-						if (!(filter.text in hasFilters))
-						{
-							filtersChanged = true;
-							break;
-						}
-					}
-				}
-
-				if (!(subscription.url in oldSubscriptions))
-					FilterStorage.addSubscription(subscription.__proto__);
-				else if (filtersChanged)
-					FilterStorage.updateSubscriptionFilters(subscription.__proto__, subscription.filters);
-				else if (changed)
-				{
-					FilterStorage.triggerObservers("subscriptions updateinfo", [subscription.__proto__]);
-					if (disableChanged)
-						FilterStorage.triggerObservers(subscription.disabled ? "subscriptions disable" : "subscriptions enable", [subscription.__proto__]);
-				}
-
-				// Even if the filters didn't change, their ordering might have
-				// changed. Replace filters on the original subscription without
-				// triggering observers.
-				subscription.__proto__.filters = subscription.filters;
-				delete subscription.filters;
-
-				if (hadWrappers)
-				{
-					// Reinitialize _sortedFilters to remove wrappers from it
-					this.resortSubscription(subscription);
-				}
-
-				newSubscriptions[subscription.url] = true;
-				subscriptions.push(subscription.__proto__);
-			}
-
-			filterWrappers = {__proto__: null};
-
-			for each (let subscription in FilterStorage.subscriptions.slice())
-				if (!(subscription.url in newSubscriptions))
-					FilterStorage.removeSubscription(subscription);
-
-			// Make sure that filter storage has the subscriptions in correct order,
-			// replace subscriptions list without triggering observers.
-			FilterStorage.subscriptions = subscriptions;
-
-			FilterStorage.saveToDisk();
-		}
-		finally
-		{
-			FilterListener.batchMode = false;
-		}
-	},
-
-	/**
-	 * Searches a text string in the subscription titles, subscription
-	 * descriptions and filters. Selects the matches.
-	 * @param {String} text  text being searched
-	 * @param {Integer} direction 1 for searching forwards from current position,
-	 *                            -1 for searching backwards,
-	 *                            0 for searching forwards but including current position as well
-	 * @param {Boolean} highlightAll if true, all matches will be selected and not only the current one
-	 * @param {Boolean} caseSensitive if true, string comparisons should be case-sensitive
-	 * @return {Integer} one of the nsITypeAheadFind constants
-	 */
-	find: function(text, direction, highlightAll, caseSensitive)
-	{
-		function normalizeString(string)
-		{
-			return caseSensitive ? string : string.toLowerCase();
-		}
-		text = normalizeString(text);
-
-		// Matches: current row, first match, previous match, next match, last match
-		let match = [null, null, null, null, null];
-		let [currentSubscription, currentFilter] = this.getRowInfo(this.selection.currentIndex);
-		let isCurrent = false;
-		let foundCurrent = !currentSubscription;
-		let rowCache = {__proto__: null};
-		if (highlightAll)
-			this.selection.clearSelection();
-
-		let selectMatch = function(subscription, offset)
-		{
-			if (highlightAll)
-			{
-				if (!(subscription.url in rowCache))
-					rowCache[subscription.url] = treeView.getSubscriptionRow(subscription);
-
-				let row = rowCache[subscription.url];
-				if (offset && subscription.url in treeView.closed)
-					treeView.toggleOpenState(row);
-				treeView.selection.rangedSelect(row + offset, row + offset, true);
-			}
-
-			let index = (isCurrent ? 0 : (foundCurrent ?  4 : 2));
-			match[index] = [subscription, offset];
-			if (index > 0 && !match[index - 1])
-				match[index - 1] = match[index];
-		};
-
-		for each (let subscription in this.subscriptions)
-		{
-			// Skip invisible subscriptions
-			let rowCount = this.getSubscriptionRowCount(subscription);
-			if (rowCount == 0)
-				continue;
-
-			let offset = 0;
-			isCurrent = (subscription == currentSubscription && !currentFilter);
-			if (normalizeString(subscription.title).indexOf(text) >= 0)
-				selectMatch(subscription, offset);
-			if (isCurrent)
-				foundCurrent = true;
-			offset++;
-
-			for each (let description in subscription._description)
-			{
-				isCurrent = (subscription == currentSubscription && currentFilter === description);
-				if (normalizeString(description).indexOf(text) >= 0)
-					selectMatch(subscription, offset);
-				if (isCurrent)
-					foundCurrent = true;
-				offset++;
-			}
-
-			for each (let filter in subscription._sortedFilters)
-			{
-				isCurrent = (subscription == currentSubscription && filter == currentFilter);
-				if (normalizeString(filter.text).indexOf(text) >= 0)
-					selectMatch(subscription, offset);
-				if (isCurrent)
-					foundCurrent = true;
-				offset++;
-			}
-		}
-
-		let found = null;
-		let status = "";
-		if (direction == 0)
-			found = match[0] || match[3] || match[1];
-		else if (direction > 0)
-			found = match[3] || match[1] || match[0];
-		else
-			found = match[2] || match[4] || match[0];
-
-		if (!found)
-			return Ci.nsITypeAheadFind.FIND_NOTFOUND;
-
-		let [subscription, offset] = found;
-		let row = this.getSubscriptionRow(subscription);
-		if (offset && subscription.url in this.closed)
-			this.toggleOpenState(row);
-		if (highlightAll)
-			this.selection.currentIndex = row + offset;
-		else
-			this.selection.select(row + offset);
-		this.boxObject.ensureRowIsVisible(row + offset);
-
-		if (direction < 0 && found != match[2])
-			return Ci.nsITypeAheadFind.FIND_WRAPPED;
-		if ((direction > 0 && found != match[3]) || (direction == 0 && found == match[1]))
-			return Ci.nsITypeAheadFind.FIND_WRAPPED;
-
-		return Ci.nsITypeAheadFind.FIND_FOUND;
-	},
-
-	//
-	// Inline filter editor
-	//
-
-	editor: null,
-	editorParent: null,
-	editedRow: -1,
-	editorKeyPressHandler: null,
-	editorBlurHandler: null,
-	editorCancelHandler: null,
-	editorDummy: null,
-	editorDummyInit: "",
-
-	/**
-	 * true if the editor is currently open
-	 * @type Boolean
-	 */
-	get isEditing()
-	{
-		return (this.editedRow >= 0);
-	},
-
-	/**
-	 * Initializes inline editor.
-	 * @param {Element} editor  text field to be used as inline editor
-	 * @param {Element} editorParent  editor's parent node to be made visible when the editor should be shown
-	 */
-	setEditor: function(editor, editorParent)
-	{
-		this.editor = editor;
-		this.editorParent = editorParent;
-
-		let me = this;
-		this.editorKeyPressHandler = function(e)
-		{
-			if (e.keyCode == e.DOM_VK_RETURN || e.keyCode == e.DOM_VK_ENTER)
-			{
-				me.stopEditor(true);
-				if (e.ctrlKey || e.altKey || e.metaKey)
-					document.documentElement.acceptDialog();
-				else
-				{
-					e.preventDefault();
-					e.stopPropagation();
-				}
-			}
-			else if (e.keyCode == e.DOM_VK_CANCEL || e.keyCode == e.DOM_VK_ESCAPE)
-			{
-				me.stopEditor(false);
-				e.preventDefault();
-				e.stopPropagation();
-			}
-		};
-		this.editorBlurHandler = function(e)
-		{
-			setTimeout(function()
-			{
-				let focused = document.commandDispatcher.focusedElement;
-				if (!focused || focused != me.editor.field)
-					me.stopEditor(true, true);
-			}, 0);
-		};
-
-		// Prevent cyclic references through closures
-		editor = null;
-		editorParent = null;
-	},
-
-	/**
-	 * Opens inline editor.
-	 * @param {Boolean} insert  if false, the editor will insert a new filter, otherwise edit currently selected filter
-	 */
-	startEditor: function(insert)
-	{
-		this.stopEditor(false);
-
-		let row = this.selection.currentIndex;
-		let [subscription, filter] = this.getRowInfo(row);
-		if (!(subscription instanceof SpecialSubscription) || !(filter instanceof Filter))
-		{
-			let dummySubscription = new Subscription("~dummy~");
-			dummySubscription.title = Utils.getString("new_filter_group_title");
-			dummySubscription.filters.push(" ");
-			dummySubscription = createSubscriptionWrapper(dummySubscription);
-
-			this.subscriptions.unshift(dummySubscription);
-			this.boxObject.rowCountChanged(0, this.getSubscriptionRowCount(dummySubscription));
-
-			row = 1;
-			this.selectRow(row);
-			this.editorDummy = dummySubscription;
-		}
-		else if (insert)
-		{
-			if (subscription._sortedFilters == subscription.filters)
-				subscription._sortedFilters = subscription.filters.slice();
-
-			let index = subscription._sortedFilters.indexOf(filter);
-			subscription._sortedFilters.splice(index, 0, " ");
-			this.boxObject.rowCountChanged(row, 1);
-
-			this.selectRow(row);
-			this.editorDummy = [subscription, index];
-		}
-
-		let col = this.boxObject.columns.getPrimaryColumn();
-		let textX = {};
-		let textY = {};
-		let textWidth = {};
-		let textHeight = {};
-		this.boxObject.ensureRowIsVisible(row);
-		this.boxObject.getCoordsForCellItem(row, col, "text", textX, textY, textWidth, textHeight);
-
-		let cellX = {};
-		let cellWidth = {};
-		this.boxObject.getCoordsForCellItem(row, col, "cell", cellX, {}, cellWidth, {});
-		cellWidth.value -= textX.value - cellX.value;
-
-		// Need to translate coordinates so that they are relative to <stack>, not <treechildren>
-		let treeBody = this.boxObject.treeBody;
-		let editorStack = this.editorParent.parentNode;
-		textX.value += treeBody.boxObject.x - editorStack.boxObject.x;
-		textY.value += treeBody.boxObject.y - editorStack.boxObject.y;
-
-		this.selection.clearSelection();
-
-		let style = window.getComputedStyle(this.editor, "");
-		let topadj = parseInt(style.borderTopWidth) + parseInt(style.paddingTop);
-
-		this.editedRow = row;
-		this.editorParent.hidden = false;
-		this.editorParent.width = cellWidth.value;
-		this.editorParent.height = textHeight.value + topadj + parseInt(style.borderBottomWidth) + parseInt(style.paddingBottom);
-		this.editorParent.left = textX.value;
-		this.editorParent.top = textY.value - topadj;
-
-		let text = (this.editorDummy ? this.editorDummyInit : filter.text);
-
-		this.editor.focus();
-		this.editor.field = document.commandDispatcher.focusedElement;
-		this.editor.field.value = text;
-		this.editor.field.setSelectionRange(this.editor.value.length, this.editor.value.length);
-
-		// Need to attach handlers to the embedded html:input instead of menulist - won't catch blur otherwise
-		this.editor.field.addEventListener("keypress", this.editorKeyPressHandler, false);
-		this.editor.field.addEventListener("blur", this.editorBlurHandler, false);
-
-		this.boxObject.invalidateRow(row);
-	},
-
-	/**
-	 * Closes inline editor.
-	 * @param {Boolean} save  if true, the editor result should be saved (user accepted changes)
-	 * @param {Boolean} blur  if true, editor was closed on blur and the list shouldn't be focused
-	 */
-	stopEditor: function(save, blur)
-	{
-		if (this.editedRow < 0)
-			return;
-
-		this.editor.field.removeEventListener("keypress", this.editorKeyPressHandler, false);
-		this.editor.field.removeEventListener("blur", this.editorBlurHandler, false);
-
-		let insert = (this.editorDummy != null);
-		if (this.editorDummy instanceof Subscription)
-		{
-			let rowCount = this.getSubscriptionRowCount(this.editorDummy);
-			this.subscriptions.shift();
-			this.boxObject.rowCountChanged(0, -rowCount);
-			this.selectRow(0);
-			this.editedRow = -1;
-		}
-		else if (this.editorDummy)
-		{
-			let [subscription, index] = this.editorDummy;
-			subscription._sortedFilters.splice(index, 1);
-			this.boxObject.rowCountChanged(this.editedRow, -1);
-			this.selectRow(this.editedRow);
-		}
-		else
-			this.selectRow(this.editedRow);
-
-		if (typeof blur == "undefined" || !blur)
-			this.boxObject.treeBody.parentNode.focus();
-
-		let [subscription, filter] = this.getRowInfo(this.editedRow);
-		let text = Filter.normalize(this.editor.value);
-		if (save && text && (insert || !(filter instanceof Filter) || text != filter.text))
-		{
-			let newFilter = getFilterByText(text);
-			if (filter && subscription.isFilterAllowed(newFilter))
-				this.addFilter(newFilter, subscription, filter);
-			else
-				this.addFilter(newFilter);
-
-			if (!insert)
-				this.removeFilter(subscription, filter);
-
-			onChange();
-		}
-
-		this.editor.field.value = "";
-		this.editorParent.hidden = true;
-
-		this.editedRow = -1;
-		this.editorDummy = null;
-		this.editorDummyInit = (save ? "" : text);
-	}
-};
diff --git a/chrome/adblockplus.jar!/content/ui/settings.xul b/chrome/adblockplus.jar!/content/ui/settings.xul
index e2abf64..a6d72d7 100644
--- a/chrome/adblockplus.jar!/content/ui/settings.xul
+++ b/chrome/adblockplus.jar!/content/ui/settings.xul
@@ -24,197 +24,24 @@
 	 -
 	 - ***** END LICENSE BLOCK ***** -->
 
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<?xml-stylesheet href="chrome://global/skin/tree.css" type="text/css"?>
-<?xml-stylesheet href="chrome://adblockplus/skin/settings.css" type="text/css"?>
-
-<!DOCTYPE dialog SYSTEM "chrome://adblockplus/locale/settings.dtd">
-
-<dialog
-	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-	title="&dialog.title;"
-	id="abpPreferencesWindow"
-	onload="init()"
-	onunload="cleanUp()"
-	ondialogaccept="applyChanges(); return true;"
-	ondialogextra2="treeView.startEditor(true)"
-	buttons="accept,cancel,extra2"
-	buttonlabelextra2="&add.label;…"
-	buttonaccesskeyextra2="&add.accesskey;"
-	width="600"
-	height="450"
-	persist="screenX screenY width height sizemode"
-	windowtype="abp:settings">
-
-<script type="application/x-javascript;version=1.7" src="utils.js"/>
-<script type="application/x-javascript;version=1.7" src="settings.js"/>
-<script type="application/x-javascript;version=1.7" src="findbar.js"/>
-
-<keyset id="adblockKeys">
-	<key id="synchsubscription-key" key="t" modifiers="accel"/>
-	<key id="synchsubscriptions-key" key="t" modifiers="accel,shift" command="synchsubscriptions-command"/>
-	<key id="import-key" key="i" modifiers="accel" command="import-command"/>
-	<key id="export-key" key="e" modifiers="accel" command="export-command"/>
-	<key id="selectall-key" key="a" modifiers="accel" command="selectall-command"/>
-	<key id="copy-key" key="c" modifiers="accel" command="copy-command"/>
-	<key id="cut-key" key="x" modifiers="accel" command="cut-command"/>
-	<key id="paste-key" key="v" modifiers="accel" command="paste-command"/>
-	<key id="find-key" key="f" modifiers="accel" command="find-command"/>
-	<key id="find-again-key" key="g" modifiers="accel" command="find-again-command"/>
-	<key id="find-previous-key" key="g" modifiers="accel,shift" command="find-previous-command"/>
-	<key id="find-again-key2" keycode="VK_F3" command="find-again-command"/>
-	<key id="find-previous-key2" keycode="VK_F3" modifiers="shift" command="find-previous-command"/>
-	<key id="edit-key" keycode="VK_ENTER"/>
-	<key id="remove-key" keycode="VK_DELETE"/>
-	<key id="addfilter-key" keycode="VK_INSERT"/>
-	<key id="moveup-key" keycode="VK_UP" modifiers="accel"/>
-	<key id="movedown-key" keycode="VK_DOWN" modifiers="accel"/>
-	<key id="movegroupup-key" keycode="VK_UP" modifiers="accel,shift"/>
-	<key id="movegroupdown-key" keycode="VK_DOWN" modifiers="accel,shift"/>
-</keyset>
-
-<commandset id="abpCommands">
-	<command id="addsubscription-command" oncommand="editSubscription(null)"/>
-	<command id="synchsubscriptions-command" oncommand="synchAllSubscriptions()"/>
-	<command id="import-command" oncommand="importList()"/>
-	<command id="export-command" oncommand="exportList()"/>
-	<command id="selectall-command" oncommand="treeView.selection.selectAll()"/>
-	<command id="copy-command" oncommand="copyToClipboard()"/>
-	<command id="cut-command" oncommand="copyToClipboard(); removeFilters(false)"/>
-	<command id="paste-command" oncommand="pasteFromClipboard()"/>
-	<command id="remove-command" oncommand="removeFilters(true)"/>
-	<command id="find-command" oncommand="E('findbar').startFind(E('findbar').FIND_NORMAL)"/>
-	<command id="find-again-command" oncommand="E('findbar').onFindAgainCommand(false)"/>
-	<command id="find-previous-command" oncommand="E('findbar').onFindAgainCommand(true)"/>
-</commandset>
-
-<popupset id="abpPopups">
-	<menupopup id="listitem-context" onpopupshowing="return fillContext()">
-		<menuitem id="context-synchsubscription" label="&context.synchsubscription.label;" oncommand="synchSubscription()" key="synchsubscription-key" />
-		<menuitem id="context-editsubscription" label="&context.editsubscription.label;…" oncommand="editFilter('subscription')" key="edit-key"/>
-		<menuitem id="context-edit" label="&context.edit.label;" oncommand="editFilter('filter')" key="edit-key"/>
-		<menuitem id="context-resethitcount" label="&context.resethitcount.label;…" oncommand="resetHitCounts(false)"/>
-		<menuitem id="context-moveup" label="&context.moveup.label;" oncommand="treeView.moveFilter(true)" key="moveup-key"/>
-		<menuitem id="context-movedown" label="&context.movedown.label;" oncommand="treeView.moveFilter(false)" key="movedown-key"/>
-		<menuseparator/>
-		<menuitem id="context-cut" label="&cut.label;" accesskey="&cut.accesskey;" command="cut-command" key="cut-key"/>
-		<menuitem id="context-copy" label="&copy.label;" accesskey="&copy.accesskey;" command="copy-command" key="copy-key"/>
-		<menuitem id="context-paste" label="&paste.label;" accesskey="&paste.accesskey;" command="paste-command" key="paste-key"/>
-		<menuitem id="context-remove" label="&remove.label;" accesskey="&remove.accesskey;" command="remove-command" key="remove-key"/>
-		<menuitem id="context-enable" label="&context.enable.label;" oncommand="toggleDisabled()"/>
-		<menuitem id="context-disable" label="&context.disable.label;" oncommand="toggleDisabled()"/>
-		<menuseparator/>
-		<menuitem id="context-movegroupup" label="&context.movegroupup.label;" oncommand="treeView.moveSubscription(true)" key="movegroupup-key"/>
-		<menuitem id="context-movegroupdown" label="&context.movegroupdown.label;" oncommand="treeView.moveSubscription(false)" key="movegroupdown-key"/>
-	</menupopup>
-	<menupopup id="treecols-context" onpopupshowing="fillViewPopup('context-')"/>
-	<tooltip id="tree-tooltip" onpopupshowing="return showTreeTooltip(event);"/>
-</popupset>
-
-<toolbox id="menuToolbox">
-	<menubar id="menu" onpopupshowing="treeView.stopEditor(true, true);">
-		<menu id="filters-menu" label="&filters.label;" accesskey="&filters.accesskey;">
-			<menupopup id="filters-popup" onpopupshowing="fillFiltersPopup()">
-				<menuitem id="addfilter" label="&add.label;…" accesskey="&add.accesskey;" key="addfilter-key" oncommand="treeView.startEditor(true)"/>
-				<menuseparator/>
-				<menuitem id="addsubscription" label="&addsubscription.label;…" accesskey="&addsubscription.accesskey;" command="addsubscription-command"/>
-				<menuitem id="synchsubscriptions" label="&synchsubscriptions.label;" accesskey="&synchsubscriptions.accesskey;" key="synchsubscriptions-key" command="synchsubscriptions-command"/>
-				<menuseparator/>
-				<menuitem id="import" label="&import.label;…" accesskey="&import.accesskey;" key="import-key" command="import-command"/>
-				<menuitem id="export" label="&export.label;…" accesskey="&export.accesskey;" key="export-key" command="export-command"/>
-				<menuitem id="clearall" label="&clearall.label;…" accesskey="&clearall.accesskey;" oncommand="clearList()"/>
-				<menuseparator/>
-				<menuitem id="resethitcounts" label="&resethitcounts.label;…" accesskey="&resethitcounts.accesskey;" oncommand="resetHitCounts(true)"/>
-			</menupopup>
-		</menu>
-		<menu id="edit-menu" label="&edit.label;" accesskey="&edit.accesskey;">
-			<menupopup id="edit-popup">
-				<menuitem id="cut" label="&cut.label;" accesskey="&cut.accesskey;" command="cut-command" key="cut-key"/>
-				<menuitem id="copy" label="&copy.label;" accesskey="&copy.accesskey;" command="copy-command" key="copy-key"/>
-				<menuitem id="paste" label="&paste.label;" accesskey="&paste.accesskey;" command="paste-command" key="paste-key"/>
-				<menuitem id="remove" label="&remove.label;" accesskey="&remove.accesskey;" command="remove-command" key="remove-key"/>
-				<menuseparator/>
-				<menuitem id="find" label="&menu.find.label;…" accesskey="&menu.find.accesskey;" command="find-command" key="find-key"/>
-				<menuitem id="find-again" label="&menu.findagain.label;" accesskey="&menu.findagain.accesskey;" command="find-again-command" key="find-again-key"/>
-			</menupopup>
-		</menu>
-		<menu id="view-menu" label="&view.label;" accesskey="&view.accesskey;">
-			<menupopup id="view-popup" onpopupshowing="fillViewPopup('')">
-				<menuitem id="view-filter" label="&filter.column;" accesskey="&filter.accesskey;" type="checkbox" disabled="true"/>
-				<menuitem id="view-slow" label="&slow.column;" accesskey="&slow.accesskey;" type="checkbox" oncommand="toggleColumn('col-slow')"/>
-				<menuitem id="view-enabled" label="&enabled.column;" accesskey="&enabled.accesskey;" type="checkbox" oncommand="toggleColumn('col-enabled')"/>
-				<menuitem id="view-hitcount" label="&hitcount.column;" accesskey="&hitcount.accesskey;" type="checkbox" oncommand="toggleColumn('col-hitcount')"/>
-				<menuitem id="view-lasthit" label="&lasthit.column;" accesskey="&lasthit.accesskey;" type="checkbox" oncommand="toggleColumn('col-lasthit')"/>
-				<menuseparator/>
-				<menu id="sort-menu" label="&sort.label;" accesskey="&sort.accesskey;">
-					<menupopup id="sort-popup">
-						<menuitem id="sort-none" label="&sort.none.label;" accesskey="&sort.none.accesskey;" type="radio" name="sortColumn" oncommand="sortBy(null)"/>
-						<menuitem id="sort-filter" label="&filter.column;" accesskey="&filter.accesskey;" type="radio" name="sortColumn" oncommand="sortBy('col-filter')"/>
-						<menuitem id="sort-slow" label="&slow.column;" accesskey="&slow.accesskey;" type="radio" name="sortColumn" oncommand="sortBy('col-slow')"/>
-						<menuitem id="sort-enabled" label="&enabled.column;" accesskey="&enabled.accesskey;" type="radio" name="sortColumn" oncommand="sortBy('col-enabled')"/>
-						<menuitem id="sort-hitcount" label="&hitcount.column;" accesskey="&hitcount.accesskey;" type="radio" name="sortColumn" oncommand="sortBy('col-hitcount')"/>
-						<menuitem id="sort-lasthit" label="&lasthit.column;" accesskey="&lasthit.accesskey;" type="radio" name="sortColumn" oncommand="sortBy('col-lasthit')"/>
-						<menuseparator/>
-						<menuitem id="sort-asc" label="&sort.ascending.label;" accesskey="&sort.ascending.accesskey;" type="radio" name="sortOrder" oncommand="setSortOrder('ascending')"/>
-						<menuitem id="sort-desc" label="&sort.descending.label;" accesskey="&sort.descending.accesskey;" type="radio" name="sortOrder" oncommand="setSortOrder('descending')"/>
-					</menupopup>
-				</menu>
-			</menupopup>
-		</menu>
-		<menu id="options-menu" label="&options.label;" accesskey="&options.accesskey;">
-			<menupopup id="options-popup" onpopupshowing="fillOptionsPopup()">
-				<menuitem id="abp-enabled" label="&enable.label;" accesskey="&enable.accesskey;" type="checkbox" oncommand="togglePref('enabled')"/>
-				<menuseparator/>
-				<menuitem id="frameobjects" label="&objecttabs.label;" accesskey="&objecttabs.accesskey;" type="checkbox" oncommand="togglePref('frameobjects')"/>
-				<menuitem id="slowcollapse" label="&collapse.label;" accesskey="&collapse.accesskey;" type="checkbox" oncommand="togglePref('fastcollapse')"/>
-				<menuitem id="sync" label="&sync.label;" accesskey="&sync.accesskey;" type="checkbox" oncommand="toggleSync();"/>
-				<menuseparator/>
-				<menuitem id="showintoolbar" label="&showintoolbar.label;" accesskey="&showintoolbar.accesskey;" type="checkbox" oncommand="togglePref('showintoolbar')"/>
-				<menuitem id="showinstatusbar" label="&showinstatusbar.label;" accesskey="&showinstatusbar.accesskey;" type="checkbox" oncommand="togglePref('showinstatusbar')"/>
-			</menupopup>
-		</menu>
-		<menu id="help-menu" label="&help.label;" accesskey="&help.accesskey;">
-			<menupopup id="help-popup">
-				<menuitem id="gettingStartedLink" label="&gettingStarted.label;" accesskey="&gettingStarted.accesskey;" oncommand="Utils.loadDocLink('gettingStarted');"/>
-				<menuitem id="faqLink" label="&faq.label;" accesskey="&faq.accesskey;" oncommand="Utils.loadDocLink('faq');"/>
-				<menuitem id="filtersLink" label="&filterdoc.label;" accesskey="&filterdoc.accesskey;" oncommand="Utils.loadDocLink('filterdoc');"/>
-				<menuseparator/>
-				<menuitem id="aboutAbp" label="&about.label;…" accesskey="&about.accesskey;" oncommand="openAbout()"/>
-			</menupopup>
-		</menu>
-	</menubar>
-</toolbox>
-
-<description id="introduction">
-	&description;
-</description>
-
-<button id="applyButton" class="dialog-button" hidden="true" label="&apply.label;" accesskey="&apply.accesskey;" oncommand="applyChanges()"/>
-
-<vbox id="listarea" flex="1">
-	<stack id="listStack" flex="1">
-		<tree id="list" onselect="updateCommands()" context="listitem-context" persist="closedSubscriptions" flex="1" seltype="multiple" hidecolumnpicker="true" enableColumnDrag="true">
-			<treecols context="treecols-context">
-				<treecol id="col-filter" label="&filter.column;" primary="true" flex="10" persist="width ordinal sortDirection hidden"/>
-				<splitter class="tree-splitter"/>
-				<treecol id="col-slow" label="!" flex="0" width="16" persist="width ordinal sortDirection hidden"/>
-				<splitter class="tree-splitter"/>
-				<treecol id="col-enabled" label="&enabled.column;" flex="0" persist="width ordinal sortDirection hidden"/>
-				<splitter class="tree-splitter"/>
-				<treecol id="col-hitcount" label="&hitcount.column;" flex="0" persist="width ordinal sortDirection hidden"/>
-				<splitter class="tree-splitter"/>
-				<treecol id="col-lasthit" label="&lasthit.column;" hidden="true" flex="4" persist="width ordinal sortDirection hidden"/>
-			</treecols>
-
-			<treechildren id="treechildren" tooltip="tree-tooltip" onclick="onListClick(event)" ondblclick="onListDblClick(event)" ondragstart="onListDragStart(event);" ondragend="onListDragEnd(event);"/>
-		</tree>
-		<hbox id="listEditorParent" align="center" hidden="true">
-			<textbox id="listEditor" class="tree-input" flex="1"/>
-			<image id="listEditorIcon" onclick="if (event.button == 0) treeView.stopEditor(false);" />
-		</hbox>
-	</stack>
-
-	<findbar id="findbar"/>
-</vbox>
-
-</dialog>
+<!DOCTYPE vbox SYSTEM "chrome://adblockplus/locale/overlay.dtd">
+
+<window
+		xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+		width="1"
+		height="1"
+		onload="window.close();AppIntegration.openMenu(window.opener);">
+	<script type="application/x-javascript;version=1.7" src="utils.js"/>
+
+	<setting type="control">
+		<button id="adblockplus-filters" label="&filters.label;…"/>
+	</setting>
+	<setting pref="extensions.adblockplus.enabled" type="bool" inverted="true" title="&disable.label;"/>
+	<setting pref="extensions.adblockplus.frameobjects" type="bool" title="&objecttabs.label;"/>
+	<setting pref="extensions.adblockplus.fastcollapse" type="bool" inverted="true" title="&hideplaceholders.label;"/>
+	<setting id="adblockplus-savestats" type="bool" title="&counthits.label;"/>
+	<setting id="adblockplus-sync" type="bool" title="&sync.label;"/>
+	<setting id="adblockplus-showinaddonbar" type="bool" title="&showinaddonbar.label;"/>
+	<setting id="adblockplus-showintoolbar" type="bool" title="&showintoolbar.label;"/>
+	<setting id="adblockplus-showinstatusbar" pref="extensions.adblockplus.showinstatusbar" type="bool" title="&showinstatusbar.label;"/>
+</window>
diff --git a/chrome/adblockplus.jar!/content/ui/sidebar.js b/chrome/adblockplus.jar!/content/ui/sidebar.js
index 9afc546..8e0d4ec 100644
--- a/chrome/adblockplus.jar!/content/ui/sidebar.js
+++ b/chrome/adblockplus.jar!/content/ui/sidebar.js
@@ -92,7 +92,7 @@ function init() {
 
 	// Initialize matcher for disabled filters
 	reloadDisabledFilters();
-	FilterStorage.addObserver(reloadDisabledFilters);
+	FilterNotifier.addListener(reloadDisabledFilters);
 	Prefs.addListener(onPrefChange);
 
 	// Activate flasher
@@ -114,7 +114,7 @@ function mainUnload() {
 function cleanUp() {
 	flasher.stop();
 	requestNotifier.shutdown();
-	FilterStorage.removeObserver(reloadDisabledFilters);
+	FilterNotifier.removeListener(reloadDisabledFilters);
 	Prefs.removeListener(onPrefChange);
 	E("list").view = null;
 
@@ -132,12 +132,25 @@ function onPrefChange(name)
 		reloadDisabledFilters();
 }
 
+let reloadDisabledScheduled = false;
+
 /**
  * Updates matcher for disabled filters (global disabledMatcher variable),
- * called on each filter change.
+ * called on each filter change. Execute delayed to prevent multiple subsequent
+ * invocations.
  */
 function reloadDisabledFilters()
 {
+	if (reloadDisabledScheduled)
+		return;
+
+	Utils.runAsync(reloadDisabledFiltersInternal);
+	reloadDisabledScheduled = true;
+}
+
+function reloadDisabledFiltersInternal()
+{
+	reloadDisabledScheduled = false;
 	disabledMatcher.clear();
 
 	if (Prefs.enabled)
@@ -427,7 +440,8 @@ function doBlock() {
 	openDialog("chrome://adblockplus/content/ui/composer.xul", "_blank", "chrome,centerscreen,resizable,dialog=no,dependent", item.nodes, item.orig);
 }
 
-function editFilter() {
+function editFilter()
+{
 	var item = treeView.getSelectedItem();
 	if (treeView.data && !treeView.data.length)
 		item = treeView.getDummyTooltip();
@@ -438,13 +452,11 @@ function editFilter() {
 	if (!("location") in item)
 		item.location = undefined
 
-	Utils.openSettingsDialog(item.location, item.filter);
+	Utils.openFiltersDialog(item.filter);
 }
 
 function enableFilter(filter, enable) {
 	filter.disabled = !enable;
-	FilterStorage.triggerObservers(enable ? "filters enable" : "filters disable", [filter]);
-	FilterStorage.saveToDisk();
 
 	treeView.boxObject.invalidate();
 }
@@ -501,17 +513,13 @@ function disableOnSite(item, /**Filter*/ filter, /**String*/ domain)
 	// Insert new filter before the old one and remove the old one then
 	let newFilter = Filter.fromText(text);
 	if (newFilter.disabled && newFilter.subscriptions.length)
-	{
 		newFilter.disabled = false;
-		FilterStorage.triggerObservers("filters enable", [newFilter]);
-	}
 	else if (!newFilter.subscriptions.length)
 	{
 		newFilter.disabled = false;
 		FilterStorage.addFilter(newFilter, filter);
 	}
 	FilterStorage.removeFilter(filter);
-	FilterStorage.saveToDisk();
 
 	// Update display
 	item.filter = null;
@@ -523,8 +531,7 @@ function copyToClipboard() {
 	if (!items.length)
 		return;
 
-	var clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
-	clipboardHelper.copyString(items.map(function(item) {return item.location}).join(Utils.getLineBreak()));
+	Utils.clipboardHelper.copyString(items.map(function(item) {return item.location}).join(Utils.getLineBreak()));
 }
 
 function copyFilter() {
@@ -535,8 +542,7 @@ function copyFilter() {
 	if (!items.length)
 		return;
 
-	var clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
-	clipboardHelper.copyString(items.map(function(item) {return item.filter.text}).join(Utils.getLineBreak()));
+	Utils.clipboardHelper.copyString(items.map(function(item) {return item.filter.text}).join(Utils.getLineBreak()));
 }
 
 function selectAll() {
@@ -663,9 +669,20 @@ function compareDocDomain(item1, item2)
 		return 0;
 }
 
+function compareFilterSource(item1, item2)
+{
+	let subs1 = item1.filter ? item1.filter.subscriptions.map(function(s) s.title).join(", ") : "";
+	let subs2 = item2.filter ? item2.filter.subscriptions.map(function(s) s.title).join(", ") : "";
+	if (subs1 < subs2)
+		return -1;
+	else if (subs1 > subs2)
+		return 1;
+	else
+		return 0;
+}
+
 function createSortWithFallback(cmpFunc, fallbackFunc, desc) {
 	var factor = (desc ? -1 : 1);
-
 	return function(item1, item2) {
 		var ret = cmpFunc(item1, item2);
 		if (ret == 0)
@@ -710,15 +727,12 @@ var treeView = {
 	setTree: function(boxObject) {
 		if (!boxObject)
 			return;
-
 		this.boxObject = boxObject;
 		this.itemsDummy = boxObject.treeBody.getAttribute("noitemslabel");
 		this.whitelistDummy = boxObject.treeBody.getAttribute("whitelistedlabel");
-
-		var stringAtoms = ["col-address", "col-type", "col-filter", "col-state", "col-size", "col-docDomain", "state-regular", "state-filtered", "state-whitelisted", "state-hidden"];
+		var stringAtoms = ["col-address", "col-type", "col-filter", "col-state", "col-size", "col-docDomain", "col-filterSource", "state-regular", "state-filtered", "state-whitelisted", "state-hidden"];
 		var boolAtoms = ["selected", "dummy", "filter-disabled"];
 		var atomService = Cc["@mozilla.org/atom-service;1"].getService(Ci.nsIAtomService);
-
 		this.atoms = {};
 		for each (let atom in stringAtoms)
 			this.atoms[atom] = atomService.getAtom(atom);
@@ -771,21 +785,16 @@ var treeView = {
 		// Prevent a reference through closures
 		boxObject = null;
 	},
-
 	get rowCount() {
 		return (this.data && this.data.length ? this.data.length : 1);
 	},
-
 	getCellText: function(row, col) {
 		col = col.id;
-
-		if (col != "type" && col != "address" && col != "filter" && col != "size" && col != "docDomain")
+		if (col != "type" && col != "address" && col != "filter" && col != "size" && col != "docDomain" && col != "filterSource")
 			return "";
-
 		if (this.data && this.data.length) {
 			if (row >= this.data.length)
 				return "";
-
 			if (col == "type")
 				return this.data[row].localizedDescr;
 			else if (col == "filter")
@@ -797,6 +806,13 @@ var treeView = {
 			}
 			else if (col == "docDomain")
 				return this.data[row].docDomain + " " + (this.data[row].thirdParty ? docDomainThirdParty : docDomainFirstParty);
+			else if (col == "filterSource")
+			{
+				if (!this.data[row].filter)
+					return "";
+
+				return this.data[row].filter.subscriptions.filter(function(s) !s.disabled).map(function(s) s.title).join(", ");
+			}
 			else
 				return this.data[row].location;
 		}
@@ -804,7 +820,6 @@ var treeView = {
 			// Empty list, show dummy
 			if (row > 0 || (col != "address" && col != "filter"))
 				return "";
-
 			if (col == "filter") {
 				var filter = Policy.isWindowWhitelisted(window.content);
 				return filter ? filter.text : "";
@@ -952,12 +967,12 @@ var treeView = {
 		size: createSortWithFallback(compareSize, sortByAddress, false),
 		sizeDesc: createSortWithFallback(compareSize, sortByAddress, true),
 		docDomain: createSortWithFallback(compareDocDomain, sortByAddress, false),
-		docDomainDesc: createSortWithFallback(compareDocDomain, sortByAddress, true)
+		docDomainDesc: createSortWithFallback(compareDocDomain, sortByAddress, true),
+		filterSource: createSortWithFallback(compareFilterSource, sortByAddress, false),
+		filterSourceDesc: createSortWithFallback(compareFilterSource, sortByAddress, true)
 	},
-
 	clearData: function(data) {
 		var oldRows = this.rowCount;
-
 		this.allData = [];
 		this.dataMap = {__proto__: null};
 		this.refilter();
@@ -1075,6 +1090,7 @@ var treeView = {
 
 		return (item.location.toLowerCase().indexOf(this.filter) >= 0 ||
 						(item.filter && item.filter.text.toLowerCase().indexOf(this.filter) >= 0) ||
+						item.typeDescr.toLowerCase().indexOf(this.filter) >= 0 ||
 						item.localizedDescr.toLowerCase().indexOf(this.filter) >= 0 ||
 						(item.docDomain && item.docDomain.toLowerCase().indexOf(this.filter) >= 0) ||
 						(item.docDomain && item.thirdParty && docDomainThirdParty.toLowerCase().indexOf(this.filter) >= 0) ||
diff --git a/chrome/adblockplus.jar!/content/ui/sidebar.xul b/chrome/adblockplus.jar!/content/ui/sidebar.xul
index a5b379d..4782b58 100644
--- a/chrome/adblockplus.jar!/content/ui/sidebar.xul
+++ b/chrome/adblockplus.jar!/content/ui/sidebar.xul
@@ -133,8 +133,9 @@
 			<treecol id="size" label="&size.label;" width="60" hidden="true" persist="width ordinal sortDirection hidden"/>
 			<splitter class="tree-splitter"/>
 			<treecol id="docDomain" label="&docDomain.label;" width="100" hidden="true" persist="width ordinal sortDirection hidden"/>
+			<splitter class="tree-splitter"/>
+			<treecol id="filterSource" label="&filterSource.label;" width="100" hidden="true" persist="width ordinal sortDirection hidden"/>
 		</treecols>
-
 		<treechildren id="treechildren"
 									tooltip="tooltip"
 									onclick="handleClick(event)"
diff --git a/chrome/adblockplus.jar!/content/ui/subscriptionSelection.js b/chrome/adblockplus.jar!/content/ui/subscriptionSelection.js
index 84b5be9..e1be22d 100644
--- a/chrome/adblockplus.jar!/content/ui/subscriptionSelection.js
+++ b/chrome/adblockplus.jar!/content/ui/subscriptionSelection.js
@@ -22,323 +22,26 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
-let newInstall = true;
-let savedDialogFlex = null;
-let editMode = true;
-let autoAdd = false;
-let source = null;
-let result = null;
-let initialized = false;
-
-/**
- * Suppresses window resizing while the window is loading or if the window is loaded in a browser tab.
- * @type Boolean
- */
-let suppressResize = true;
-
-let closing = false;
 let subscriptionListLoading = false;
-let otherButton = null;
 
 function init()
 {
-	if (window.arguments  && window.arguments.length)
-	{
-		newInstall = false;
-		[source, result] = window.arguments;
-		if (window.arguments.length > 2 && window.arguments[2])
-			window.hasSubscription = window.arguments[2];
-	}
-
-	if (newInstall && Utils.isFennec)
-	{
-		// HACK: In Fennec 4.0 menulist elements won't work "by themselves". We
-		// have to go to the top level and trigger MenuListHelperUI manually.
-		let topWnd = window.QueryInterface(Ci.nsIInterfaceRequestor)
-											 .getInterface(Ci.nsIWebNavigation)
-											 .QueryInterface(Ci.nsIDocShellTreeItem)
-											 .rootTreeItem
-											 .QueryInterface(Ci.nsIInterfaceRequestor)
-											 .getInterface(Ci.nsIDOMWindow);
-		if (topWnd.wrappedJSObject)
-			topWnd = topWnd.wrappedJSObject;
-
-		let menulist = E("subscriptions");
-		if ("MenuListHelperUI" in topWnd && menulist.parentNode.localName != "stack")
-		{
-			// Add a layer on top of the menulist to handle clicks, menulist clicks
-			// are otherwise ignored and cannot be intercepted
-			let stack = document.createElement("stack");
-			menulist.parentNode.replaceChild(stack, menulist);
-			stack.appendChild(menulist);
-
-			let clickLayer = document.createElement("hbox");
-			stack.appendChild(clickLayer);
-
-			clickLayer.addEventListener("click", function(event)
-			{
-				if (event.button == 0 && !menulist.disabled && menulist.itemCount)
-				{
-					menulist.focus();
-					topWnd.MenuListHelperUI.show(menulist);
-				}
-			}, true);
-
-			// menulist needs to be initialized after being moved, re-run init() later
-			Utils.runAsync(init);
-			return;
-		}
-
-		// The template is being displayed as a list item, remove it
-		let subscriptionsTemplate = E("subscriptionsTemplate");
-		if (subscriptionsTemplate && subscriptionsTemplate.parentNode)
-			subscriptionsTemplate.parentNode.removeChild(subscriptionsTemplate);
-
-		// window.close() closes the entire window (bug 642604), make sure to close
-		// only a single tab instead.
-		if ("BrowserUI" in topWnd)
-		{
-			window.close = function()
-			{
-				topWnd.BrowserUI.closeTab();
-			};
-		}
-	}
-
-	if (!result)
-	{
-		result = {};
-		autoAdd = true;
-	}
-	if (!source)
-	{
-		editMode = false;
-		source = {title: "", url: "", disabled: false, external: false, autoDownload: true, mainSubscriptionTitle: null, mainSubscriptionURL: null};
-	}
-	else
-	{
-		if (typeof source.mainSubscriptionURL == "undefined")
-			source.mainSubscriptionURL = source.mainSubscriptionTitle = null;
-	}
-
-	if (newInstall && !Utils.isFennec)
-	{
-		// HACK: We will remove dialog content box flex if a subscription is
-		// selected, need to find the content box and save it flex value.
-		let docContent = document.getAnonymousNodes(document.documentElement);
-		docContent = (docContent && docContent.length ? docContent[0] : null);
-		if (docContent && docContent.hasAttribute("class") &&
-				/\bdialog-content-box\b/.test(docContent.getAttribute("class")) &&
-				docContent.hasAttribute("flex"))
-		{
-			savedDialogFlex = [docContent, docContent.getAttribute("flex")]
-		}
-	}
-
-	E("description-newInstall").hidden = !newInstall;
-	if (newInstall)
-		document.documentElement.setAttribute("newInstall", "true");
-
-	E("subscriptionsBox").hidden = E("all-subscriptions-container").hidden
-		= E("subscriptionInfo").hidden = editMode;
-
-	E("fromWebText").hidden = !editMode || source instanceof Subscription;
-	E("editText").hidden = !(source instanceof Subscription) || source instanceof ExternalSubscription;
-	E("externalText").hidden = !(source instanceof ExternalSubscription);
-	E("differentSubscription").hidden = !editMode;
-
-	otherButton = document.documentElement.getButton("extra2");
-	if (!editMode)
-	{
-		// Transform the button into a text link
-		let link = document.createElement("label");
-		link.setAttribute("id", "otherButton");
-		link.setAttribute("class", "text-link");
-		link.setAttribute("value", otherButton.label);
-		link.setAttribute("accesskey", otherButton.accessKey);
-		link.setAttribute("control", "otherButton");
-		link.setAttribute("flex", "1");
-		link.setAttribute("crop", "end");
-
-		let handler = new Function("event", document.documentElement.getAttribute("ondialogextra2"));
-		link.addEventListener("command", handler, false);
-		link.addEventListener("click", handler, false);
-		link.addEventListener("keypress", function(event)
-		{
-			if (event.keyCode == event.DOM_VK_ENTER || event.keyCode == event.DOM_VK_RETURN)
-			{
-				this.doCommand();
-				event.preventDefault();
-			}
-		}, false);
-
-		otherButton.parentNode.setAttribute("align", "center");
-		otherButton.parentNode.replaceChild(link, otherButton);
-		otherButton = link;
-	}
-	otherButton.hidden = editMode;
-
-	setCustomSubscription(source.title, source.url,
-												source.mainSubscriptionTitle, source.mainSubscriptionURL);
-
-	if (source instanceof Subscription)
+	if (window.arguments && window.arguments.length && window.arguments[0])
 	{
-		document.title = document.documentElement.getAttribute("edittitle");
-		document.documentElement.getButton("accept").setAttribute("label", document.documentElement.getAttribute("buttonlabelacceptedit"))
-	}
+		let source = window.arguments[0];
+		setCustomSubscription(source.title, source.url,
+													source.mainSubscriptionTitle, source.mainSubscriptionURL);
 
-	if (source instanceof ExternalSubscription)
-	{
-		E("location").setAttribute("disabled", "true");
-		E("autoDownload").setAttribute("disabled", "true");
-		E("autoDownload").checked = true;
+		E("all-subscriptions-container").hidden = true;
+		E("fromWebText").hidden = false;
 	}
 	else
-		E("autoDownload").checked = source.autoDownload;
-
-	initialized = true;
-
-	if (!editMode)
-	{
-		let list = E("subscriptions");
-		let items = list.menupopup.childNodes;
-		let selectedItem = null;
-		let selectedPrefix = null;
-		let matchCount = 0;
-		for (let i = 0; i < items.length; i++)
-		{
-			let item = items[i];
-			let prefixes = item.getAttribute("_prefixes");
-			if (!prefixes)
-				continue;
-	
-			if (!selectedItem)
-				selectedItem = item;
-	
-			let prefix = checkPrefixMatch(prefixes, Utils.appLocale);
-			if (prefix)
-			{
-				item.setAttribute("class", "localeMatch");
-				if (!selectedPrefix || selectedPrefix.length < prefix.length)
-				{
-					selectedItem = item;
-					selectedPrefix = prefix;
-					matchCount = 1;
-				}
-				else if (selectedPrefix && selectedPrefix.length == prefix.length)
-				{
-					matchCount++;
-
-					// If multiple items have a matching prefix of the same length:
-					// Select one of the items randomly, probability should be the same
-					// for all items. So we replace the previous match here with
-					// probability 1/N (N being the number of matches).
-					if (Math.random() * matchCount < 1)
-					{
-						selectedItem = item;
-						selectedPrefix = prefix;
-					}
-				}
-			}
-		}
-		list.selectedItem = selectedItem;
-	}
-
-	// Only resize if we are a chrome window (not loaded into a browser tab)
-	if (window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShellTreeItem).itemType == Ci.nsIDocShellTreeItem.typeChrome)
-		suppressResize = false;
-}
-
-function checkPrefixMatch(prefixes, appLocale)
-{
-	if (!prefixes)
-		return null;
-
-	for each (let prefix in prefixes.split(/,/))
-		if (new RegExp("^" + prefix + "\\b").test(appLocale))
-			return prefix;
-
-	return null;
-}
-
-function collapseElements()
-{
-	if (!suppressResize && window.windowState == Ci.nsIDOMChromeWindow.STATE_NORMAL)
-	{
-		let diff = 0;
-		for (let i = 0; i < arguments.length; i++)
-			diff -= arguments[i].boxObject.height;
-		window.resizeBy(0, diff);
-		window.moveBy(0, -diff/2);
-	}
-	for (let i = 0; i < arguments.length; i++)
-		arguments[i].hidden = true;
-}
-
-function showElements()
-{
-	for (let i = 0; i < arguments.length; i++)
-		arguments[i].hidden = false;
-
-	let scrollBox = E("content-scroll").boxObject;
-	if (!suppressResize && window.windowState == Ci.nsIDOMChromeWindow.STATE_NORMAL && scrollBox instanceof Ci.nsIScrollBoxObject)
-	{
-		// Force reflow
-		for (let i = 0; i < arguments.length; i++)
-			arguments[i].boxObject.height;
-
-		let scrollHeight = {};
-		scrollBox.getScrolledSize({}, scrollHeight);
-		if (scrollHeight.value > scrollBox.height)
-		{
-			let diff = scrollHeight.value - scrollBox.height;
-			window.resizeBy(0, diff);
-			window.moveBy(0, -diff/2);
-		}
-	}
-}
-
-function onSelectionChange()
-{
-	if (!initialized)
-		return;
-
-	let selectedSubscription = E("subscriptions").value;
-
-	// Show/hide extra UI widgets for custom subscriptions, resize window appropriately
-	let container = E("all-subscriptions-container");
-	let inputFields = E("differentSubscription");
-	if (container.hidden && !selectedSubscription)
-		showElements(container, inputFields);
-	else if (!container.hidden && selectedSubscription)
-		collapseElements(container, inputFields);
-
-	// Make sure to hide "Add different subscription button" if we are already in that mode
-	otherButton.hidden = !selectedSubscription;
-
-	if (!selectedSubscription)
-	{
 		loadSubscriptionList();
-		E("title").focus();
-	}
-
-	if (savedDialogFlex)
-	{
-		let [docContent, flex] = savedDialogFlex;
-		if (selectedSubscription)
-			docContent.removeAttribute("flex");
-		else
-			docContent.setAttribute("flex", flex);
-	}
-
-	updateSubscriptionInfo();
 }
 
 function updateSubscriptionInfo()
 {
-	let selectedSubscription = E("subscriptions").selectedItem;
-	if (!selectedSubscription.value)
-		selectedSubscription = E("all-subscriptions").selectedItem;
+	let selectedSubscription = E("all-subscriptions").selectedItem;
 
 	E("subscriptionInfo").setAttribute("invisible", !selectedSubscription);
 	if (selectedSubscription)
@@ -391,6 +94,8 @@ function loadSubscriptionList()
 		try
 		{
 			processSubscriptionList(request.responseXML);
+			E("all-subscriptions").selectedIndex = 0;
+			E("all-subscriptions").focus();
 		}
 		catch (e)
 		{
@@ -400,8 +105,8 @@ function loadSubscriptionList()
 	};
 
 	request.open("GET", Prefs.subscriptions_listurl);
-	request.onerror = errorHandler;
-	request.onload = successHandler;
+	request.addEventListener("error", errorHandler, false);
+	request.addEventListener("load", successHandler, false);
 	request.send(null);
 
 	subscriptionListLoading = true;
@@ -457,11 +162,11 @@ function addSubscriptions(list, parent, level, parentTitle, parentURL)
 			let title = document.createElement("description");
 			if (isFirst)
 			{
-				if (checkPrefixMatch(node.getAttribute("prefixes"), Utils.appLocale))
+				if (Utils.checkLocalePrefixMatch(node.getAttribute("prefixes")))
 					title.setAttribute("class", "subscriptionTitle localeMatch");
 				else
 					title.setAttribute("class", "subscriptionTitle");
-				title.textContent = node.getAttribute("title");
+				title.textContent = node.getAttribute("title") + " (" + node.getAttribute("specialization") + ")";
 				mainTitle = variant.getAttribute("title");
 				mainURL = variant.getAttribute("url");
 				isFirst = false;
@@ -485,7 +190,7 @@ function addSubscriptions(list, parent, level, parentTitle, parentURL)
 	}
 }
 
-function onAllSelectionChange()
+function onSelectionChange()
 {
 	let selectedItem = E("all-subscriptions").selectedItem;
 	if (!selectedItem)
@@ -506,8 +211,8 @@ function setCustomSubscription(title, url, mainSubscriptionTitle, mainSubscripti
 	let addMainCheckbox = E("addMainSubscription");
 	if (mainSubscriptionURL && !hasSubscription(mainSubscriptionURL))
 	{
-		if (messageElement.hidden)
-			showElements(messageElement, addMainCheckbox);
+		messageElement.removeAttribute("invisible");
+		addMainCheckbox.removeAttribute("invisible");
 
 		let beforeLink, afterLink;
 		if (/(.*)\?1\?(.*)/.test(messageElement.getAttribute("_textTemplate")))
@@ -531,18 +236,17 @@ function setCustomSubscription(title, url, mainSubscriptionTitle, mainSubscripti
 		addMainCheckbox.label = addMainCheckbox.getAttribute("_labelTemplate").replace(/\?1\?/g, mainSubscriptionTitle);
 		addMainCheckbox.accessKey = addMainCheckbox.accessKey;
 	}
-	else if (!messageElement.hidden)
-		collapseElements(messageElement, addMainCheckbox);
-}
-
-function selectCustomSubscription()
-{
-	let list = E("subscriptions")
-	list.selectedItem = list.menupopup.lastChild;
+	else
+	{
+		messageElement.setAttribute("invisible", "true");
+		addMainCheckbox.setAttribute("invisible", "true");
+	}
 }
 
 function validateURL(url)
 {
+	if (!url)
+		return null;
 	url = url.replace(/^\s+/, "").replace(/\s+$/, "");
 
 	// Is this a file path?
@@ -562,110 +266,52 @@ function validateURL(url)
 
 function addSubscription()
 {
-	let list = E("subscriptions");
-	let url;
-	let title;
-	let autoDownload;
-	if (list.value)
+	let url = E("location").value;
+	url = validateURL(url);
+	if (!url)
 	{
-		url = list.value;
-		title = list.label;
-		autoDownload = true;
+		Utils.alert(window, Utils.getString("subscription_invalid_location"));
+		E("location").focus();
+		return false;
 	}
-	else
-	{
-		url = E("location").value;
-		if (!(source instanceof ExternalSubscription))
-			url = validateURL(url);
-		if (!url)
-		{
-			Utils.alert(window, Utils.getString("subscription_invalid_location"));
-			E("location").focus();
-			return false;
-		}
 
-		title = E("title").value.replace(/^\s+/, "").replace(/\s+$/, "");
-		if (!title)
-			title = url;
-
-		autoDownload = E("autoDownload").checked;
-	}
+	let title = E("title").value.replace(/^\s+/, "").replace(/\s+$/, "");
+	if (!title)
+		title = url;
 
-	result.url = url;
-	result.title = title;
-	result.autoDownload = autoDownload;
-	result.disabled = source.disabled;
+	doAddSubscription(url, title);
 
 	let addMainCheckbox = E("addMainSubscription")
-	if (!addMainCheckbox.hidden && addMainCheckbox.checked)
+	if (addMainCheckbox.getAttribute("invisible") != "true" && addMainCheckbox.checked)
 	{
-		result.mainSubscriptionTitle = addMainCheckbox.getAttribute("_mainSubscriptionTitle");
-		result.mainSubscriptionURL = addMainCheckbox.value;
+		let mainSubscriptionTitle = addMainCheckbox.getAttribute("_mainSubscriptionTitle");
+		let mainSubscriptionURL = validateURL(addMainCheckbox.value);
+		if (mainSubscriptionURL)
+			doAddSubscription(mainSubscriptionURL, mainSubscriptionTitle);
 	}
 
-	if (autoAdd)
-	{
-		doAddSubscription(result.url, result.title, result.autoDownload, result.disabled);
-		if ("mainSubscriptionURL" in result)
-			doAddSubscription(result.mainSubscriptionURL, result.mainSubscriptionTitle, result.autoDownload, result.disabled);
-	}
-
-	closing = true;
 	return true;
 }
 
 /**
  * Adds a new subscription to the list.
  */
-function doAddSubscription(/**String*/ url, /**String*/ title, /**Boolean*/ autoDownload, /**Boolean*/ disabled)
+function doAddSubscription(/**String*/ url, /**String*/ title)
 {
-	if (typeof autoDownload == "undefined")
-		autoDownload = true;
-	if (typeof disabled == "undefined")
-		disabled = false;
-
 	let subscription = Subscription.fromURL(url);
 	if (!subscription)
 		return;
 
 	FilterStorage.addSubscription(subscription);
 
-	if (disabled != subscription.disabled)
-	{
-		subscription.disabled = disabled;
-		FilterStorage.triggerObservers(disabled ? "subscriptions disable" : "subscriptions enable", [subscription]);
-	}
-
+	subscription.disabled = false;
 	subscription.title = title;
-	if (subscription instanceof DownloadableSubscription)
-		subscription.autoDownload = autoDownload;
-	FilterStorage.triggerObservers("subscriptions updateinfo", [subscription]);
 
 	if (subscription instanceof DownloadableSubscription && !subscription.lastDownload)
 		Synchronizer.execute(subscription);
-	FilterStorage.saveToDisk();
 }
 
 function hasSubscription(url)
 {
 	return FilterStorage.subscriptions.some(function(subscription) subscription instanceof DownloadableSubscription && subscription.url == url);
 }
-
-function checkUnload()
-{
-	if (newInstall && !closing)
-		return Utils.getString("subscription_notAdded_warning");
-
-	return undefined;
-}
-
-function onDialogCancel()
-{
-	let message = checkUnload();
-	if (!message)
-		return true;
-
-	message += " " + Utils.getString("subscription_notAdded_warning_addendum");
-	closing = Utils.confirm(window, message);
-	return closing;
-}
diff --git a/chrome/adblockplus.jar!/content/ui/subscriptionSelection.xul b/chrome/adblockplus.jar!/content/ui/subscriptionSelection.xul
index 67e98b2..c2e22c1 100644
--- a/chrome/adblockplus.jar!/content/ui/subscriptionSelection.xul
+++ b/chrome/adblockplus.jar!/content/ui/subscriptionSelection.xul
@@ -31,43 +31,29 @@
 
 <dialog
 	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-	buttons="accept,cancel,extra2"
+	buttons="accept,cancel"
 	buttonlabelaccept="&addSubscription.label;"
-	buttonlabelacceptedit="&saveSubscription.label;"
-	buttonlabelextra2="&other.label;"
-	buttonaccesskeyextra2="&other.accesskey;"
 	title="&dialog.title;"
-	edittitle="&dialog.title.edit;"
 	id="abpSubscriptionSelection"
 	windowtype="abp:subscriptionSelection"
-	onload="init()"
-	onbeforeunload="return checkUnload()"
-	ondialogcancel="return onDialogCancel()"
-	ondialogaccept="return addSubscription()"
-	ondialogextra2="selectCustomSubscription()">
+	onload="init();"
+	ondialogaccept="return addSubscription();">
 
-<script type="application/x-javascript;version=1.7" src="utils.js"/>
-<script type="application/x-javascript;version=1.7" src="subscriptionSelection.js"/>
+	<script type="application/x-javascript;version=1.7" src="utils.js"/>
+	<script type="application/x-javascript;version=1.7" src="subscriptionSelection.js"/>
 
-<scrollbox id="content-scroll" orient="vertical" flex="1">
-	<description id="description-newInstall">&description.newInstall;</description>
-	
-	<vbox id="subscriptionsBox">
-		<label control="subscriptions">&subscriptionSelector.label;</label>
-		<menulist id="subscriptions" label=" " onselect="onSelectionChange()">
-			<menupopup datasources="subscriptions.xml" ref="*" querytype="xml">
-				<template id="subscriptionsTemplate">
-					<menuitem uri="?" label="?title" value="?url" _url="?url" _homepage="?homepage" _prefixes="?prefixes"/>
-				</template>
-			</menupopup>
-		</menulist>
-	</vbox>
-	
-	<deck id="all-subscriptions-container" selectedIndex="0" flex="1" hidden="true">
+	<deck id="all-subscriptions-container" selectedIndex="0" flex="1">
 		<vbox pack="center">
 			<progressmeter id="all-subscriptions-loading" mode="undetermined"/>
 		</vbox>
-		<richlistbox id="all-subscriptions" onselect="onAllSelectionChange()"/>
+		<vbox>
+			<richlistbox id="all-subscriptions" onselect="onSelectionChange()" flex="1"/>
+			<hbox id="subscriptionInfo" invisible="true">
+				<label id="view-list" class="text-link" value="&viewList.label;" onclick="Utils.loadInBrowser(this.getAttribute('_url'))"/>
+				<spacer flex="1"/>
+				<label id="visit-homepage" class="text-link" value="&visitHomepage.label;" onclick="Utils.loadInBrowser(this.getAttribute('_url'))"/>
+			</hbox>
+		</vbox>
 		<vbox pack="center" align="center">
 			<description value="&list.download.failed;"/>
 			<hbox>
@@ -76,29 +62,21 @@
 			</hbox>
 		</vbox>
 	</deck>
-	
-	<hbox id="subscriptionInfo" invisible="true">
-		<label id="view-list" class="text-link" value="&viewList.label;" onclick="Utils.loadInBrowser(this.getAttribute('_url'))"/>
-		<spacer flex="1"/>
-		<label id="visit-homepage" class="text-link" value="&visitHomepage.label;" onclick="Utils.loadInBrowser(this.getAttribute('_url'))"/>
-	</hbox>
-	
+
 	<description id="fromWebText" hidden="true">&fromWeb.description;</description>
-	<description id="editText" hidden="true">&edit.description;</description>
-	<description id="externalText" hidden="true">&external.description;</description>
 
-	<groupbox id="differentSubscription" hidden="true">
+	<groupbox id="differentSubscription">
 		<label value="&title.label;" accesskey="&title.accesskey;" control="title"/>
 		<textbox id="title"/>
-	
+
 		<label value="&location.label;" accesskey="&location.accesskey;" control="location"/>
 		<textbox id="location"/>
-
-		<checkbox id="autoDownload" label="&autodownload.label;" accesskey="&autodownload.accesskey;"/>
 	</groupbox>
 
-	<description id="supplementMessage" hidden="true" _textTemplate="&supplementMessage;">&supplementMessage;</description>
-	<checkbox id="addMainSubscription" hidden="true" checked="true" _labelTemplate="&addMain.label;" label="&addMain.label;" accesskey="&addMain.accesskey;"/>
-</scrollbox>
+	<description id="supplementMessage" invisible="true" _textTemplate="&supplementMessage;">
+		&supplementMessage;
+		<label class="text-link" oncommand="">dummy dummy dummy dummy dummy dummy dummy dummy dummy dummy</label>
+	</description>
+	<checkbox id="addMainSubscription" invisible="true" checked="true" _labelTemplate="&addMain.label;" label="&addMain.label;" accesskey="&addMain.accesskey;"/>
 
 </dialog>
diff --git a/chrome/adblockplus.jar!/content/ui/subscriptions.xml b/chrome/adblockplus.jar!/content/ui/subscriptions.xml
index 458b150..159d4d2 100644
--- a/chrome/adblockplus.jar!/content/ui/subscriptions.xml
+++ b/chrome/adblockplus.jar!/content/ui/subscriptions.xml
@@ -1,61 +1,70 @@
 <?xml version="1.0"?>
 
-<!DOCTYPE subscriptions SYSTEM "chrome://adblockplus/locale/subscriptionSelection.dtd">
-
 <subscriptions>
-	<subscription title="EasyList (English)"
+	<subscription title="EasyList"
+								specialization="English"
 								url="https://easylist-downloads.adblockplus.org/easylist.txt"
-								homepage="http://easylist.adblockplus.org/"
+								homepage="https://easylist.adblockplus.org/"
 								prefixes="en"
 								author="MonztA, Ares2, Famlam, Khrin"/>
-	<subscription title="ABPindo+EasyList (Bahasa Indonesia)"
+	<subscription title="ABPindo+EasyList"
+								specialization="Bahasa Indonesia"
 								url="https://easylist-downloads.adblockplus.org/abpindo+easylist.txt"
 								homepage="http://indonesianfilter.blogspot.com/"
 								prefixes="id"
 								author="heradhis"/>
-	<subscription title="Bulgarian list+EasyList (български)"
+	<subscription title="Bulgarian list+EasyList"
+								specialization="български"
 								url="https://easylist-downloads.adblockplus.org/bulgarian_list+easylist.txt"
 								homepage="http://stanev.org/abp/"
 								prefixes="bg"
 								author="Александър Станев"/>
-	<subscription title="ChinaList+EasyList (中文)"
+	<subscription title="ChinaList+EasyList"
+								specialization="中文"
 								url="https://easylist-downloads.adblockplus.org/chinalist+easylist.txt"
-								homepage="http://code.google.com/p/adblock-chinalist/"
+								homepage="https://code.google.com/p/adblock-chinalist/"
 								prefixes="zh"
 								author="Gythialy"/>
-	<subscription title="DutchAdblockList+EasyList (Nederlands)"
+	<subscription title="DutchAdblockList+EasyList"
+								specialization="Nederlands"
 								url="https://easylist-downloads.adblockplus.org/dutchadblocklist+easylist.txt"
-								homepage="http://sites.google.com/site/dutchadblockfilters/"
+								homepage="https://code.google.com/p/dutchadblockfilters/"
 								prefixes="nl"
 								author="Famlam"/>
-	<subscription title="EasyList Germany+EasyList (Deutsch)"
+	<subscription title="EasyList Germany+EasyList"
+								specialization="Deutsch"
 								url="https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt"
-								homepage="http://easylist.adblockplus.org/"
+								homepage="https://easylist.adblockplus.org/"
 								prefixes="de"
 								author="MonztA, Ares2, Famlam"/>
-	<subscription title="Fanboy's List (English)"
+	<subscription title="EasyList Italy+EasyList"
+								specialization="italiano"
+								url="https://easylist-downloads.adblockplus.org/easylistitaly+easylist.txt"
+								homepage="https://easylist.adblockplus.org/"
+								prefixes="it"
+								author="Khrin"/>
+	<subscription title="Fanboy's List"
+								specialization="English"
 								url="https://secure.fanboy.co.nz/fanboy-adblock.txt"
 								homepage="http://www.fanboy.co.nz/adblock/"
 								prefixes="en"
 								author="fanboy, Nitrox"/>
-	<subscription title="Liste FR+EasyList (français)"
+	<subscription title="Liste FR+EasyList"
+								specialization="français"
 								url="https://easylist-downloads.adblockplus.org/liste_fr+easylist.txt"
 								homepage="http://adblock-listefr.com/"
 								prefixes="fr"
 								author="Lian"/>
-	<subscription title="ROList+EasyList (românesc)"
+	<subscription title="ROList+EasyList"
+								specialization="românesc"
 								url="https://easylist-downloads.adblockplus.org/rolist+easylist.txt"
 								homepage="http://www.zoso.ro/rolist"
 								prefixes="ro"
 								author="MenetZ, Zoso"/>
-	<subscription title="RuAdList+EasyList (русский, українська)"
+	<subscription title="RuAdList+EasyList"
+								specialization="русский, українська"
 								url="https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt"
-								homepage="http://code.google.com/p/ruadlist/"
+								homepage="https://code.google.com/p/ruadlist/"
 								prefixes="ru,uk"
 								author="Lain_13"/>
-	<subscription title="&other.label;…"
-								url=""
-								homepage=""
-								prefixes=""
-								author=""/>
-</subscriptions>
\ No newline at end of file
+	</subscriptions>
\ No newline at end of file
diff --git a/chrome/adblockplus.jar!/content/ui/utils.js b/chrome/adblockplus.jar!/content/ui/utils.js
index ae5d5e3..05fe75b 100644
--- a/chrome/adblockplus.jar!/content/ui/utils.js
+++ b/chrome/adblockplus.jar!/content/ui/utils.js
@@ -28,10 +28,12 @@ const Cr = Components.results;
 const Cu = Components.utils;
 
 let baseURL = Cc["@adblockplus.org/abp/private;1"].getService(Ci.nsIURI);
+Cu.import(baseURL.spec + "AppIntegration.jsm");
 Cu.import(baseURL.spec + "ContentPolicy.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
 Cu.import(baseURL.spec + "FilterListener.jsm");
 Cu.import(baseURL.spec + "FilterStorage.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 Cu.import(baseURL.spec + "Matcher.jsm");
 Cu.import(baseURL.spec + "Prefs.jsm");
 Cu.import(baseURL.spec + "RequestNotifier.jsm");
diff --git a/chrome/adblockplus.jar!/locale/ar/about.dtd b/chrome/adblockplus.jar!/locale/ar/about.dtd
index 2ab2731..e9c44d4 100644
--- a/chrome/adblockplus.jar!/locale/ar/about.dtd
+++ b/chrome/adblockplus.jar!/locale/ar/about.dtd
@@ -1,7 +1,7 @@
-<!ENTITY dialog.title "عن آدبلوك بلاس">
+<!ENTITY dialog.title "عن آدبلوك بلس">
 <!ENTITY version.title "الإصدار">
-<!ENTITY description "آدبلوك بلاس سيسمح لك بمنع ما لا تريد عرضه في مواقع الويب، فلن تضطر لتحميل الإعلانات بعد الآن، إذا لم ترغب بذلك فعلاً، فقط أخبر آدبلوك بلاس">
-<!ENTITY homepage.label "الصفحة الرئيسية لآدبلوك بلاس">
+<!ENTITY description "آدبلوك بلس يسمح لك بمنع ما لا تريد عرضه في مواقع الويب، فلن تضطر لتحميل الإعلانات بعد الآن، إذا لم ترغب بذلك فعلاً، فقط أخبر آدبلوك بلس">
+<!ENTITY homepage.label "الصفحة الرئيسية لآدبلوك بلس">
 <!ENTITY author.label "المنفذ">
 <!ENTITY contributors.label "المتطوعين">
 <!ENTITY subscriptionAuthors.label "مؤلفو اشتراكات الفلاتر:">
diff --git a/chrome/adblockplus.jar!/locale/ar/composer.dtd b/chrome/adblockplus.jar!/locale/ar/composer.dtd
index bc875ed..13c8915 100644
--- a/chrome/adblockplus.jar!/locale/ar/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/ar/composer.dtd
@@ -29,7 +29,7 @@
 <!ENTITY options.label "خيارات">
 <!ENTITY domainRestriction.label "تقييد إلى نطاق:">
 <!ENTITY domainRestriction.accesskey "ق">
-<!ENTITY domainRestriction.help "حدد نطاق واحد أو أكثر مفصولة باستخدام الرمز "|"، سيطبق هذا الفلتر على هذه النطاقات فقط. وضع الرمز "~" قبل اسم نطاق يعني أن الفلتر يجب ألا يطبق على ذلك النطاق">
+<!ENTITY domainRestriction.help "حدد نطاق واحد أو أكثر مفصول بالرمز "|"، سيطبق هذا الفلتر على هذه النطاقات فقط. وضع الرمز "~" قبل اسم نطاق يعني أن الفلتر يجب ألا يطبق على ذلك النطاق">
 <!ENTITY firstParty.label "الطرف نفسه فقط">
 <!ENTITY firstParty.accesskey "ن">
 <!ENTITY thirdParty.label "أطراف أخرى فقط">
diff --git a/chrome/adblockplus.jar!/locale/ar/filters.dtd b/chrome/adblockplus.jar!/locale/ar/filters.dtd
new file mode 100644
index 0000000..ac1d805
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ar/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "إضافة اشتراك إلى فلتر">
+<!ENTITY addSubscriptionOther.label "إضافة اشتراك آخر">
+<!ENTITY subscription.lastDownload.label "آخر تحميل">
+<!ENTITY subscription.lastDownload.inProgress "جاري التحميل">
+<!ENTITY subscription.lastDownload.unknown "غير متاح">
+<!ENTITY subscription.lastDownload.invalidURL "فشل الأمر، ليس عنوان صحيح">
+<!ENTITY subscription.lastDownload.connectionError "فشل الأمر بسبب فشل التحميل">
+<!ENTITY subscription.lastDownload.invalidData "فشل الأمر، ليست قائمة فلاتر صحيحة">
+<!ENTITY subscription.lastDownload.checksumMismatch "فشل ، عدم تطابق المجموع الاختباري">
+<!ENTITY subscription.lastDownload.success "نجاح">
+<!ENTITY addFilter.label "إضافة فلتر">
+<!ENTITY filter.cut.label "قص">
+<!ENTITY filter.copy.label "نسخ">
+<!ENTITY filter.paste.label "لصق">
+<!ENTITY filter.delete.label "حذف">
+<!ENTITY viewMenu.label "عرض">
+<!ENTITY filter.column "قانون الفلتر">
+<!ENTITY filter.accesskey "ف">
+<!ENTITY slow.column "عرض الفلاتر">
+<!ENTITY slow.accesskey "ع">
+<!ENTITY enabled.column "مشغل">
+<!ENTITY enabled.accesskey "غ">
+<!ENTITY hitcount.column "الضغطات">
+<!ENTITY hitcount.accesskey "ض">
+<!ENTITY lasthit.column "آخر ضغطة">
+<!ENTITY lasthit.accesskey "آ">
+<!ENTITY sort.label "ترتيب حسب">
+<!ENTITY sort.accesskey "ب">
+<!ENTITY sort.none.label "غير مرتب">
+<!ENTITY sort.none.accesskey "ر">
+<!ENTITY sort.ascending.label "ترتيب أبجدي (A > Z)">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "ترتيب أبجدي (Z > A)">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "بحث">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/ar/firstRun.dtd b/chrome/adblockplus.jar!/locale/ar/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ar/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/ar/global.properties b/chrome/adblockplus.jar!/locale/ar/global.properties
index 024bc1e..ac0383a 100644
--- a/chrome/adblockplus.jar!/locale/ar/global.properties
+++ b/chrome/adblockplus.jar!/locale/ar/global.properties
@@ -1,53 +1,25 @@
-default_dialog_title=Adblock Plus
+default_dialog_title=آدبلوك بلس
 action0_tooltip=اضغط لتظهر القائمة المرافقة، اضغط بالزر الأوسط للتشغيل/التعطيل
 action1_tooltip=اضغط لفتح/إغلاق العناصر المحجوبة، اضغط بالزر الأوسط للتشغيل/ التعطيل
 action2_tooltip=اضغط لفتح الخيارات، اضغط بالزر الأوسط للتشغيل/التعطيل
-action3_tooltip=اضغط لتشغيل/تعطيل آدبلوك بلاس
-disabled_tooltip=آدبلوك بلاس معطل الآن
+action3_tooltip=اضغط لتشغيل/تعطيل آدبلوك بلس
+disabled_tooltip=آدبلوك بلس معطل الآن
 active_tooltip=إن آدبلوك بلس مفعل. هناك  ?1? اشتراك فلتر و ?2? فلاتر مخصصة قيد الاستعمال
-whitelisted_tooltip=آدبلوك بلاس فعال الآن، و لكنه معطل بالنسبة لهذه الصفحة
+whitelisted_tooltip=آدبلوك بلس فعال الآن، و لكنه معطل بالنسبة لهذه الصفحة
 blocked_count_tooltip=?1? خارج عن ?2?
 blocked_count_addendum=المسموح به ?1? والمخفي ?2?
-no_blocking_suggestions=لا يوجد عناصر للحجب في هذه الصفحة
-whitelisted_page=تم تعطيل آدبلوك بلاس في الصفحة الحالية
-whitelist_description=قوانين الاستثناءات
-filterlist_description=فلاتر الإعلانات
-invalid_description=فلاتر خاطئة
-elemhide_description=قوانين إخفاء العنصر
-subscription_description=اشتراك فلتر
-subscription_wrong_version=بعض الفلاتر الموجودة في هذا الاشتراك تتطلب آدبلوك بلس ?1? لتعميل جيداً
-subscription_source=المصدر
-subscription_status=الحالة
-subscription_status_autodownload=تحديث أوتوماتيكي
-subscription_status_manualdownload=تحديث يدوي
-subscription_status_externaldownload=تحديث خارجي (إضافة أخرى)
-subscription_status_lastdownload=آخر تحميل
-subscription_status_lastdownload_inprogress=جاري التحميل
-subscription_status_lastdownload_unknown=غير متاح
+no_blocking_suggestions=لا توجد عناصر للحجب في هذه الصفحة
+whitelisted_page=تم تعطيل آدبلوك بلس في الصفحة الحالية
+newGroup_title=مجموعة فلترة جديدة
+whitelistGroup_title=قواعد الاستثتاء
+blockingGroup_title=قواعد حجب الدعاية
+elemhideGroup_title=قواعد اخفاء العناصر
 remove_subscription_warning=هل أنت حقاً راغب بإزالة هذا الاشتراك؟
-import_filters_wrong_version=تحذير : بعض الفلاتر في هذه القائمة تتطلب آدبلوك بلس ?1? لتعميل جيداً. يجب عليك التحديث إلى آخر إصدار من آدبلوك بلاس قبل استيراد هذه القائمة.
-import_filters_warning=هل تريد استبدال فلاترك الحالية أم إضافة الفلاتر الجديدة في نهاية القائمة؟
-import_filters_title=استيراد فلاتر
-export_filters_title=تصدير فلاتر
-invalid_filters_file=ليس ملف صالح كفلتر لآدبلوك بلاس
-filters_write_error=كان هناك خطأ في كتابة الفلاتر إلى الملف. تأكد من أن الملف غير محمي ضد الكتابة أو يتم استعماله من برنامج آخر
-clearall_warning=هل أنت راغب فعلاً في إزالة كل الفلاتر من القائمة؟
-resethitcounts_warning=أنت راغب فعلاً في إعادة ضبط عداد الضغطات لكل الفلاتر إلى الصفر؟ هذه العملية لا يمكن التراجع عنها!
-resethitcounts_selected_warning=هل أنت راغب فعلاً في إعادة ضبط عداد الضغطات للفلاتر المختارة إلى الصفر؟ هذه العملية لا يمكن التراجع عنها!
-filter_regexp_tooltip=هذا الفلتر إما "تعبر منطقي" أو أقصر من أن تتم تحسينه. الكثير من هذه الفلاتر قد تؤدي إلى بطء في التصفح
-filter_elemhide_duplicate_id=فقط ID واحد للعنصر الذي سيتم إخفاؤه يمكن أن يحدد
+clearStats_warning=هذا سيصفّر كل احصاءات الفلاتر ويعطّل تعداد اصابات الفلاتر. هل تريد التقدم؟
+filter_regexp_tooltip=هذا الفلتر إما "تعبير منطقي" أو أقصر من أن يتم تحسينه. الكثير من هذه الفلاتر قد تؤدي إلى بطء في التصفح
+filter_elemhide_duplicate_id=تعريف واحد فقط للعنصر الذي سيتم إخفاؤه يمكن أن يحدد
 filter_elemhide_nocriteria=لم يتم تحديد صيغة للتعرف على العنصر لإخفاؤه
-subscription_notAdded_warning=لم تقم بإضافة أي اشتراك فلتر. بدون اشتراك فلتر ستضطر لإضافة الفلاتر يدوياً
-subscription_notAdded_warning_addendum=هل تريد المتابعة؟
-subscription_invalid_location=موقع قائمة الفلتر ليس صحيح كعنوان ويب و لا كاسم ملف
-synchronize_invalid_url=فشل الأمر، ليس عنوان صحيح
-synchronize_connection_error=فشل الأمر بسبب فشل التحميل
-synchronize_invalid_data=فشل الأمر، ليست قائمة فلاتر صحيحة
-synchronize_checksum_mismatch=فشل، عدم تطابق checksum
-synchronize_ok=نجاح
-overwrite=استبدال الحالي بالجديد
-append=إلحاق
-new_filter_group_title=فلتر جديد
+subscription_invalid_location=موقع قائمة الفلتر ليس صحيح كعنوان ويب و لا كأسم ملف
 type_label_other=أخرى
 type_label_script=سكريبت
 type_label_image=صورة
@@ -56,15 +28,12 @@ type_label_object=عنصر
 type_label_subdocument=إطار
 type_label_document=مستند
 type_label_elemhide=مخفي
-type_label_xbl=ربط XBL
-type_label_ping=Ping للرابط
+type_label_popup=نافذة منبثقة
 type_label_xmlhttprequest=طلب XML
 type_label_object_subrequest=طلب فرعي للعنصر
-type_label_dtd=DTD
-type_label_media=صوتفيديو
+type_label_media=صوت/فيديو
 type_label_font=الخط
-fennec_status_enabled=آدبلوك بلس مفعل
-fennec_status_disabled=آدبلوك بلس معطل
+fennec_status_enabled=آدبلوك بلس مفعّل
+fennec_status_disabled=آدبلوك بلس معطّل
 fennec_status_enabled_site=آدبلوك بلس مفعل على ?1?
 fennec_status_disabled_site=آدبلوك بلس معطل على ?1?
-sync_engine_title=بيانات آدبلوك بلس
diff --git a/chrome/adblockplus.jar!/locale/ar/overlay.dtd b/chrome/adblockplus.jar!/locale/ar/overlay.dtd
index 07f5f89..a6cd67f 100644
--- a/chrome/adblockplus.jar!/locale/ar/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/ar/overlay.dtd
@@ -4,17 +4,16 @@
 <!ENTITY menuitem.label "تفضيلات آدبلوك بلس">
 <!ENTITY menuitem.accesskey "ب">
 <!ENTITY toolbarbutton.label "آدبلوك بلس">
-<!ENTITY view.blockableItems.label "آدبلوك بلس: العناصر المحجوبة">
-<!ENTITY context.image.label "صورة آدبلوك">
-<!ENTITY context.object.label "عنصر آدبلوك">
-<!ENTITY context.frame.label "إطار آدبلوك">
+<!ENTITY context.image.label "آدبلوك بلس : حجب صورة">
+<!ENTITY context.object.label "آدبلوك بلس : حجب عنصر">
+<!ENTITY context.frame.label "آدبلوك بلس : حجب إطار">
 <!ENTITY context.media.label "آدبلوك بلس : حجب أوديوفيديو">
 <!ENTITY context.removeWhitelist.label "آدبلوك بلس : إعادة التفعيل في هذه الصفحة">
 <!ENTITY sidebar.title "العناصر المحجوبة في الصفحة الحالية">
 <!ENTITY sendReport.label "التبليغ عن خطأ في هذه الصفحة">
 <!ENTITY sendReport.accesskey "ت">
-<!ENTITY settings.label "تفضيلات">
-<!ENTITY settings.accesskey "ض">
+<!ENTITY filters.label "تفضيلات الفلتر">
+<!ENTITY filters.accesskey "ف">
 <!ENTITY opensidebar.label "فتح العناصر المحجوبة">
 <!ENTITY opensidebar.accesskey "ج">
 <!ENTITY closesidebar.label "إغلاق العناصر المحجوبة">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "تعطيل على ?1?">
 <!ENTITY whitelist.page.label "تعطيل في هذه الصفحة فقط">
 <!ENTITY disable.label "تعطيل في جميع الأماكن">
-<!ENTITY recommend.label "انصح بنا على الفيسبوك">
-<!ENTITY objecttab.title "منع">
+<!ENTITY options.label "خيارات">
+<!ENTITY options.accesskey "خ">
+<!ENTITY contribute.label "شارك في آد بلُك بلَس">
+<!ENTITY showintoolbar.label "عرض في شريط الأدوات">
+<!ENTITY showintoolbar.accesskey "ش">
+<!ENTITY showinstatusbar.label "عرض في شريط الحالة">
+<!ENTITY showinstatusbar.accesskey "ح">
+<!ENTITY showinaddonbar.label "الاظهار في شريط الاضافات">
+<!ENTITY showinaddonbar.accesskey "ظ">
+<!ENTITY objecttabs.label "عرض تبويبات لفلاش و جافا">
+<!ENTITY objecttabs.accesskey "ت">
+<!ENTITY hideplaceholders.label "اخفاء ماسك المكان للعناصر الموقوفة">
+<!ENTITY hideplaceholders.accesskey "خ">
+<!ENTITY counthits.label "تعداد اصابات الفلترة">
+<!ENTITY counthits.accesskey "ت">
+<!ENTITY sync.label "مزامنة إعدادات آدبلوك بلس">
+<!ENTITY sync.accesskey "ز">
+<!ENTITY objecttab.title "أحجب">
 <!ENTITY objecttab.tooltip "اضغط هنا لمنع هذا العنصر مع آدبلوك بلاس">
diff --git a/chrome/adblockplus.jar!/locale/ar/settings.dtd b/chrome/adblockplus.jar!/locale/ar/settings.dtd
deleted file mode 100644
index 7ad1889..0000000
--- a/chrome/adblockplus.jar!/locale/ar/settings.dtd
+++ /dev/null
@@ -1,90 +0,0 @@
-<!ENTITY dialog.title "إعدادات آدبلوك بلاس">
-<!ENTITY filters.label "فلاتر">
-<!ENTITY filters.accesskey "ف">
-<!ENTITY add.label "إضافة فلتر">
-<!ENTITY add.accesskey "إ">
-<!ENTITY addsubscription.label "إضافة اشتراك إلى فلتر">
-<!ENTITY addsubscription.accesskey "ش">
-<!ENTITY synchsubscriptions.label "تحديث كل الاشتراكات">
-<!ENTITY synchsubscriptions.accesskey "ث">
-<!ENTITY import.label "استيراد فلاتر">
-<!ENTITY import.accesskey "س">
-<!ENTITY export.label "تصدير فلاتر">
-<!ENTITY export.accesskey "ي">
-<!ENTITY clearall.label "إزالة كل الفلاتر">
-<!ENTITY clearall.accesskey "ل">
-<!ENTITY resethitcounts.label "إعادة ضبط إحصائيات الضغطات">
-<!ENTITY resethitcounts.accesskey "ع">
-<!ENTITY edit.label "تعديل">
-<!ENTITY edit.accesskey "ت">
-<!ENTITY cut.label "قص">
-<!ENTITY cut.accesskey "ق">
-<!ENTITY copy.label "نسخ">
-<!ENTITY copy.accesskey "ن">
-<!ENTITY paste.label "لصق">
-<!ENTITY paste.accesskey "ص">
-<!ENTITY remove.label "حذف">
-<!ENTITY remove.accesskey "ح">
-<!ENTITY menu.find.label "بحث">
-<!ENTITY menu.find.accesskey "ب">
-<!ENTITY menu.findagain.label "بحث من جديد">
-<!ENTITY menu.findagain.accesskey "ج">
-<!ENTITY view.label "عرض">
-<!ENTITY view.accesskey "ض">
-<!ENTITY sort.label "ترتيب حسب">
-<!ENTITY sort.accesskey "ب">
-<!ENTITY sort.none.label "غير مرتب">
-<!ENTITY sort.none.accesskey "ر">
-<!ENTITY sort.ascending.label "ترتيب أبجدي (A > Z)">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "ترتيب أبجدي (Z > A)">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "خيارات">
-<!ENTITY options.accesskey "خ">
-<!ENTITY enable.label "تفعيل آدبلوك بلاس">
-<!ENTITY enable.accesskey "ف">
-<!ENTITY showintoolbar.label "عرض في شريط الأدوات">
-<!ENTITY showintoolbar.accesskey "ش">
-<!ENTITY showinstatusbar.label "عرض في شريط الحالة">
-<!ENTITY showinstatusbar.accesskey "ح">
-<!ENTITY objecttabs.label "عرض تبويبات لفلاش و جافا">
-<!ENTITY objecttabs.accesskey "ت">
-<!ENTITY collapse.label "بسط العناصر المحجوبة">
-<!ENTITY collapse.accesskey "ط">
-<!ENTITY sync.label "مزامنة إعدادات آدبلوك بلس">
-<!ENTITY sync.accesskey "ز">
-<!ENTITY help.label "مساعدة">
-<!ENTITY help.accesskey "م">
-<!ENTITY gettingStarted.label "ابدأ هنا">
-<!ENTITY gettingStarted.accesskey "د">
-<!ENTITY faq.label "الأسئلة الشائعة">
-<!ENTITY faq.accesskey "س">
-<!ENTITY filterdoc.label "كتابة فلاتر لآدبلوك بلاس">
-<!ENTITY filterdoc.accesskey "ك">
-<!ENTITY about.label "عن آدبلوك بلاس">
-<!ENTITY about.accesskey "ع">
-<!ENTITY description "أضف العناوين التي ترغب بحجبها، و للاقتراحات انظر القائمة المنسدلة.
-يمكنك أن تستعمل الرمز * لإنشاء فلاتر عامة. المستخدمين المتقدمين يمكنهم استخدام بعض التعبيرات النظامية مثل /banner\d+\.gif$/">
-<!ENTITY filter.column "قانون الفلتر">
-<!ENTITY filter.accesskey "ف">
-<!ENTITY slow.column "عرض الفلاتر">
-<!ENTITY slow.accesskey "ع">
-<!ENTITY enabled.column "مشغل">
-<!ENTITY enabled.accesskey "غ">
-<!ENTITY hitcount.column "الضغطات">
-<!ENTITY hitcount.accesskey "ض">
-<!ENTITY lasthit.column "آخر ضغطة">
-<!ENTITY lasthit.accesskey "آ">
-<!ENTITY context.edit.label "تعديل فلتر">
-<!ENTITY context.resethitcount.label "إعادة إحصائيات الضغط للفلتر">
-<!ENTITY context.synchsubscription.label "تحديث الاشتراك الآن">
-<!ENTITY context.editsubscription.label "تعديل اشتراك">
-<!ENTITY context.moveup.label "رفع">
-<!ENTITY context.movedown.label "خفض">
-<!ENTITY context.movegroupup.label "رفع المجموعة">
-<!ENTITY context.movegroupdown.label "خفض المجموعة">
-<!ENTITY context.enable.label "تفعيل">
-<!ENTITY context.disable.label "تعطيل">
-<!ENTITY apply.label "تطبيق">
-<!ENTITY apply.accesskey "ب">
-<!ENTITY fennec.subscription.label "اشتراك فلتر">
diff --git a/chrome/adblockplus.jar!/locale/ar/sidebar.dtd b/chrome/adblockplus.jar!/locale/ar/sidebar.dtd
index e41856c..9d3ffb2 100644
--- a/chrome/adblockplus.jar!/locale/ar/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/ar/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "الفلتر">
 <!ENTITY state.label "الحالة">
 <!ENTITY size.label "الحجم">
+<!ENTITY filterSource.label "فلترة المصدر">
 <!ENTITY docDomain.label "مصدر الملف">
 <!ENTITY docDomain.thirdParty "(طرف خارجي)">
 <!ENTITY docDomain.firstParty "(طرف داخلي)">
diff --git a/chrome/adblockplus.jar!/locale/ar/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ar/subscriptionSelection.dtd
index 895a7c8..5d312f1 100644
--- a/chrome/adblockplus.jar!/locale/ar/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/ar/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
-<!ENTITY dialog.title "أهلاً بك في آدبلوك بلاس">
-<!ENTITY dialog.title.edit "تعديل اشتراك فلتر">
-<!ENTITY description.newInstall "سيكون آدبلوك بلس أكثر فعالية ان قمت بإضافة اشتراك فلاتر. اشتراكات الفلاتر تقدم مجانا من قبل مستخدمين آخرين لآدبلوك بلس. الاشتراك الأكثر ملائمة للغتك مختار أصلا">
+<!ENTITY dialog.title "أهلاً بك في آدبلوك بلس">
 <!ENTITY subscriptionSelector.label "الرجاء اختيار اشتراك فلتر من القائمة:">
 <!ENTITY viewList.label "عرض فلاتر">
 <!ENTITY visitHomepage.label "زيارة الصفحة الرئيسية">
 <!ENTITY addSubscription.label "إضافة اشتراك">
-<!ENTITY saveSubscription.label "حفظ اشتراك">
-<!ENTITY other.label "إضافة اشتراك آخر">
-<!ENTITY other.accesskey "آ">
 <!ENTITY list.download.failed "فشل آدبلوك بلس في جلب قائمة الاشتراكات">
 <!ENTITY list.download.retry "إعادة المحاولة">
 <!ENTITY list.download.website "عرض الموقع">
-<!ENTITY fromWeb.description "الرجاء تأكيد رغبتك في إضافة اشتراك الفلتر هذا. يمكنك أن تغير عنوان أو موقع الاشتراك قبل اضافته.">
-<!ENTITY edit.description "تستطيع تغيير عنوان أو موقع هذا الاشتراك حسب الحاجة">
-<!ENTITY external.description "ان اشتراك الفلتر هذا خارجي وسيتم تحديثه من قبل الإضافة التي أنشأته">
+<!ENTITY fromWeb.description "الرجاء التأكد من رغبتك في إضافة اشتراك الفلتر هذا. يمكنك أن تغير عنوان أو موقع الاشتراك قبل اضافته.">
 <!ENTITY title.label "عنوان الاشتراك">
 <!ENTITY title.accesskey "ع">
 <!ENTITY location.label "موقع قائمة الفلاتر">
 <!ENTITY location.accesskey "م">
-<!ENTITY autodownload.label "تحديث أوتوماتيكي">
-<!ENTITY autodownload.accesskey "ث">
 <!ENTITY supplementMessage "اشتراك الفلتر هذا يجب أن يستخدم مع اشتراك الفلتر "?1?" والذي لم تستعمله بعد">
 <!ENTITY addMain.label "إضافة اشتراك الفلتر "?1?" أيضا">
 <!ENTITY addMain.accesskey "ش">
diff --git a/chrome/adblockplus.jar!/locale/bg/composer.dtd b/chrome/adblockplus.jar!/locale/bg/composer.dtd
index dec1ac5..eef632f 100644
--- a/chrome/adblockplus.jar!/locale/bg/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/bg/composer.dtd
@@ -5,8 +5,8 @@
 <!ENTITY disabled.warning "Adblock Плюс е изключена. Все още можете да добавите филтри, но те няма да се прилагат, освен ако не [link]Включите Adblock Плюс[/link].">
 <!ENTITY groupDisabled.warning "Филтър групата "?1?" от този филтър ще бъдат добавени но е забранена. Все още можете да добавите и филтъра, но те няма да се прилагат, освен ако не [link]включите тази Филтърна Група[/link].">
 <!ENTITY filter.label "Нов Филтър:">
-<!ENTITY filter.accesskey "Ф">
-<!ENTITY preferences.label "Покажи съществуващите филтри...">
+<!ENTITY filter.accesskey "ъ">
+<!ENTITY preferences.label "Покажи съществуващите филтри..">
 <!ENTITY preferences.accesskey "щ">
 <!ENTITY type.filter.label "Блокиране на филтър">
 <!ENTITY type.filter.accesskey "Б">
@@ -25,13 +25,13 @@
 <!ENTITY anchor.start.flexible.label "в началото на домейн името">
 <!ENTITY anchor.start.flexible.accesskey "ч">
 <!ENTITY anchor.end.label "в края на адреса">
-<!ENTITY anchor.end.accesskey "р">
+<!ENTITY anchor.end.accesskey "с">
 <!ENTITY options.label "Настройки">
 <!ENTITY domainRestriction.label "Ограничаване на домейн:">
-<!ENTITY domainRestriction.accesskey "О">
+<!ENTITY domainRestriction.accesskey "р">
 <!ENTITY domainRestriction.help "Използвайте тази опция, за да зададете една или повече области, разделени с бар линия (|). Филтърът ще се прилага само за избран(и) домейн(и). А тилда (~) пред името на домейна се посочва, че филтърът не се прилага в този домейн.">
 <!ENTITY firstParty.label "Първа страна само">
-<!ENTITY firstParty.accesskey "п">
+<!ENTITY firstParty.accesskey "о">
 <!ENTITY thirdParty.label "Трети страни само">
 <!ENTITY thirdParty.accesskey "т">
 <!ENTITY matchCase.label "Съвпадение на регистъра">
@@ -40,7 +40,7 @@
 <!ENTITY selectAllTypes.label "Избери всички">
 <!ENTITY unselectAllTypes.label "Не избирай нищо">
 <!ENTITY collapse.label "Свиване на блокирани:">
-<!ENTITY collapse.accesskey "С">
+<!ENTITY collapse.accesskey "е">
 <!ENTITY collapse.default.yes.label "Ползвай по подразбиране(да)">
 <!ENTITY collapse.default.no.label "Ползвай по подразбиране(не)">
 <!ENTITY collapse.yes.label "Да">
diff --git a/chrome/adblockplus.jar!/locale/bg/filters.dtd b/chrome/adblockplus.jar!/locale/bg/filters.dtd
new file mode 100644
index 0000000..f926371
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/bg/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Adblock Plus Настройки за филтър">
+<!ENTITY subscriptions.tab.label "Абонаменти за Филтър">
+<!ENTITY filters.tab.label "Собствени филтри">
+<!ENTITY addSubscription.label "Добави абонамент за филтър">
+<!ENTITY addSubscription.accesskey "ф">
+<!ENTITY addSubscriptionAdd.label "Добави">
+<!ENTITY addSubscriptionCancel.label "Откажи">
+<!ENTITY addSubscriptionOther.label "Добави друг абонамент">
+<!ENTITY noSubscriptions.text "
+	Ти не си добавил никакъв абонамент за филтри. Adblock Plus няма да блокира
+ нищо без филтри, моля избери "Добави филтър абонаменти" за да
+ добавиш някакви.
+">
+<!ENTITY subscription.homepage.label "Лична Страница">
+<!ENTITY subscription.external.label "Ъпдейтнат от друга добавка">
+<!ENTITY subscription.source.label "Филтър Лист">
+<!ENTITY subscription.enabled.label "Включен">
+<!ENTITY subscription.lastDownload.label "Последно изтеглен:">
+<!ENTITY subscription.lastDownload.inProgress "Изтегляне...">
+<!ENTITY subscription.lastDownload.unknown "Няма данни">
+<!ENTITY subscription.lastDownload.invalidURL "Грешка, невалиден адрес">
+<!ENTITY subscription.lastDownload.connectionError "Грешка, неуспешно изтегляне">
+<!ENTITY subscription.lastDownload.invalidData "Грешка, невалиден списък с филтри">
+<!ENTITY subscription.lastDownload.checksumMismatch "Грешка, несъвпадение на контролната сума">
+<!ENTITY subscription.lastDownload.success "Успешно">
+<!ENTITY subscription.minVersion.warning "Този филтър абонамент изисква по-нова версия на Adblock Plus, трябва да обновите до последната версия на Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Някой филтри в този абонамент са забранени.">
+<!ENTITY subscription.disabledFilters.enable "Разреши забранените филтри">
+<!ENTITY subscription.actions.label "Действия">
+<!ENTITY subscription.update.label "Обнови филтрите">
+<!ENTITY subscription.editTitle.label "Промени титла">
+<!ENTITY subscription.delete.label "Изтрий">
+<!ENTITY subscription.showHideFilters.label "Покажи/скрий филтрите">
+<!ENTITY subscription.moveUp.label "Премести нагоре">
+<!ENTITY subscription.moveDown.label "Премести надоло">
+<!ENTITY acceptableAds.label "Разреши не-натрапваща реклама">
+<!ENTITY acceptableAds.accesskey "и">
+<!ENTITY readMore.label "Прочети повече">
+<!ENTITY addGroup.label "Добави филтър група">
+<!ENTITY addGroup.accesskey "г">
+<!ENTITY noFilters.text "
+ Ти нямаш нито един собствен филтър още.
+">
+<!ENTITY addFilter.label "Добави Филтър">
+<!ENTITY addFilter.accesskey "а">
+<!ENTITY filter.actions.label "Филтър действия">
+<!ENTITY filter.edit.label "Промени">
+<!ENTITY filter.cut.label "Изрежи">
+<!ENTITY filter.copy.label "Копирай">
+<!ENTITY filter.paste.label "Постави">
+<!ENTITY filter.delete.label "Изтрий">
+<!ENTITY filter.selectAll.label "Избери Всички">
+<!ENTITY filter.resetHitCounts.label "Рестарт на Хит Статистиката">
+<!ENTITY filter.moveUp.label "Премести нагоре">
+<!ENTITY filter.moveDown.label "Премести надоло">
+<!ENTITY viewMenu.label "Изглед">
+<!ENTITY filter.column "Филтър правило">
+<!ENTITY filter.accesskey "Ф">
+<!ENTITY slow.column "Покажи филтри">
+<!ENTITY slow.accesskey "ж">
+<!ENTITY enabled.column "Включен">
+<!ENTITY enabled.accesskey "В">
+<!ENTITY hitcount.column "Посещения">
+<!ENTITY hitcount.accesskey "щ">
+<!ENTITY lasthit.column "Последни Посещения">
+<!ENTITY lasthit.accesskey "П">
+<!ENTITY sort.label "Сортирай по">
+<!ENTITY sort.accesskey "С">
+<!ENTITY sort.none.label "Несортирани">
+<!ENTITY sort.none.accesskey "Н">
+<!ENTITY sort.ascending.label "А > Я сортиране">
+<!ENTITY sort.ascending.accesskey "А">
+<!ENTITY sort.descending.label "Я > А Сортиране">
+<!ENTITY sort.descending.accesskey "Я">
+<!ENTITY noGroupSelected.text "Вие трябва да изберете филтър група, преди тези филтри да бъдат показани.">
+<!ENTITY noFiltersInGroup.text "Избраната група е празна">
+<!ENTITY filters.remove.warning "Наистина ли искаш да изтриеш всички избрани филтри?">
+<!ENTITY backupButton.label "Архивирай и Възстанови">
+<!ENTITY backupButton.accesskey "в">
+<!ENTITY backup.label "Направи нов архив">
+<!ENTITY restore.default.label "Възстанови архив от ?1?">
+<!ENTITY restore.own.label "Възстанови свой архив">
+<!ENTITY backup.complete.title "Всички филтри и абонаменти">
+<!ENTITY backup.custom.title "Лични филтри само">
+<!ENTITY backup.error "Възникна грешка при писане на филтри за файла.Уверете се, че файлът не е защитени или се използва от друго приложение.">
+<!ENTITY restore.error "Файлът не може да се обработи или не е с данни, може би Това не е Adblock Plus архивния файл?">
+<!ENTITY restore.complete.warning "Всички ваши филтър предпочитания ще бъдат заменени от съдържанието на избрания файл. Искате ли да продължите?">
+<!ENTITY restore.custom.warning "Всички ваши потребителски филтри ще бъде заменен от съдържанието на избрания файл. Искате ли да продължите?">
+<!ENTITY restore.minVersion.warning "Внимание: файлът е създаден с по-нова версия на Adblock Plus. Трябва да обновите до последната версия на Adblock Plus, преди да възстановите от този файл.">
+<!ENTITY find.label "Намери">
+<!ENTITY find.accesskey "Н">
+<!ENTITY close.label "Затвори">
diff --git a/chrome/adblockplus.jar!/locale/bg/firstRun.dtd b/chrome/adblockplus.jar!/locale/bg/firstRun.dtd
new file mode 100644
index 0000000..173444e
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/bg/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus инсталацията завърши">
+<!ENTITY confirmation "
+	Благодаря ви че инсталирахте Adblock Plus. Рекламите ще са блокирани от сега нататък.
+ Успех!">
+<!ENTITY advancedSection "Подробни настройки">
+<!ENTITY listSelection1 "
+	Този филтър лист е конфигуриран да блокира реклама:
+">
+<!ENTITY noList "Няма филтър лист">
+<!ENTITY visitHomepage.label "Посети страницата на листа">
+<!ENTITY acceptableAds "
+	Adblock Plus също така беше настроен да допуска не-натрапчиви реклами.
+">
+<!ENTITY readMore.label "Прочети повече за това">
+<!ENTITY listSelection2 "
+	Ти можеш да промениш този избор по всяко време от [link]Настройки за Филтър[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/bg/global.properties b/chrome/adblockplus.jar!/locale/bg/global.properties
index 5067e6e..4f37b15 100644
--- a/chrome/adblockplus.jar!/locale/bg/global.properties
+++ b/chrome/adblockplus.jar!/locale/bg/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? от ?2?
 blocked_count_addendum=(също разрешени:?1?, скрити: ?2?)
 no_blocking_suggestions=Няма блокирани позиции на текущата страница
 whitelisted_page=Adblock Плюс беше изключен за текущата страница
-whitelist_description=Моите правила за изключения
-filterlist_description=Моите правила за Ad Blocking
-invalid_description=Моите неправилни правила
-elemhide_description=Моите правила за скриване на елемент
-subscription_description=Филтър за абонаменти:
-subscription_wrong_version=Някои филтри в този абонамент изискват Adblock Плюс ?1? за да работят правилно.
-subscription_source=Източник:
-subscription_status=Състояние:
-subscription_status_autodownload=Автоматично обновен
-subscription_status_manualdownload=Ръчно обновен
-subscription_status_externaldownload=Обновен външно (друго разширение)
-subscription_status_lastdownload=Последно изтеглен:
-subscription_status_lastdownload_inprogress=Изтегляне...
-subscription_status_lastdownload_unknown=Няма данни
+newGroup_title=Нова група с филтри
+whitelistGroup_title=Изключение от правилата
+blockingGroup_title=Правила за Блокиране
+elemhideGroup_title=Правила за скриване на елементи
 remove_subscription_warning=Наистина ли искате да премахнете този абонамент?
-import_filters_wrong_version=Внимание: някои от филтрите в този списък изискват Adblock Плюс ?1? да работят правилно. Може би трябва да надстроите до най-новата версия на Adblock Плюс преди вноса на този списък.
-import_filters_warning=Искате ли да замените текущите филтри или да добавите нови филтри в края на списъка?
-import_filters_title=Внасяне на филтри
-export_filters_title=Изнасяне на филтри
-invalid_filters_file=Невалиден файл с филтри за Adblock Плюс
-filters_write_error=Имаше грешка при записването на филтрите във файла. Уверете се, че файлът не е защитен срещу запис или е отворен в друго приложение.
-clearall_warning=Наистина ли искате да премахнете всички филтри от списъка?
-resethitcounts_warning=Наистина ли искате да рестартирате броячите за ползването на всички филтри? Забележка: Тази операция не може да бъде отменена.
-resethitcounts_selected_warning=Наистина ли искате да рестартирате броячите за ползването на избраните филтри? Забележка: Тази операция не може да бъде отменена.
+clearStats_warning=Това ще рестартира цялата статистика и ще забрани броенето на филтрите. Искате ли да продължите?
 filter_regexp_tooltip=Този филтър или е регулярен израз или е твърде кратък, за да се оптимизира. Твърде много от тези филтри могат да забавят сърфирането.
 filter_elemhide_duplicate_id=Може да бъде задаван само един ID на елемент за скриване
 filter_elemhide_nocriteria=Не е зададен критерий за разпознаване на елемент за скриване
-subscription_notAdded_warning=Вие не сте добавили абонамент за филтри. Без абонамент за филтри ще трябва да добавяте Adblock Плюс филтрите ръчно.
-subscription_notAdded_warning_addendum=Искате ли да продължите?
 subscription_invalid_location=Местоположението на списъка с филтри или не е валиден URL или не е валидно името на файла.
-synchronize_invalid_url=Грешка, невалиден адрес
-synchronize_connection_error=Грешка, неуспешно изтегляне
-synchronize_invalid_data=Грешка, невалиден списък с филтри
-synchronize_checksum_mismatch=Грешка, несъвпадение на контролната сума
-synchronize_ok=Успешно
-overwrite=Презапис
-append=Добавяне
-new_filter_group_title=Нов филтър
 type_label_other=други
 type_label_script=скрипт
 type_label_image=картинка
@@ -56,15 +28,12 @@ type_label_object=обект
 type_label_subdocument=рамка
 type_label_document=документ
 type_label_elemhide=скрит
-type_label_xbl=XBL обвързване
-type_label_ping=ping връзка
+type_label_popup=изскачащ прозорец
 type_label_xmlhttprequest=XML заявка
 type_label_object_subrequest=обект под заявка
-type_label_dtd=DTD
 type_label_media=аудио/видео
 type_label_font=шрифт
 fennec_status_enabled=Adblock Плюс е включен.
 fennec_status_disabled=Adblock Плюс е изключен.
 fennec_status_enabled_site=Adblock Плюс е включен на ?1?.
 fennec_status_disabled_site=Adblock Плюс е изключен на ?1?.
-sync_engine_title=Данни за Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/bg/overlay.dtd b/chrome/adblockplus.jar!/locale/bg/overlay.dtd
index 7a109c0..1302d65 100644
--- a/chrome/adblockplus.jar!/locale/bg/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/bg/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Плюс Настройки">
 <!ENTITY menuitem.accesskey "Н">
 <!ENTITY toolbarbutton.label "Adblock Плюс">
-<!ENTITY view.blockableItems.label "Adblock Плюс: Блокирани Предмети">
 <!ENTITY context.image.label "Adblock Плюс: Блокирани Картинки">
 <!ENTITY context.object.label "Adblock Плюс:Блокирани Обекти">
 <!ENTITY context.frame.label "Adblock Плюс:Блокирани Фреймове">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Блокирани предмети на тази страница">
 <!ENTITY sendReport.label "Докладване на проблем на тази страница">
 <!ENTITY sendReport.accesskey "Д">
-<!ENTITY settings.label "Настройки">
-<!ENTITY settings.accesskey "с">
+<!ENTITY filters.label "Филтър Настройки">
+<!ENTITY filters.accesskey "Ф">
 <!ENTITY opensidebar.label "Отвори блокирани предмети">
 <!ENTITY opensidebar.accesskey "б">
 <!ENTITY closesidebar.label "Затвори блокирани предмети">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Забрани на ?1?">
 <!ENTITY whitelist.page.label "Забрани на тази страница само">
 <!ENTITY disable.label "Забрани навсякъде">
-<!ENTITY recommend.label "Препоръчай ни във Facebook">
+<!ENTITY options.label "Настройки">
+<!ENTITY options.accesskey "Н">
+<!ENTITY contribute.label "Помогнете на Adblock Plus">
+<!ENTITY showintoolbar.label "Покажи в лентата с инструменти">
+<!ENTITY showintoolbar.accesskey "а">
+<!ENTITY showinstatusbar.label "Покажи в лентата на състоянието">
+<!ENTITY showinstatusbar.accesskey "т">
+<!ENTITY showinaddonbar.label "Покажи в адон бара">
+<!ENTITY showinaddonbar.accesskey "а">
+<!ENTITY objecttabs.label "Покажи разделите за Флаш и Java">
+<!ENTITY objecttabs.accesskey "П">
+<!ENTITY hideplaceholders.label "Скрий контейнери на блокираните елементи">
+<!ENTITY hideplaceholders.accesskey "м">
+<!ENTITY counthits.label "Бройте филтър хитове">
+<!ENTITY counthits.accesskey "ф">
+<!ENTITY sync.label "Синхронизирай Настройките за Adblock Plus">
+<!ENTITY sync.accesskey "х">
 <!ENTITY objecttab.title "Блокирай">
 <!ENTITY objecttab.tooltip "Щракни тук за да блокираш този обект със Adblock Плюс">
diff --git a/chrome/adblockplus.jar!/locale/bg/sendReport.dtd b/chrome/adblockplus.jar!/locale/bg/sendReport.dtd
index e241d0b..5a7e0e2 100644
--- a/chrome/adblockplus.jar!/locale/bg/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/bg/sendReport.dtd
@@ -1,28 +1,46 @@
-<!ENTITY wizard.title "докладчик на проблеми">
+<!ENTITY wizard.title "Докладчик за проблеми">
 <!ENTITY privacyPolicy.label "Защита на личните данни">
-<!ENTITY dataCollector.heading "Добре дошли в докладчика на проблеми">
-<!ENTITY dataCollector.description "Моля, изчакайте няколко секунди, докато събeрe Adblock Plus необходимите данни.">
+<!ENTITY dataCollector.heading "Добре дошли в докладчика за проблеми">
+<!ENTITY dataCollector.description "Моля, изчакайте няколко секунди, докато Adblock Плюс събере необходимите данни.">
 <!ENTITY typeSelector.heading "Изберете тип на проблема">
-<!ENTITY typeSelector.description "Този прозорец ще ви преведе през стъпките, необходими за подаване на доклад за Adblock Plus  проблем. Първо, моля изберете вида на проблема, който сте срещнали на тази страница:">
-<!ENTITY typeSelector.falsePositive.label "Adblock Plus блокира твърде много">
+<!ENTITY typeSelector.description "
+ Този прозорец ще ви преведе през стъпките, необходими за подаване на доклад за Adblock
+ Плюс проблем. Първо, моля изберете вида на проблема, който сте срещнали на тази страница:">
+<!ENTITY typeSelector.falsePositive.label "Adblock Плюс блокира твърде много">
 <!ENTITY typeSelector.falsePositive.accesskey "м">
-<!ENTITY typeSelector.falsePositive.description "Изберете тази настройка, ако на страницата липсва важно съдържание, показана е некоректно или не функционира правилно. Може да определите дали Adblock Plus е причина за проблема, като временно го изключите.">
-<!ENTITY typeSelector.falseNegative.label "Adblock Plus не блокира реклама">
+<!ENTITY typeSelector.falsePositive.description "
+ Изберете тази настройка, ако на страницата липсва важно съдържание, показана е некоректно или не функционира правилно. Може да определите дали Adblock Плюс е причина за проблема, като временно го изключите.">
+<!ENTITY typeSelector.falseNegative.label "Adblock Плюа не блокира реклама">
 <!ENTITY typeSelector.falseNegative.accesskey "р">
-<!ENTITY typeSelector.falseNegative.description "Изберете тази настройка, ако се показва реклама въпреки, че Adblock Plus е включен.">
+<!ENTITY typeSelector.falseNegative.description "
+ Изберете тази настройка, ако се показва реклама въпреки, че Adblock Плюс е включен.
+">
 <!ENTITY typeSelector.other.label "Друг проблем">
 <!ENTITY typeSelector.other.accesskey "у">
-<!ENTITY typeSelector.other.description "Изберете тази настройка, ако подозирате, че проблемът е с Adblock Plus, а не с филтрите му.">
+<!ENTITY typeSelector.other.description "
+ Изберете тази настройка, ако подозирате, че проблемът е с Adblock Plus, а не с филтрите му.
+">
 <!ENTITY showRecentReports.label "Покажи наскоро представените доклади">
 <!ENTITY recentReports.label "Вашите наскоро представените доклади">
 <!ENTITY recentReports.clear.label "Премахни всички доклади">
 <!ENTITY recentReports.clear.accesskey "н">
-<!ENTITY issues.description "Adblock Plus откри проблеми с вашата конфигурация, които може да причиняват този проблем или ще затрудни доклада за разследването.">
-<!ENTITY issues.whitelist.description "В момента Adblock Plus е изключен за страницата, която докладвате. Моля активирайте повторно и презаредете страницата преди да изпратите доклада за да помогнете за откриване на проблема.">
-<!ENTITY issues.whitelist.remove.label "Повторно активиране на Adblock Plus на тази страница">
-<!ENTITY issues.disabled.description "Adblock Plus е изключен - няма да блокира нищо в неговото текущо състояние.">
-<!ENTITY issues.disabled.enable.label "Включи Adblock Plus">
-<!ENTITY issues.nofilters.description "Adblock Plus не блокира нищо на текущата страница. Наблюдавания проблем най-вероятно не е свързан с Adblock Plus.">
+<!ENTITY issues.description "
+ Adblock Плюс откри проблеми с вашата конфигурация, които може да причиняват
+ този проблем или ще затрудни доклада за разследването.
+">
+<!ENTITY issues.whitelist.description "
+ В момента Adblock Плюс е изключен за страницата, която докладвате. Моля активирайте повторно
+ и презаредете страницата преди да изпратите доклада за да помогнете за откриване на проблема.
+">
+<!ENTITY issues.whitelist.remove.label "Повторно активиране на Adblock Плюс на тази страница">
+<!ENTITY issues.disabled.description "
+ Adblock Плюс е изключен - няма да блокира нищо в неговото текущо състояние.
+">
+<!ENTITY issues.disabled.enable.label "Включи Adblock Плюс">
+<!ENTITY issues.nofilters.description "
+Adblock Плюс не блокира нищо на текущата страница. Наблюдавания проблем най-вероятно
+ не е свързан с Adblock Плюс.
+">
 <!ENTITY issues.nosubscriptions.description "Изглежда не сте абонирани за някои от предварително направени списъци с филтри, които автоматично премахват нежеланото съдържание от страниците.">
 <!ENTITY issues.nosubscriptions.add.label "Добавяне на абонамент за филтър">
 <!ENTITY issues.subscriptionCount.description "Изглежда, че сте се абонирали за твърде много филтри. Тази настройка не се препоръчва, защото ще направи вероятността от проблеми много по-високи. Също така не може да приемем отчета за грешки защото не е ясно кой филтър прави проблеми и кой автор трябва да предприеме действия. Моля, премахнете всички и оставете само най важният филтър и пробвайте дали проблемът все още съществува.">
@@ -30,7 +48,7 @@
 <!ENTITY issues.ownfilters.description "Някои от филтрите, приложени на тази страница са дефинирани от потребителя. Моля, деактивирайте филтрите, които може да причиняват проблема:">
 <!ENTITY issues.ownfilters.disable.label "Изключване на филтър">
 <!ENTITY issues.disabledgroups.description "Следните абонаменти за филтри/групи филтри са изключени. Все пак биха могли да имат ефект върху тази страница:">
-<!ENTITY issues.disabledgroups.enable.label "Включване на абонамент за филтър/ група филтри">
+<!ENTITY issues.disabledgroups.enable.label "Включване на абонамент за филтър / група филтри">
 <!ENTITY issues.disabledfilters.description "Следните филтри са изключени, но въпреки това може да окажат влияние на тази страница:">
 <!ENTITY issues.disabledfilters.enable.label "Включи филтъра">
 <!ENTITY issues.override.label "Конфигурацията е правилно, продължаване с доклада">
diff --git a/chrome/adblockplus.jar!/locale/bg/settings.dtd b/chrome/adblockplus.jar!/locale/bg/settings.dtd
deleted file mode 100644
index a35f857..0000000
--- a/chrome/adblockplus.jar!/locale/bg/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus Настройки">
-<!ENTITY filters.label "Филтри">
-<!ENTITY filters.accesskey "Ф">
-<!ENTITY add.label "Добави Филтър">
-<!ENTITY add.accesskey "Д">
-<!ENTITY addsubscription.label "Добави абонамент за филтър">
-<!ENTITY addsubscription.accesskey "б">
-<!ENTITY synchsubscriptions.label "Обнови всички абонаменти">
-<!ENTITY synchsubscriptions.accesskey "О">
-<!ENTITY import.label "Вмъкни филтри">
-<!ENTITY import.accesskey "В">
-<!ENTITY export.label "Изнеси Потребителски филтри">
-<!ENTITY export.accesskey "И">
-<!ENTITY clearall.label "Премахване на всички потребителски филтри">
-<!ENTITY clearall.accesskey "П">
-<!ENTITY resethitcounts.label "Рестарт на хит статистиката">
-<!ENTITY resethitcounts.accesskey "Р">
-<!ENTITY edit.label "Промени">
-<!ENTITY edit.accesskey "м">
-<!ENTITY cut.label "Изрежи">
-<!ENTITY cut.accesskey "р">
-<!ENTITY copy.label "Копирай">
-<!ENTITY copy.accesskey "К">
-<!ENTITY paste.label "Постави">
-<!ENTITY paste.accesskey "П">
-<!ENTITY remove.label "Изтрий">
-<!ENTITY remove.accesskey "И">
-<!ENTITY menu.find.label "Намери">
-<!ENTITY menu.find.accesskey "Н">
-<!ENTITY menu.findagain.label "Намери отново">
-<!ENTITY menu.findagain.accesskey "т">
-<!ENTITY view.label "Изглед">
-<!ENTITY view.accesskey "И">
-<!ENTITY sort.label "Сортирай по">
-<!ENTITY sort.accesskey "С">
-<!ENTITY sort.none.label "Несортирани">
-<!ENTITY sort.none.accesskey "Н">
-<!ENTITY sort.ascending.label "А > Я сортиране">
-<!ENTITY sort.ascending.accesskey "А">
-<!ENTITY sort.descending.label "Я > А Сортиране">
-<!ENTITY sort.descending.accesskey "Я">
-<!ENTITY options.label "Настройки">
-<!ENTITY options.accesskey "Н">
-<!ENTITY enable.label "Включи  Adblock Плюс">
-<!ENTITY enable.accesskey "В">
-<!ENTITY showintoolbar.label "Покажи в лентата с инструменти">
-<!ENTITY showintoolbar.accesskey "л">
-<!ENTITY showinstatusbar.label "Покажи в лентата на състоянието">
-<!ENTITY showinstatusbar.accesskey "т">
-<!ENTITY objecttabs.label "Покажи разделите за Флаш и Java">
-<!ENTITY objecttabs.accesskey "П">
-<!ENTITY collapse.label "Свиване на блокираните елементи">
-<!ENTITY collapse.accesskey "С">
-<!ENTITY sync.label "Синхронизирай Настройките за Adblock Plus">
-<!ENTITY sync.accesskey "х">
-<!ENTITY help.label "Помощ">
-<!ENTITY help.accesskey "П">
-<!ENTITY gettingStarted.label "Как да започнем">
-<!ENTITY gettingStarted.accesskey "К">
-<!ENTITY faq.label "Често Задавани Въпроси">
-<!ENTITY faq.accesskey "Ч">
-<!ENTITY filterdoc.label "Писане на Adblock Плюс филтри">
-<!ENTITY filterdoc.accesskey "П">
-<!ENTITY about.label "Относно Adblock Плюс">
-<!ENTITY about.accesskey "О">
-<!ENTITY description "Следните филтри определиха кои адреси да бъдат блокирани и кои от тях трябва да се разрешат:">
-<!ENTITY filter.column "Филтър правило">
-<!ENTITY filter.accesskey "Ф">
-<!ENTITY slow.column "Покажи филтри">
-<!ENTITY slow.accesskey "ж">
-<!ENTITY enabled.column "Включен">
-<!ENTITY enabled.accesskey "В">
-<!ENTITY hitcount.column "Посещения">
-<!ENTITY hitcount.accesskey "щ">
-<!ENTITY lasthit.column "Последни Посещения">
-<!ENTITY lasthit.accesskey "П">
-<!ENTITY context.edit.label "Промени филтър">
-<!ENTITY context.resethitcount.label "Рестарт хит статистика за филтър">
-<!ENTITY context.synchsubscription.label "Обнови абонамента сега">
-<!ENTITY context.editsubscription.label "Промени абонамента">
-<!ENTITY context.moveup.label "Премести филтъра нагоре">
-<!ENTITY context.movedown.label "Премести филтъра надолу">
-<!ENTITY context.movegroupup.label "Премести групата нагоре">
-<!ENTITY context.movegroupdown.label "Премести групата надолу">
-<!ENTITY context.enable.label "Разреши">
-<!ENTITY context.disable.label "Забрани">
-<!ENTITY apply.label "Приложи">
-<!ENTITY apply.accesskey "л">
-<!ENTITY fennec.subscription.label "Филтър абонамент">
diff --git a/chrome/adblockplus.jar!/locale/bg/sidebar.dtd b/chrome/adblockplus.jar!/locale/bg/sidebar.dtd
index 2b986a8..7ad5963 100644
--- a/chrome/adblockplus.jar!/locale/bg/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/bg/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Филтър">
 <!ENTITY state.label "Състояние">
 <!ENTITY size.label "Размер">
+<!ENTITY filterSource.label "Филтър източник">
 <!ENTITY docDomain.label "Източник на документа">
 <!ENTITY docDomain.thirdParty "(трета страна)">
 <!ENTITY docDomain.firstParty "Основни">
diff --git a/chrome/adblockplus.jar!/locale/bg/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/bg/subscriptionSelection.dtd
index 5201b9b..22c6458 100644
--- a/chrome/adblockplus.jar!/locale/bg/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/bg/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Добавяне на абонамент за филтъра на Adblock Плюс">
-<!ENTITY dialog.title.edit "Редактиране на абонамента за филтъра">
-<!ENTITY description.newInstall "Adblock Плюс ще бъде най-ефективен, ако добавите филтър абонамент. Филтър абонаментите са предоставени от други потребители на Adblock Плюс безплатно. Най-подходящ абонамент за вашият език е вече избран.">
 <!ENTITY subscriptionSelector.label "Моля изберете абонамент за филтър от списъка:">
 <!ENTITY viewList.label "Покажи филтрите">
 <!ENTITY visitHomepage.label "Посетете началната страница">
 <!ENTITY addSubscription.label "Добави абонамент">
-<!ENTITY saveSubscription.label "Запиши абонамента">
-<!ENTITY other.label "Добави друг абонамент">
-<!ENTITY other.accesskey "Д">
 <!ENTITY list.download.failed "Adblock Плюс не успя да изтегли списък с абонаменти.">
 <!ENTITY list.download.retry "Опитайте отново">
 <!ENTITY list.download.website "Покажи сайтът">
 <!ENTITY fromWeb.description "Моля, потвърдете, че желаете да добавите този абонамент за този филтър. Може да промените заглавието или местоположението преди да го добавите.">
-<!ENTITY edit.description "Може да променяте заглавието или местоположението на абонамента колкото е необходимо.">
-<!ENTITY external.description "Това е външен абонамент за филтър, той ще бъде актуализиран с разширението което е създадено от този абонамент.">
 <!ENTITY title.label "Заглавие на абонамента:">
 <!ENTITY title.accesskey "З">
 <!ENTITY location.label "Местоположение на списъка с филтрите:">
 <!ENTITY location.accesskey "М">
-<!ENTITY autodownload.label "Автоматично обновявай филтрите">
-<!ENTITY autodownload.accesskey "А">
-<!ENTITY supplementMessage "Този абонамент за филтърът е предназначен да се използва с подписка за филтри "?1?" Които не използвате все още.">
+<!ENTITY supplementMessage "Този абонамент за филтърът е предназначен да се използва с подписка за филтри "?1?"  Които не използвате все още.">
 <!ENTITY addMain.label "Добави абонамент за филтър "?1?"">
 <!ENTITY addMain.accesskey "б">
diff --git a/chrome/adblockplus.jar!/locale/ca/about.dtd b/chrome/adblockplus.jar!/locale/ca/about.dtd
index 024613b..9b1a5b8 100644
--- a/chrome/adblockplus.jar!/locale/ca/about.dtd
+++ b/chrome/adblockplus.jar!/locale/ca/about.dtd
@@ -1,7 +1,6 @@
 <!ENTITY dialog.title "Sobre Adblock Plus">
 <!ENTITY version.title "Versió">
-<!ENTITY description "Adblock Plus et permet decidir que no vols veure a la xarxa.
-Ja no has de descarregar tots els anuncis i pancartes, si no els vols - digues-ho a Adblock Plus!">
+<!ENTITY description "Adblock Plus et permet decidir que no vols veure a la xarxa.nnnJa no has de descarregar tots els anuncis i pancartes, si no els vols - digues-ho a Adblock Plus!">
 <!ENTITY homepage.label "Pàgina principal de Adblock Plus:">
 <!ENTITY author.label "Autor">
 <!ENTITY contributors.label "Contribuïdors:">
diff --git a/chrome/adblockplus.jar!/locale/ca/filters.dtd b/chrome/adblockplus.jar!/locale/ca/filters.dtd
new file mode 100644
index 0000000..3586983
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ca/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Afegir subscripció al filtre">
+<!ENTITY addSubscriptionOther.label "Afegir una altra subscripció">
+<!ENTITY subscription.lastDownload.label "Ultima descàrrega">
+<!ENTITY subscription.lastDownload.inProgress "Descarregant...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Fallada, no és una adreça vàlida">
+<!ENTITY subscription.lastDownload.connectionError "Fallada, error en la descàrrega">
+<!ENTITY subscription.lastDownload.invalidData "Fallada, no és una llista vàlida de filtres">
+<!ENTITY subscription.lastDownload.checksumMismatch "Error, el checksum no concorda">
+<!ENTITY subscription.lastDownload.success "Èxit">
+<!ENTITY addFilter.label "Afegir filtre">
+<!ENTITY filter.cut.label "Retalla">
+<!ENTITY filter.copy.label "Copia">
+<!ENTITY filter.paste.label "Enganxa">
+<!ENTITY filter.delete.label "Suprimeix">
+<!ENTITY viewMenu.label "Visualitza">
+<!ENTITY filter.column "Regla de filtre">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Filtres d'aminorament">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "Activat">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "Encerts">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Ultim encert">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Ordena per">
+<!ENTITY sort.accesskey "O">
+<!ENTITY sort.none.label "Desordenat">
+<!ENTITY sort.none.accesskey "D">
+<!ENTITY sort.ascending.label "Ordre A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordre Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Cerca">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/ca/firstRun.dtd b/chrome/adblockplus.jar!/locale/ca/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ca/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/ca/global.properties b/chrome/adblockplus.jar!/locale/ca/global.properties
index da1813d..604e280 100644
--- a/chrome/adblockplus.jar!/locale/ca/global.properties
+++ b/chrome/adblockplus.jar!/locale/ca/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1?  de ?2?
 blocked_count_addendum=(també a la llista blanca: ?1?, amagats: ?2?)
 no_blocking_suggestions=La pàgina actual no conté elements bloquejables
 whitelisted_page=Adblock Plus ha estat desactivat per la pàgina actual
-whitelist_description=Regles d'excepció
-filterlist_description=Filtres d'anuncis
-invalid_description=Filtres invàlids
-elemhide_description=Regles per amagar elements
-subscription_description=Subscripció de filtres
-subscription_wrong_version=Alguns filtres d'aquesta subscripció requereixen Adblock Plus ?1? per funcionar correctament!
-subscription_source=Orígen:
-subscription_status=Estat:
-subscription_status_autodownload=Actualitzat automàticament
-subscription_status_manualdownload=Actualitzat manualment
-subscription_status_externaldownload=Actualitzat externament (una altra extensió)
-subscription_status_lastdownload=Ultima descàrrega
-subscription_status_lastdownload_inprogress=Descarregant...
-subscription_status_lastdownload_unknown=N/A
 remove_subscription_warning=Realment desitges eliminar aquesta subscripció?
-import_filters_wrong_version=Avís: alguns dels filtres en aquesta llista requereixen Adblock Plus ?1? per funcionar bé. Caldria actualitzar a l'última versió abans d'importar la llista
-import_filters_warning=Desitges substituir els filtres actuals o afegir els nous filtres al final de la llista?
-import_filters_title=Importar filtres
-export_filters_title=Exportar filtres
-invalid_filters_file=Filtre Adblock Plus invàlid
-filters_write_error=Hi ha hagut un error escriving els filtre al fitxer. Comprova que els fitxer no està protegit contra l'escriptura o bloquejat per un altre programa
-clearall_warning=Realment desitges eliminar tots els filtres de la llista?
-resethitcounts_warning=Realment desitges reiniciar el comptador d'encerts per tots els filtres? La operació no es pot desfer!
-resethitcounts_selected_warning=Realment desitges reiniciar el comptador d'encerts per tots els filtres sel.lecionats? La operació no es pot desfer!
 filter_regexp_tooltip=El filtre és una expressió regular o és massa curt per ser optimitzat. Massa d'aquests filtres poden alentir la vostra navegació.
 filter_elemhide_duplicate_id=Només un identificador de l'element pot ser especificat
 filter_elemhide_nocriteria=Cap criteri especificat per reconeixes l'element a amagar
-subscription_notAdded_warning=No has afegit cap subscripció de filtre.Sense una subscripció de filtre necessitaràs afegir filtres Adblock Plus de forma manual.
-subscription_notAdded_warning_addendum=Ho vols fer?
 subscription_invalid_location=La llista de filtres no és una URL vàlida ni un nom de fitxer vàlid.
-synchronize_invalid_url=Fallada, no és una adreça vàlida
-synchronize_connection_error=Fallada, error en la descàrrega
-synchronize_invalid_data=Fallada, no és una llista vàlida de filtres
-synchronize_checksum_mismatch=Error, el checksum no concorda
-synchronize_ok=Èxit
-overwrite=Sobreescriure
-append=Afegir
-new_filter_group_title=Nou filtre
 type_label_other=Un altre
 type_label_script=script
 type_label_image=imatge
@@ -56,15 +23,17 @@ type_label_object=objecte
 type_label_subdocument=marc
 type_label_document=document
 type_label_elemhide=amagat
-type_label_xbl=Víncle XBL
-type_label_ping=enllaça ping
 type_label_xmlhttprequest=Petició XML
 type_label_object_subrequest=Subpetició d'objecte
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=font
 fennec_status_enabled=Adblock Plus està activat.
 fennec_status_disabled=Adblock Plus està desactivat.
 fennec_status_enabled_site=Adblock Plus està activat en ?1?.
 fennec_status_disabled_site=Adblock Plus està desactivat en ?1?.
-sync_engine_title=Dades de Adblock Plus
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/ca/overlay.dtd b/chrome/adblockplus.jar!/locale/ca/overlay.dtd
index ee6adb7..4adf2a8 100644
--- a/chrome/adblockplus.jar!/locale/ca/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/ca/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Elements bloquejables">
 <!ENTITY context.image.label "Adblock imatge">
 <!ENTITY context.object.label "Adblock Objecte">
 <!ENTITY context.frame.label "Adblock Marc">
@@ -13,8 +12,7 @@
 <!ENTITY sidebar.title "Elements bloquejables a la pàgina actual">
 <!ENTITY sendReport.label "Informa sobre la pàgina">
 <!ENTITY sendReport.accesskey "I">
-<!ENTITY settings.label "Preferències">
-<!ENTITY settings.accesskey "P">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Obre elements bloquejables">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Tanca elements bloquejables">
@@ -22,6 +20,23 @@
 <!ENTITY whitelist.site.label "Desactiva Adblock Plus a ?1?">
 <!ENTITY whitelist.page.label "Desactiva només en aquesta pàgina">
 <!ENTITY disable.label "Deshabilita-ho a tots llocs">
-<!ENTITY recommend.label "Recomana'ns a Facebook">
+<!ENTITY options.label "Opcions">
+<!ENTITY options.accesskey "O">
+<!ENTITY showintoolbar.label "Mostra a la barra d'eines">
+<!ENTITY showintoolbar.accesskey "B">
+<!ENTITY showinstatusbar.label "Mostra a la barra d'estat">
+<!ENTITY showinstatusbar.accesskey "S">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Mostra les pestanyes a Flash i Java">
+<!ENTITY objecttabs.accesskey "T">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY sync.label "Sincronitza la configuració d'AdBlock Plus">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Bloqueja">
 <!ENTITY objecttab.tooltip "Clica aquí per bloquejar aquest objecte amb Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
diff --git a/chrome/adblockplus.jar!/locale/ca/settings.dtd b/chrome/adblockplus.jar!/locale/ca/settings.dtd
deleted file mode 100644
index 1efce3a..0000000
--- a/chrome/adblockplus.jar!/locale/ca/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Preferències d'Adblock Plus">
-<!ENTITY filters.label "Filtres">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Afegir filtre">
-<!ENTITY add.accesskey "G">
-<!ENTITY addsubscription.label "Afegir subscripció al filtre">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "Actualitza totes les subscripcions">
-<!ENTITY synchsubscriptions.accesskey "A">
-<!ENTITY import.label "Importar filtres">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Exportar Filtres">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "Eliminar tots els filtres">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "Reinicia les estadístiques d'encerts">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Edita">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Retalla">
-<!ENTITY cut.accesskey "L">
-<!ENTITY copy.label "Copia">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Enganxa">
-<!ENTITY paste.accesskey "x">
-<!ENTITY remove.label "Suprimeix">
-<!ENTITY remove.accesskey "u">
-<!ENTITY menu.find.label "Cerca">
-<!ENTITY menu.find.accesskey "R">
-<!ENTITY menu.findagain.label "Torna a cercar">
-<!ENTITY menu.findagain.accesskey "T">
-<!ENTITY view.label "Visualitza">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Ordena per">
-<!ENTITY sort.accesskey "O">
-<!ENTITY sort.none.label "Desordenat">
-<!ENTITY sort.none.accesskey "D">
-<!ENTITY sort.ascending.label "Ordre A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ordre Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opcions">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Activa Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Mostra a la barra d'eines">
-<!ENTITY showintoolbar.accesskey "B">
-<!ENTITY showinstatusbar.label "Mostra a la barra d'estat">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "Mostra les pestanyes a Flash i Java">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "Col·lapsa els elements bloquejats">
-<!ENTITY collapse.accesskey "L">
-<!ENTITY sync.label "Sincronitza la configuració d'AdBlock Plus">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Ajuda">
-<!ENTITY help.accesskey "u">
-<!ENTITY gettingStarted.label "Començant">
-<!ENTITY gettingStarted.accesskey "C">
-<!ENTITY faq.label "Preguntes més demanades (FAQ)">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Escrivint filtres de Adblock Plus">
-<!ENTITY filterdoc.accesskey "E">
-<!ENTITY about.label "Sobre Adblock Plus">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "Afegeix les adreces que desitgis bloquejar, per suggerències comprova la llista desplegable. Pots utilitzar * com a comodí per crear filtres més generals. Usuaris avançats poden utilitzar expressions regulars com /banner\d+\.gif$/.">
-<!ENTITY filter.column "Regla de filtre">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Filtres d'aminorament">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "Activat">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "Encerts">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "Ultim encert">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Edita filtre">
-<!ENTITY context.resethitcount.label "Reinicia estadístiques del filtre">
-<!ENTITY context.synchsubscription.label "Actualitza la subscripció ara">
-<!ENTITY context.editsubscription.label "Edita la subscripció">
-<!ENTITY context.moveup.label "Mou amunt">
-<!ENTITY context.movedown.label "Mou avall">
-<!ENTITY context.movegroupup.label "Mou grup amunt">
-<!ENTITY context.movegroupdown.label "Mou grup avall">
-<!ENTITY context.enable.label "Activa">
-<!ENTITY context.disable.label "Desactiva">
-<!ENTITY apply.label "Aplicar">
-<!ENTITY apply.accesskey "A">
-<!ENTITY fennec.subscription.label "Subcripció de filtre">
diff --git a/chrome/adblockplus.jar!/locale/ca/sidebar.dtd b/chrome/adblockplus.jar!/locale/ca/sidebar.dtd
index aa0436d..6946a69 100644
--- a/chrome/adblockplus.jar!/locale/ca/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/ca/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtre">
 <!ENTITY state.label "Estat">
 <!ENTITY size.label "Mida">
+<!ENTITY filterSource.label "Filtra font">
 <!ENTITY docDomain.label "Font del document">
 <!ENTITY docDomain.thirdParty "(tercers)">
 <!ENTITY docDomain.firstParty "(primers)">
diff --git a/chrome/adblockplus.jar!/locale/ca/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ca/subscriptionSelection.dtd
index a88bae6..52daa43 100644
--- a/chrome/adblockplus.jar!/locale/ca/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/ca/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Afegeix la subscripció de filtre per a Adblock Plus">
-<!ENTITY dialog.title.edit "Edita subscripció del filtre">
-<!ENTITY description.newInstall "Adblock Plus serà més eficaç si s'afegeix un filtre de subscripció. Filtre subscripcions són proporcionats per altres usuaris de Adblock Plus gratis en el preu. La subscripció més adequat per al seu idioma ja està seleccionat.">
 <!ENTITY subscriptionSelector.label "Si us plau tria una subscripció de filtre a la llista:">
 <!ENTITY viewList.label "Veure filtres">
 <!ENTITY visitHomepage.label "Vista la pàgina web">
 <!ENTITY addSubscription.label "Afegeix subscripció">
-<!ENTITY saveSubscription.label "Salva subscripció">
-<!ENTITY other.label "Afegir una altra subscripció">
-<!ENTITY other.accesskey "A">
 <!ENTITY list.download.failed "Adblock Plus ha fallat en trobar la llista de les subscripcions.">
 <!ENTITY list.download.retry "Torna-ho a provar">
 <!ENTITY list.download.website "Veure pàgina web">
 <!ENTITY fromWeb.description "Si us plau confirma que vols afegir aquesta subscripció de filtre.Pots canviar el títol de la subscripció o la localització abans d'afegir-la.">
-<!ENTITY edit.description "Pots canviar el títol o localització segons sigui necessari.">
-<!ENTITY external.description "Aquesta és una subscripció de filtre externa; serà actualitzada per l'extensió que l'ha creada.">
 <!ENTITY title.label "Títol de la subscripció:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Filtra la localització de la llista:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Actualitza automàticament">
-<!ENTITY autodownload.accesskey "Z">
 <!ENTITY supplementMessage "Aquesta subscripció de filtre s'ha de fer servir amb la subscripció de filtre "?1?" que encara no fas servir.">
 <!ENTITY addMain.label "Afegeix subscripció de filtre "?1?"">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/cs/filters.dtd b/chrome/adblockplus.jar!/locale/cs/filters.dtd
new file mode 100644
index 0000000..650a9da
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/cs/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Předvolby filtrů Adblocku Plus">
+<!ENTITY subscriptions.tab.label "Odebírané sady cizích filtrů">
+<!ENTITY filters.tab.label "Vlastní filtry">
+<!ENTITY addSubscription.label "Přidat cizí filtry">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Přidat">
+<!ENTITY addSubscriptionCancel.label "Zrušit">
+<!ENTITY addSubscriptionOther.label "Přidat další sadu cizích filtrů">
+<!ENTITY noSubscriptions.text "Zatím jste nezačali odebírat žádnou sadu cizích filtrů. Adblock Plus nebude blokovat nic bez nastavených filtrů, použijte prosím "Přidat cizí filtry", abyste nějaké přidali.">
+<!ENTITY subscription.homepage.label "Domovská stránka">
+<!ENTITY subscription.external.label "Aktualizováno jiným rozšířením">
+<!ENTITY subscription.source.label "Seznam filtrů">
+<!ENTITY subscription.enabled.label "Povoleno">
+<!ENTITY subscription.lastDownload.label "Naposledy staženo:">
+<!ENTITY subscription.lastDownload.inProgress "Stahuji...">
+<!ENTITY subscription.lastDownload.unknown "neznámo">
+<!ENTITY subscription.lastDownload.invalidURL "Chyba, toto je nekorektní adresa.">
+<!ENTITY subscription.lastDownload.connectionError "Chyba, nepodařilo se stáhnout soubor">
+<!ENTITY subscription.lastDownload.invalidData "Chyba, stažený soubor není souborem filtrů Adblock Plus">
+<!ENTITY subscription.lastDownload.checksumMismatch "Chyba, neodpovídá kontrolní součet">
+<!ENTITY subscription.lastDownload.success "Úspěch">
+<!ENTITY subscription.minVersion.warning "Tato cizí sada filtrů vyžaduje novější verzi Adblocku Plus, měli byste jej aktualizovat na nejnovější verzi.">
+<!ENTITY subscription.disabledFilters.warning "Některé filtry v této sadě jsou zakázány.">
+<!ENTITY subscription.disabledFilters.enable "Povolit zakázané filtry">
+<!ENTITY subscription.actions.label "Akce">
+<!ENTITY subscription.update.label "Aktualizovat filtry">
+<!ENTITY subscription.editTitle.label "Upravit název">
+<!ENTITY subscription.delete.label "Smazat">
+<!ENTITY subscription.showHideFilters.label "Zobrazit/skrýt filtry">
+<!ENTITY subscription.moveUp.label "Posunout nahoru">
+<!ENTITY subscription.moveDown.label "Posunout dolů">
+<!ENTITY acceptableAds.label "Povolit nerušivé reklamy">
+<!ENTITY acceptableAds.accesskey "n">
+<!ENTITY readMore.label "Zjistit více">
+<!ENTITY addGroup.label "Přidat skupinu filtrů">
+<!ENTITY addGroup.accesskey "s">
+<!ENTITY noFilters.text "Zatím nemáte žádné vlastní filtry.">
+<!ENTITY addFilter.label "Přidat filtr">
+<!ENTITY addFilter.accesskey "p">
+<!ENTITY filter.actions.label "Akce filtrů">
+<!ENTITY filter.edit.label "Upravit">
+<!ENTITY filter.cut.label "Vyjmout">
+<!ENTITY filter.copy.label "Kopírovat">
+<!ENTITY filter.paste.label "Vložit">
+<!ENTITY filter.delete.label "Smazat">
+<!ENTITY filter.selectAll.label "Vybrat vše">
+<!ENTITY filter.resetHitCounts.label "Vynulovat statistiku zásahů">
+<!ENTITY filter.moveUp.label "Posunout nahoru">
+<!ENTITY filter.moveDown.label "Posunout dolů">
+<!ENTITY viewMenu.label "Zobrazit">
+<!ENTITY filter.column "Pravidlo filtru">
+<!ENTITY filter.accesskey "P">
+<!ENTITY slow.column "Pomalé filtry">
+<!ENTITY slow.accesskey "m">
+<!ENTITY enabled.column "Aktivní">
+<!ENTITY enabled.accesskey "k">
+<!ENTITY hitcount.column "Zásahy">
+<!ENTITY hitcount.accesskey "h">
+<!ENTITY lasthit.column "Poslední zásah">
+<!ENTITY lasthit.accesskey "l">
+<!ENTITY sort.label "Seřadit podle">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Neřadit">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "Vzestupně (A-Z)">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Sestupně (Z-A)">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Musíte vybrat skupinu filtrů, aby byly zobrazeny nějaké filtry.">
+<!ENTITY noFiltersInGroup.text "Vybraná skupina je prázdná">
+<!ENTITY filters.remove.warning "Opravdu chcete odebrat všechny vybrané filtry?">
+<!ENTITY backupButton.label "Zálohování a obnova">
+<!ENTITY backupButton.accesskey "o">
+<!ENTITY backup.label "Vytvořit novou zálohu">
+<!ENTITY restore.default.label "Obnovit ze zálohy z ?1?">
+<!ENTITY restore.own.label "Obnovit z vlastní zálohy">
+<!ENTITY backup.complete.title "Všechny filtry a sady cizích filtrů">
+<!ENTITY backup.custom.title "Pouze vlastní filtry">
+<!ENTITY backup.error "Došlo k chybě při zápisu filtrů do souboru. Ujistěte se prosím, že soubor není chráněn proti zápisu nebo používán jinou aplikací.">
+<!ENTITY restore.error "Data ze souboru nelze zpracovat, možná nejde o zálohu filtrů Adblocku Plus?">
+<!ENTITY restore.complete.warning "Všechny vaše předvolby budou nahrazeny obsahem vybraného souboru. Chcete pokračovat?">
+<!ENTITY restore.custom.warning "Všechny vaše vlastní filtry budou nahrazeny obsahem vybraného souboru. Chcete pokračovat?">
+<!ENTITY restore.minVersion.warning "Varování: Soubor byl vytvořen novější verzí Adblocku Plus. Měli byste jej aktualizovat na nějnovější verzi, než budete pokračovat.">
+<!ENTITY find.label "Najít">
+<!ENTITY find.accesskey "j">
+<!ENTITY close.label "Zavřít">
diff --git a/chrome/adblockplus.jar!/locale/cs/firstRun.dtd b/chrome/adblockplus.jar!/locale/cs/firstRun.dtd
new file mode 100644
index 0000000..dc554d1
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/cs/firstRun.dtd
@@ -0,0 +1,9 @@
+<!ENTITY dialog.title "Instalace Adblocku Plus dokončena">
+<!ENTITY confirmation "Děkujeme, že jste nainstalovali Adblock Plus. Od teď budou blokovány reklamy.">
+<!ENTITY advancedSection "Pokročilé možnosti">
+<!ENTITY listSelection1 "Byl nastaven následující seznam cizích filtrů pro blokování reklam:">
+<!ENTITY noList "Žádný seznam cizích filtrů">
+<!ENTITY visitHomepage.label "Navštívit domovskou stránku">
+<!ENTITY acceptableAds "Adblock Plus byl také nastaven, aby povolit nerušivé reklamy.">
+<!ENTITY readMore.label "Zjistit více">
+<!ENTITY listSelection2 "Tento výběr můžete kdykoli změnit v [link]Předvolbách filtrů[/link].">
diff --git a/chrome/adblockplus.jar!/locale/cs/global.properties b/chrome/adblockplus.jar!/locale/cs/global.properties
index 6615ea1..b83a13d 100644
--- a/chrome/adblockplus.jar!/locale/cs/global.properties
+++ b/chrome/adblockplus.jar!/locale/cs/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? z ?2?
 blocked_count_addendum=(povoleno výjimkou: ?1?, skryto: ?2?)
 no_blocking_suggestions=Na této stránce nebyly nalezeny prvky k zablokování
 whitelisted_page=Adblock Plus byl pro aktuální stránku zakázán
-whitelist_description=Mé výjimky
-filterlist_description=Má pravidla blokování reklam
-invalid_description=Má chybná pravidla
-elemhide_description=Má pravidla pro skrývání elementů
-subscription_description=Cizí sady filtrů:
-subscription_wrong_version=Některé filtry v tomto seznamu vyžadují ke správné funkci Adblock Plus ?1?
-subscription_source=Zdroj:
-subscription_status=Stav:
-subscription_status_autodownload=Automaticky aktualizováno
-subscription_status_manualdownload=Manuálně aktualizováno
-subscription_status_externaldownload=Aktualizováno externě (jiným rozšířením)
-subscription_status_lastdownload=Naposledy staženo:
-subscription_status_lastdownload_inprogress=Stahuji...
-subscription_status_lastdownload_unknown=neznámo
+newGroup_title=Nová skupina filtrů
+whitelistGroup_title=Výjimky z pravidel
+blockingGroup_title=Pravidla blokování reklam
+elemhideGroup_title=Pravidla skrývání prvků
 remove_subscription_warning=Skutečně si přejete odstranit tuto sadu cizích filtrů ?
-import_filters_wrong_version=Varování: Některé z filtrů tohoto seznamu vyžadují ke správné funkčnosti Adblock Plus ?1?. Pravděpodobně byste měli aktualizovat Adblock Plus před importováním tohoto seznamu.
-import_filters_warning=Přejete si nahradit aktuální filtry nebo chcete nové filtry přidat na konec seznamu?
-import_filters_title=Importovat filtry
-export_filters_title=Exportovat filtry
-invalid_filters_file=Toto není soubor filtrů Adblock Plus.
-filters_write_error=Nepodařilo se zapsat filtry do souboru. Ujistěte se, že soubor není chráněn proti zápisu nebo blokován jiným programem.
-clearall_warning=Opravdu chcete odstranit všechny filtry ze seznamu?
-resethitcounts_warning=Opravdu chcete vynulovat počítadla všech filtrů? Tuto operaci nelze vrátit zpět.
-resethitcounts_selected_warning=Opravdu chcete vynulovat počítadla vybraných filtrů? Tuto operaci nelze vrátit zpět.
+clearStats_warning=Toto smaže všechny statistiky a vypne počítání zásahů filtrů. Chcete pokračovat?
 filter_regexp_tooltip=Tento filtr je buď regulární výraz nebo je příliš krátký, aby mohl být optimalizován. Příliš mnoho takových filtrů může zpomalit vaše prohlížení stránek.
 filter_elemhide_duplicate_id=Může být uvedeno pouze jedno ID elementu, který má být skryt
 filter_elemhide_nocriteria=Nebyla uvedena žádná kritérie pro rozpoznání elementu, který má být skryt
-subscription_notAdded_warning=Nepřidali jste cizí sadu filtrů. Bez sady filtrů budete muset přidávat pravidla do Adblocku Plus manuálně.
-subscription_notAdded_warning_addendum=Chcete pokračovat?
 subscription_invalid_location=Zadaná adresa seznamu cizích filtrů je buď nesprávná URL nebo obsahuje nesprávné jméno souboru.
-synchronize_invalid_url=Chyba, toto je nekorektní adresa.
-synchronize_connection_error=Chyba, nepodařilo se stáhnout soubor
-synchronize_invalid_data=Chyba, stažený soubor není souborem filtrů Adblock Plus
-synchronize_checksum_mismatch=Chyba, neodpovídá kontrolní součet
-synchronize_ok=Úspěch
-overwrite=Přepsat
-append=Přidat
-new_filter_group_title=Nový filtr
 type_label_other=Ostatní
 type_label_script=Skript
 type_label_image=Obrázek
@@ -56,15 +28,12 @@ type_label_object=Objekt
 type_label_subdocument=Rámec
 type_label_document=Dokument
 type_label_elemhide=skryto
-type_label_xbl=XBL vazba
-type_label_ping=link ping
+type_label_popup=vyskakovací okno
 type_label_xmlhttprequest=XML požadavek
 type_label_object_subrequest=Subpožadavek objektu
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=Písmo
 fennec_status_enabled=Adblock Plus je povolený.
 fennec_status_disabled=Adblock Plus je zakázaný.
 fennec_status_enabled_site=Adblock Plus je povolený na ?1?.
 fennec_status_disabled_site=Adblock Plus je zakázaný na ?1?.
-sync_engine_title=Data Adblocku Plus
diff --git a/chrome/adblockplus.jar!/locale/cs/overlay.dtd b/chrome/adblockplus.jar!/locale/cs/overlay.dtd
index 220f0f3..79d7389 100644
--- a/chrome/adblockplus.jar!/locale/cs/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/cs/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Předvolby Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokovatelné objekty">
 <!ENTITY context.image.label "Blokovat obrázek">
 <!ENTITY context.object.label "Blokovat objekt">
 <!ENTITY context.frame.label "Blokovat rámec">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Adblock Plus: Blokovatelné objekty na zobrazené stránce">
 <!ENTITY sendReport.label "Nahlásit problém na této stránce">
 <!ENTITY sendReport.accesskey "N">
-<!ENTITY settings.label "Předvolby">
-<!ENTITY settings.accesskey "d">
+<!ENTITY filters.label "Předvolby filtrů">
+<!ENTITY filters.accesskey "P">
 <!ENTITY opensidebar.label "Zobrazit blokovatelné objekty">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Skrýt seznam blokovatelných objektů">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Vypnout na ?1?">
 <!ENTITY whitelist.page.label "Vypnout pouze na této stránce">
 <!ENTITY disable.label "Zakázat všude">
-<!ENTITY recommend.label "Doporučit na Facebooku">
+<!ENTITY options.label "Možnosti">
+<!ENTITY options.accesskey "M">
+<!ENTITY contribute.label "Přispět Adblocku Plus">
+<!ENTITY showintoolbar.label "Zobrazit v nástrojové liště">
+<!ENTITY showintoolbar.accesskey "n">
+<!ENTITY showinstatusbar.label "Zobrazit ve stavovém řádku">
+<!ENTITY showinstatusbar.accesskey "r">
+<!ENTITY showinaddonbar.label "Zobrazit v řádku s rozšířeními">
+<!ENTITY showinaddonbar.accesskey "i">
+<!ENTITY objecttabs.label "Zobrazovat ouška u objektů Java a Flash">
+<!ENTITY objecttabs.accesskey "o">
+<!ENTITY hideplaceholders.label "Skrýt zástupné objekty blokovaných prvků">
+<!ENTITY hideplaceholders.accesskey "b">
+<!ENTITY counthits.label "Počítat zásahy filtrů">
+<!ENTITY counthits.accesskey "z">
+<!ENTITY sync.label "Nastavení synchronizace Adblocku Plus">
+<!ENTITY sync.accesskey "s">
 <!ENTITY objecttab.title "Blokovat">
 <!ENTITY objecttab.tooltip "Klepněte zde pro blokování tohoto objektu pomocí Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/cs/settings.dtd b/chrome/adblockplus.jar!/locale/cs/settings.dtd
deleted file mode 100644
index 8de4d26..0000000
--- a/chrome/adblockplus.jar!/locale/cs/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Předvolby Adblock Plus">
-<!ENTITY filters.label "Filtry">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Přidat filtr">
-<!ENTITY add.accesskey "P">
-<!ENTITY addsubscription.label "Přidat cizí filtry">
-<!ENTITY addsubscription.accesskey "c">
-<!ENTITY synchsubscriptions.label "Aktualizovat všechny cizí sady filtrů">
-<!ENTITY synchsubscriptions.accesskey "A">
-<!ENTITY import.label "Importovat filtry ze souboru">
-<!ENTITY import.accesskey "I">
-<!ENTITY export.label "Exportovat vlastní filtry do souboru">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "Odstranit všechny vlastní filtry">
-<!ENTITY clearall.accesskey "O">
-<!ENTITY resethitcounts.label "Vynulovat počítadla zásahů">
-<!ENTITY resethitcounts.accesskey "V">
-<!ENTITY edit.label "Úpravy">
-<!ENTITY edit.accesskey "A">
-<!ENTITY cut.label "Vyjmout">
-<!ENTITY cut.accesskey "j">
-<!ENTITY copy.label "Kopírovat">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Vložit">
-<!ENTITY paste.accesskey "l">
-<!ENTITY remove.label "Smazat">
-<!ENTITY remove.accesskey "z">
-<!ENTITY menu.find.label "Najít">
-<!ENTITY menu.find.accesskey "N">
-<!ENTITY menu.findagain.label "Najít další">
-<!ENTITY menu.findagain.accesskey "d">
-<!ENTITY view.label "Zobrazit">
-<!ENTITY view.accesskey "Z">
-<!ENTITY sort.label "Seřadit podle">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Neřadit">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "Vzestupně (A-Z)">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Sestupně (Z-A)">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Možnosti">
-<!ENTITY options.accesskey "M">
-<!ENTITY enable.label "Aktivovat Adblock Plus">
-<!ENTITY enable.accesskey "k">
-<!ENTITY showintoolbar.label "Zobrazit v nástrojové liště">
-<!ENTITY showintoolbar.accesskey "b">
-<!ENTITY showinstatusbar.label "Zobrazit ve stavovém řádku">
-<!ENTITY showinstatusbar.accesskey "r">
-<!ENTITY objecttabs.label "Zobrazovat ouška u objektů Java a Flash">
-<!ENTITY objecttabs.accesskey "o">
-<!ENTITY collapse.label "Minimalizovat blokované objekty">
-<!ENTITY collapse.accesskey "i">
-<!ENTITY sync.label "Synchronizovat nastavení Adbloku Plus">
-<!ENTITY sync.accesskey "s">
-<!ENTITY help.label "Nápověda">
-<!ENTITY help.accesskey "v">
-<!ENTITY gettingStarted.label "Začínáme">
-<!ENTITY gettingStarted.accesskey "Z">
-<!ENTITY faq.label "Často kladené dotazy (FAQ)">
-<!ENTITY faq.accesskey "q">
-<!ENTITY filterdoc.label "Psaní Adblock Plus filtrů">
-<!ENTITY filterdoc.accesskey "f">
-<!ENTITY about.label "O doplňku Adblock Plus">
-<!ENTITY about.accesskey "o">
-<!ENTITY description "Následující filtry rozhodují, které adresy budou blokovány a které budou povoleny:">
-<!ENTITY filter.column "Pravidlo filtru">
-<!ENTITY filter.accesskey "P">
-<!ENTITY slow.column "Pomalé filtry">
-<!ENTITY slow.accesskey "m">
-<!ENTITY enabled.column "Aktivní">
-<!ENTITY enabled.accesskey "k">
-<!ENTITY hitcount.column "Zásahy">
-<!ENTITY hitcount.accesskey "h">
-<!ENTITY lasthit.column "Poslední zásah">
-<!ENTITY lasthit.accesskey "l">
-<!ENTITY context.edit.label "Přidat filtr">
-<!ENTITY context.resethitcount.label "Vynulovat počítadlo zásahů tohoto filtru">
-<!ENTITY context.synchsubscription.label "Aktualizovat seznam cizích filtrů">
-<!ENTITY context.editsubscription.label "Upravit cizí filtry">
-<!ENTITY context.moveup.label "Posunout filtr nahoru">
-<!ENTITY context.movedown.label "Posunout filtr dolů">
-<!ENTITY context.movegroupup.label "Posunout skupinu nahoru">
-<!ENTITY context.movegroupdown.label "Posunout skupinu dolů">
-<!ENTITY context.enable.label "Povolit">
-<!ENTITY context.disable.label "Zakázat">
-<!ENTITY apply.label "Použít">
-<!ENTITY apply.accesskey "U">
-<!ENTITY fennec.subscription.label "Cizí sada filtrů">
diff --git a/chrome/adblockplus.jar!/locale/cs/sidebar.dtd b/chrome/adblockplus.jar!/locale/cs/sidebar.dtd
index 5495a83..aa62a18 100644
--- a/chrome/adblockplus.jar!/locale/cs/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/cs/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtr">
 <!ENTITY state.label "Stav">
 <!ENTITY size.label "Velikost">
+<!ENTITY filterSource.label "Zdroj filtru">
 <!ENTITY docDomain.label "Zdroj dokumentu">
 <!ENTITY docDomain.thirdParty "(externí)">
 <!ENTITY docDomain.firstParty "(vlastní)">
diff --git a/chrome/adblockplus.jar!/locale/cs/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/cs/subscriptionSelection.dtd
index a45d6e9..7196b21 100644
--- a/chrome/adblockplus.jar!/locale/cs/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/cs/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Přidat sadu cizích filtrů Adblock Plus">
-<!ENTITY dialog.title.edit "Upravit sadu cizích filtrů">
-<!ENTITY description.newInstall "Adblock Plus bude fungovat nejefektivněji, pokud přidáte cizí sadu filtrů. Cizí sady vytváří zdarma ostatní uživatelé Adblocku Plus. Nejvhodnější sada pro váš jazyk byla již vybrána.">
 <!ENTITY subscriptionSelector.label "Prosím vyberte cizí sadu filtrů ze seznamu:">
 <!ENTITY viewList.label "Zobrazit pravidla">
 <!ENTITY visitHomepage.label "Navštívit domovskou stránku">
 <!ENTITY addSubscription.label "Přidat cizí sadu filtrů">
-<!ENTITY saveSubscription.label "Uložit odběr cizí sady filtrů">
-<!ENTITY other.label "Přidat další sadu cizích filtrů">
-<!ENTITY other.accesskey "d">
 <!ENTITY list.download.failed "Adblocku Plus se nepodařilo získat seznam cizích sad filtrů.">
 <!ENTITY list.download.retry "Zkusit znovu">
 <!ENTITY list.download.website "Zobrazit webovou stránku">
 <!ENTITY fromWeb.description "Prosím potvrďte, že chcete přidat tuto cizí sadu filtrů. Můžete změnít její titulek nebo umístění před jejím přidáním.">
-<!ENTITY edit.description "Pokud to bude nutné, můžete změnit titulek nebo umístění cizí sady filtrů.">
-<!ENTITY external.description "Toto je cizí sada filtrů přidaná jiným rozšířením; o její aktualizaci se bude starat rozšíření, které ji přidalo.">
 <!ENTITY title.label "Označení cizích filtrů:">
 <!ENTITY title.accesskey "O">
 <!ENTITY location.label "Umístění sady filtrů:">
 <!ENTITY location.accesskey "U">
-<!ENTITY autodownload.label "Automaticky aktualizovat">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Tato cizí sada filtrů je určena k používání se sadou "?1?", kterou ještě nepoužíváte.">
 <!ENTITY addMain.label "Přidat také cizí sadu filtrů "?1?"">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/da/about.dtd b/chrome/adblockplus.jar!/locale/da/about.dtd
index 3d3bdba..84009d8 100644
--- a/chrome/adblockplus.jar!/locale/da/about.dtd
+++ b/chrome/adblockplus.jar!/locale/da/about.dtd
@@ -4,5 +4,5 @@
 <!ENTITY homepage.label "Adblock Plus hjemmeside:">
 <!ENTITY author.label "Udvikler:">
 <!ENTITY contributors.label "Bidrag:">
-<!ENTITY subscriptionAuthors.label "Filter udviklere:">
+<!ENTITY subscriptionAuthors.label "Filterudviklere:">
 <!ENTITY translators.label "Oversættere:">
diff --git a/chrome/adblockplus.jar!/locale/da/composer.dtd b/chrome/adblockplus.jar!/locale/da/composer.dtd
index 17d25be..e61847e 100644
--- a/chrome/adblockplus.jar!/locale/da/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/da/composer.dtd
@@ -14,11 +14,11 @@
 <!ENTITY type.whitelist.accesskey "U">
 <!ENTITY pattern.label "Kig efter mønster">
 <!ENTITY pattern.explanation "Mønsteret kan være enhver del af adressen, tegnet * bruges som jokertegn. Filteret vil kun blive benyttet på adresser der matcher mønsteret.">
-<!ENTITY regexp.warning "Det indtastede mønster vil blive fortolket som et regulært udtryk. Mange regulære udtryk kan gøre din browser langsommere. Hvis det ikke var din intention at bruge regulære udtryk, tilføj et * tegn i slutningen af mønsteret.">
-<!ENTITY shortpattern.warning "Det indtastede mønster er for kort til at blive optimeret, mange sådanne mønstre kan gøre din browser langsommere. Det anbefales at du vælger en længere streng for dette filter.">
+<!ENTITY regexp.warning "Det indtastede mønster vil blive fortolket som et regulært udtryk. Mange regulære udtryk kan gøre din browser langsommere. Hvis det ikke var din mening at bruge et regulært udtryk, så tilføj et * i sidst i mønsteret.">
+<!ENTITY shortpattern.warning "Det indtastede mønster er for kort til optimering, og kan sløve din browser. Det anbefales at du vælger en længere streng for dette filter.">
 <!ENTITY match.warning "Det angivne mønster matcher ikke længere den blokerede/hvidlistede adresse og har ingen effekt.">
-<!ENTITY custom.pattern.label "Brugerdefineret:">
-<!ENTITY custom.pattern.accesskey "r">
+<!ENTITY custom.pattern.label "Tilpasset:">
+<!ENTITY custom.pattern.accesskey "t">
 <!ENTITY anchors.label "Accepter kun mønster:">
 <!ENTITY anchor.start.label "i begyndelsen af adressen">
 <!ENTITY anchor.start.accesskey "g">
@@ -33,9 +33,9 @@
 <!ENTITY firstParty.label "Kun førsteparts">
 <!ENTITY firstParty.accesskey "f">
 <!ENTITY thirdParty.label "Kun tredjeparts">
-<!ENTITY thirdParty.accesskey "t">
-<!ENTITY matchCase.label "Match store/små bogstaver">
-<!ENTITY matchCase.accesskey "M">
+<!ENTITY thirdParty.accesskey "j">
+<!ENTITY matchCase.label "Versalfølsom (a/A)">
+<!ENTITY matchCase.accesskey "V">
 <!ENTITY types.label "Benyt på typer:">
 <!ENTITY selectAllTypes.label "Vælg alle">
 <!ENTITY unselectAllTypes.label "Vælg ingen">
diff --git a/chrome/adblockplus.jar!/locale/da/filters.dtd b/chrome/adblockplus.jar!/locale/da/filters.dtd
new file mode 100644
index 0000000..d5d4590
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/da/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Adblock Plus filterpræferencer">
+<!ENTITY subscriptions.tab.label "Filterabonnementer">
+<!ENTITY filters.tab.label "Tilpassede filtre">
+<!ENTITY addSubscription.label "Tilføj filterabonnement">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Tilføj">
+<!ENTITY addSubscriptionCancel.label "Annuller">
+<!ENTITY addSubscriptionOther.label "Tilføj endnu et abonnement">
+<!ENTITY noSubscriptions.text "
+ Du har endnu ikke tilføjet Filterabonnementer. Adblock Plus blokerer ikke
+ noget uden filtre, så brug "Tilføj Filterabonnementer;
+ for at tilføje nogen.
+">
+<!ENTITY subscription.homepage.label "Hjemmeside">
+<!ENTITY subscription.external.label "Opdateret af en anden tilføjelse">
+<!ENTITY subscription.source.label "Filterliste">
+<!ENTITY subscription.enabled.label "Aktiveret">
+<!ENTITY subscription.lastDownload.label "Sidst hentet:">
+<!ENTITY subscription.lastDownload.inProgress "Henter...">
+<!ENTITY subscription.lastDownload.unknown "Ukendt">
+<!ENTITY subscription.lastDownload.invalidURL "Fejlede, ikke en gyldig adresse">
+<!ENTITY subscription.lastDownload.connectionError "Fejlede, hentningsfejl">
+<!ENTITY subscription.lastDownload.invalidData "Fejlede, ikke en gyldig liste over filtre">
+<!ENTITY subscription.lastDownload.checksumMismatch "Fejlede, checksum matcher ikke">
+<!ENTITY subscription.lastDownload.success "Succes">
+<!ENTITY subscription.minVersion.warning "Dette Filterabonnement kræver en nyere udgave af Adblock Plus. Opdater venligst.">
+<!ENTITY subscription.disabledFilters.warning "Dette abonnement indeholder deaktiverede filtre.">
+<!ENTITY subscription.disabledFilters.enable "Aktiver deaktiverede filtre">
+<!ENTITY subscription.actions.label "Handlinger">
+<!ENTITY subscription.update.label "Opdater filtre">
+<!ENTITY subscription.editTitle.label "Rediger titel">
+<!ENTITY subscription.delete.label "Slet">
+<!ENTITY subscription.showHideFilters.label "Vis/skjul filtre">
+<!ENTITY subscription.moveUp.label "Flyt op">
+<!ENTITY subscription.moveDown.label "Flyt op">
+<!ENTITY acceptableAds.label "Tillad upåtrængende annoncering">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Lær mere">
+<!ENTITY addGroup.label "Tilføj filtergruppe">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+ Du har endnu ingen tilpassede filtre.
+">
+<!ENTITY addFilter.label "Tilføj filter">
+<!ENTITY addFilter.accesskey "ø">
+<!ENTITY filter.actions.label "Filterhandlinger">
+<!ENTITY filter.edit.label "Rediger">
+<!ENTITY filter.cut.label "Klip">
+<!ENTITY filter.copy.label "Kopier">
+<!ENTITY filter.paste.label "Sæt ind">
+<!ENTITY filter.delete.label "Slet">
+<!ENTITY filter.selectAll.label "Vælg alle">
+<!ENTITY filter.resetHitCounts.label "Nulstil statistikker">
+<!ENTITY filter.moveUp.label "Flyt op">
+<!ENTITY filter.moveDown.label "Flyt ned">
+<!ENTITY viewMenu.label "Vis">
+<!ENTITY filter.column "Filterregel">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Langsomme filtre">
+<!ENTITY slow.accesskey "o">
+<!ENTITY enabled.column "Aktiveret">
+<!ENTITY enabled.accesskey "l">
+<!ENTITY hitcount.column "Hits">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Seneste hit">
+<!ENTITY lasthit.accesskey "i">
+<!ENTITY sort.label "Sorter efter">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Usorteret">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Vælg en filtergruppe for at få vist filtrene.">
+<!ENTITY noFiltersInGroup.text "Den valgte gruppe er tom">
+<!ENTITY filters.remove.warning "Vil du fjerne de valgte filtre?">
+<!ENTITY backupButton.label "Backup og gendan">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "Opret nyt backup">
+<!ENTITY restore.default.label "Gendan backup fra ?1?">
+<!ENTITY restore.own.label "Gendan eget backup">
+<!ENTITY backup.complete.title "Alle filtre og abonnementer">
+<!ENTITY backup.custom.title "Kun tilpassede filtre">
+<!ENTITY backup.error "Der opstod en skrivefejl. Kontroller at filen ikke er skrivebeskyttet eller åben i et andet program.">
+<!ENTITY restore.error "Filen kunne ikke åbnes, måske er det ikke en Adblock Plus backupfil?">
+<!ENTITY restore.complete.warning "Alle dine filterpræferencer erstattes af indholdet i den valgte fil. Vil du fortsætte?">
+<!ENTITY restore.custom.warning "Alle dine tilpassede filtre erstattes af indholdet i den valgte fil. Vil du fortsætte?">
+<!ENTITY restore.minVersion.warning "Advarsel: Filen er oprettet med en nyere Adblock Plus. Du bør opdatere Adblock Plus før du gendanner fra denne fil.">
+<!ENTITY find.label "Find">
+<!ENTITY find.accesskey "n">
+<!ENTITY close.label "Luk">
diff --git a/chrome/adblockplus.jar!/locale/da/firstRun.dtd b/chrome/adblockplus.jar!/locale/da/firstRun.dtd
new file mode 100644
index 0000000..d45259a
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/da/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus er nu installeret">
+<!ENTITY confirmation "
+ Tak fordi du valgte Adblock Plus. Reklamer blokeres fra nu af .
+ God fornøjelse!">
+<!ENTITY advancedSection "Avanceret">
+<!ENTITY listSelection1 "
+ Følgende filterliste er indstillet til at blokere annoncer:
+">
+<!ENTITY noList "Ingen filterliste">
+<!ENTITY visitHomepage.label "Besøg listens hjemmeside">
+<!ENTITY acceptableAds "
+ Adblock Plus er også indstillet til at tillade upåtrængende annoncering.
+">
+<!ENTITY readMore.label "Lær mere om dette">
+<!ENTITY listSelection2 "
+ Du kan altid ændre dette i [link]Filterpræferencer[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/da/global.properties b/chrome/adblockplus.jar!/locale/da/global.properties
index 8ec1c9e..8ab61b9 100644
--- a/chrome/adblockplus.jar!/locale/da/global.properties
+++ b/chrome/adblockplus.jar!/locale/da/global.properties
@@ -1,5 +1,5 @@
 default_dialog_title=Adblock Plus
-action0_tooltip=Klik for at bringe kontekstmenuen op, midterklik for at aktivere/deaktivere.
+action0_tooltip=Klik for at vise kontekstmenuen, midterklik for at aktivere/deaktivere.
 action1_tooltip=Klik for at åbne/lukke blokérbare elementer, midterklik for at aktivere/deaktivere.
 action2_tooltip=Klik for at åbne indstillingerne, midterklik for at aktivere/deaktivere.
 action3_tooltip=Klik for at aktivere/deaktivere Adblock Plus.
@@ -8,46 +8,18 @@ active_tooltip=Adblock Plus er aktiveret, ?1? filter-abonnementer og ?2? brugerd
 whitelisted_tooltip=Adblock Plus er aktiv men slået fra på nuværende side.
 blocked_count_tooltip=?1? ud af ?2?
 blocked_count_addendum=(også hvidlistet: ?1?, skjult: ?2?)
-no_blocking_suggestions=Ingen blokerbare elementer fundet på aktuel side
+no_blocking_suggestions=Ingen blokerbare elementer på aktuel side
 whitelisted_page=Adblock Plus er slået fra for aktuel side
-whitelist_description=Mine undtagelsesregler
-filterlist_description=Mine reklamefiltre
-invalid_description=Mine ugyldige filtre
-elemhide_description=Mine skjul elementer-regler
-subscription_description=Filterabonnement:
-subscription_wrong_version=Nogle filtre i dette abonnement kræver Adblock Plus ?1? for at virke ordentligt!
-subscription_source=Kilde:
-subscription_status=Status:
-subscription_status_autodownload=Opdateres automatisk
-subscription_status_manualdownload=Opdateres manuelt
-subscription_status_externaldownload=Opdateres eksternt (af en anden udvidelse)
-subscription_status_lastdownload=Sidst hentet:
-subscription_status_lastdownload_inprogress=Henter...
-subscription_status_lastdownload_unknown=Ukendt
+newGroup_title=Ny filtergruppe
+whitelistGroup_title=Undtagelsesregler
+blockingGroup_title=Blokeringsregler
+elemhideGroup_title=Skjul emner regler
 remove_subscription_warning=Vil du virkelig fjerne dette abonnement?
-import_filters_wrong_version=Advarsel: nogle af filtrene i denne liste kræver Adblock Plus ?1? for at virke ordentligt. Du skal sandsynligvis opdatere til seneste Adblock Plus-version før import af denne liste.
-import_filters_warning=Vil du erstatte dine nuværende filtre eller tilføje de nye filtre til slutningen af listen?
-import_filters_title=Importer filtre
-export_filters_title=Eksporter filtre
-invalid_filters_file=Ikke en gyldig Adblock Plus filtre-fil.
-filters_write_error=Der skete en fejl ved skrivning af filtrene til filen. Kontroller at filen ikke er skrivebeskyttet eller låst af et andet program.
-clearall_warning=Vil du virkelig fjerne alle filtre fra listen?
-resethitcounts_warning=Er du sikker på at du vil nulstille hittællerne for alle filtre? Denne operation kan ikke fortrydes!
-resethitcounts_selected_warning=Er du sikker på at du vil nulstille hittællerne for de valgte filtre? Denne operation kan ikke fortrydes!
+clearStats_warning=Nulstiller hit statistikker for alle filtre og deaktiverer tælleren. Vil du fortsætte?
 filter_regexp_tooltip=Dette filter er enten et regulært udtryk eller for kort til at blive optimeret. For mange af disse kan gøre din browser langsommere.
 filter_elemhide_duplicate_id=Kun ét ID for elementet der skal skjules kan angives
 filter_elemhide_nocriteria=Ingen kriterier angivet for at genkende elementet der skal skjules
-subscription_notAdded_warning=Du tilføjede ikke et filterabonnement. Uden et filterabonnement er du nødt til at tilføje Adblock Plus-filtre manuelt.
-subscription_notAdded_warning_addendum=Ønsker du at fortsætte?
-subscription_invalid_location=Filterliste-placering er hverken en gyldig URL eller et gyldigt filnavn.
-synchronize_invalid_url=Fejlede, ikke en gyldig adresse
-synchronize_connection_error=Fejlede, hentningsfejl
-synchronize_invalid_data=Fejlede, ikke en gyldig liste over filtre
-synchronize_checksum_mismatch=Fejlede, checksum matcher ikke
-synchronize_ok=Succes
-overwrite=Overskriv
-append=Tilføj
-new_filter_group_title=Nyt filter
+subscription_invalid_location=Filterlistens placering er hverken en gyldig URL eller et gyldigt filnavn.
 type_label_other=andet
 type_label_script=script
 type_label_image=billede
@@ -56,15 +28,12 @@ type_label_object=objekt
 type_label_subdocument=ramme
 type_label_document=dokument
 type_label_elemhide=skjult
-type_label_xbl=XBL-binding
-type_label_ping=link ping
+type_label_popup=popup vindue
 type_label_xmlhttprequest=XML-forespørgsel
 type_label_object_subrequest=objekt underforespørgsel
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=skrifttype
 fennec_status_enabled=Adblock Plus er aktiveret.
 fennec_status_disabled=Adblock Plus er deaktiveret.
 fennec_status_enabled_site=Adblock Plus er aktiveret på ?1?.
 fennec_status_disabled_site=Adblock Plus er deaktiveret på ?1?.
-sync_engine_title=Adblock Plus data
diff --git a/chrome/adblockplus.jar!/locale/da/overlay.dtd b/chrome/adblockplus.jar!/locale/da/overlay.dtd
index 98c1011..3add152 100644
--- a/chrome/adblockplus.jar!/locale/da/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/da/overlay.dtd
@@ -4,17 +4,16 @@
 <!ENTITY menuitem.label "Adblock Plus indstillinger">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokérbare emner">
 <!ENTITY context.image.label "Adblock billede">
 <!ENTITY context.object.label "Adblock objekt">
 <!ENTITY context.frame.label "Adblock ramme">
 <!ENTITY context.media.label "Adblock Plus: Bloker audio/video">
-<!ENTITY context.removeWhitelist.label "Adblock Plus: Gen-aktivér på denne side">
+<!ENTITY context.removeWhitelist.label "Adblock Plus: Genaktivér på denne side">
 <!ENTITY sidebar.title "Blokérbare elementer på aktuel side">
 <!ENTITY sendReport.label "Rapporter problem">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Præferencer">
-<!ENTITY settings.accesskey "F">
+<!ENTITY filters.label "Filterpræferencer">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Åbn blokérbare elementer">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Luk blokérbare elementer">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Slå fra på ?1?">
 <!ENTITY whitelist.page.label "Slå fra på denne side">
 <!ENTITY disable.label "Deaktiver overalt">
-<!ENTITY recommend.label "Anbefal os på Facebook">
+<!ENTITY options.label "Indstillinger">
+<!ENTITY options.accesskey "d">
+<!ENTITY contribute.label "Bidrag til Adblock Plus">
+<!ENTITY showintoolbar.label "Vis på værktøjslinje">
+<!ENTITY showintoolbar.accesskey "V">
+<!ENTITY showinstatusbar.label "Vis på statuslinje">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "Vis på tilføjelseslinie">
+<!ENTITY showinaddonbar.accesskey "V">
+<!ENTITY objecttabs.label "Vis faner på Flash og Java">
+<!ENTITY objecttabs.accesskey "J">
+<!ENTITY hideplaceholders.label "Skjul blokerede emners pladsholder">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Tæl filterhits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY sync.label "Synk Adblock Plus indstillinger">
+<!ENTITY sync.accesskey "k">
 <!ENTITY objecttab.title "Bloker">
 <!ENTITY objecttab.tooltip "Klik her for at blokere dette objekt med Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/da/sendReport.dtd b/chrome/adblockplus.jar!/locale/da/sendReport.dtd
index 670da19..763f452 100644
--- a/chrome/adblockplus.jar!/locale/da/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/da/sendReport.dtd
@@ -1,7 +1,7 @@
 <!ENTITY wizard.title "Rapporter problem">
 <!ENTITY privacyPolicy.label "Privatlivspolitik">
 <!ENTITY dataCollector.heading "Velkommen til Rapporter problem">
-<!ENTITY dataCollector.description "Vent  et øjeblik mens Adblock Plus indsamler data.">
+<!ENTITY dataCollector.description "Vent et øjeblik mens Adblock Plus indsamler data.">
 <!ENTITY typeSelector.heading "Vælg problemtype">
 <!ENTITY typeSelector.description "Dette vindue vil føre dig gennem de trin der kræves for at rapportere et Adblock Plus problem. Vælg først hvilken problemtype du oplever på denne side:">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus blokerer for meget">
diff --git a/chrome/adblockplus.jar!/locale/da/settings.dtd b/chrome/adblockplus.jar!/locale/da/settings.dtd
deleted file mode 100644
index a505c05..0000000
--- a/chrome/adblockplus.jar!/locale/da/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus præferencer">
-<!ENTITY filters.label "Filtre">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Tilføj filter">
-<!ENTITY add.accesskey "T">
-<!ENTITY addsubscription.label "Tilføj filterabonnement">
-<!ENTITY addsubscription.accesskey "B">
-<!ENTITY synchsubscriptions.label "Opdater alle abonnementer">
-<!ENTITY synchsubscriptions.accesskey "d">
-<!ENTITY import.label "Importer filtre">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Eksporter brugerdefinerede filtre">
-<!ENTITY export.accesskey "P">
-<!ENTITY clearall.label "Fjern alle brugerdefinerede filtre">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "Nulstil hit statistikker">
-<!ENTITY resethitcounts.accesskey "N">
-<!ENTITY edit.label "Rediger">
-<!ENTITY edit.accesskey "R">
-<!ENTITY cut.label "Klip">
-<!ENTITY cut.accesskey "K">
-<!ENTITY copy.label "Kopier">
-<!ENTITY copy.accesskey "o">
-<!ENTITY paste.label "Sæt ind">
-<!ENTITY paste.accesskey "æ">
-<!ENTITY remove.label "Slet">
-<!ENTITY remove.accesskey "S">
-<!ENTITY menu.find.label "Find">
-<!ENTITY menu.find.accesskey "F">
-<!ENTITY menu.findagain.label "Find igen">
-<!ENTITY menu.findagain.accesskey "g">
-<!ENTITY view.label "Vis">
-<!ENTITY view.accesskey "i">
-<!ENTITY sort.label "Sorter efter">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Usorteret">
-<!ENTITY sort.none.accesskey "U">
-<!ENTITY sort.ascending.label "A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Indstillinger">
-<!ENTITY options.accesskey "d">
-<!ENTITY enable.label "Aktiver Adblock Plus">
-<!ENTITY enable.accesskey "I">
-<!ENTITY showintoolbar.label "Vis på værktøjslinje">
-<!ENTITY showintoolbar.accesskey "V">
-<!ENTITY showinstatusbar.label "Vis på statuslinje">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Vis faner på Flash og Java">
-<!ENTITY objecttabs.accesskey "J">
-<!ENTITY collapse.label "Sammenfold blokerede emner">
-<!ENTITY collapse.accesskey "m">
-<!ENTITY sync.label "Synk Adblock Plus indstillinger">
-<!ENTITY sync.accesskey "k">
-<!ENTITY help.label "Hjælp">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "Start her (engelsk)">
-<!ENTITY gettingStarted.accesskey "a">
-<!ENTITY faq.label "Ofte stillede spørgsmål">
-<!ENTITY faq.accesskey "f">
-<!ENTITY filterdoc.label "Skriver Adblock Plus filtre">
-<!ENTITY filterdoc.accesskey "R">
-<!ENTITY about.label "Om Adblock Plus">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "Følgende filtre afgør hvilke adresser der blokeres og hvilke der tillades:">
-<!ENTITY filter.column "Filterregel">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Langsomme filtre">
-<!ENTITY slow.accesskey "o">
-<!ENTITY enabled.column "Slået til">
-<!ENTITY enabled.accesskey "l">
-<!ENTITY hitcount.column "Hits">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "Seneste hit">
-<!ENTITY lasthit.accesskey "i">
-<!ENTITY context.edit.label "Redigér filter">
-<!ENTITY context.resethitcount.label "Nulstil hitstatistik for filter">
-<!ENTITY context.synchsubscription.label "Opdatér abonnement nu">
-<!ENTITY context.editsubscription.label "Redigér abonnement">
-<!ENTITY context.moveup.label "Flyt filter op">
-<!ENTITY context.movedown.label "Flyt filter ned">
-<!ENTITY context.movegroupup.label "Flyt gruppe op">
-<!ENTITY context.movegroupdown.label "Flyt gruppe ned">
-<!ENTITY context.enable.label "Aktiver">
-<!ENTITY context.disable.label "Deaktiver">
-<!ENTITY apply.label "Anvend">
-<!ENTITY apply.accesskey "v">
-<!ENTITY fennec.subscription.label "Filterabonnement">
diff --git a/chrome/adblockplus.jar!/locale/da/sidebar.dtd b/chrome/adblockplus.jar!/locale/da/sidebar.dtd
index f2be33a..8cc29e0 100644
--- a/chrome/adblockplus.jar!/locale/da/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/da/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filter">
 <!ENTITY state.label "Tilstand">
 <!ENTITY size.label "Størrelse">
+<!ENTITY filterSource.label "Filterkilde">
 <!ENTITY docDomain.label "Dokumentkilde">
 <!ENTITY docDomain.thirdParty "(tredjeparts)">
 <!ENTITY docDomain.firstParty "(førsteparts)">
diff --git a/chrome/adblockplus.jar!/locale/da/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/da/subscriptionSelection.dtd
index 98222fa..bd881fb 100644
--- a/chrome/adblockplus.jar!/locale/da/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/da/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Tilføj Adblock Plus filterabonnement">
-<!ENTITY dialog.title.edit "Rediger filterabonnement">
-<!ENTITY description.newInstall "Adblock Plus er mest effektivt hvis du tilføjer et filterabonnement. Abonnementer leveres gratis af andre Adblock Plus-brugere. Det bedst passende abonnement for dit sprog er allerede valgt.">
 <!ENTITY subscriptionSelector.label "Vælg et filterabonnement fra listen:">
 <!ENTITY viewList.label "Vis filtre">
 <!ENTITY visitHomepage.label "Besøg hjemmeside">
 <!ENTITY addSubscription.label "Tilføj abonnement">
-<!ENTITY saveSubscription.label "Gem abonnement">
-<!ENTITY other.label "Tilføj endnu et abonnement">
-<!ENTITY other.accesskey "f">
-<!ENTITY list.download.failed "Adblock Plus kunne ikke hente listen over abonnementer.">
+<!ENTITY list.download.failed "Adblock Plus kunne ikke hente abonnementslisten.">
 <!ENTITY list.download.retry "Prøv igen">
 <!ENTITY list.download.website "Se hjemmeside">
-<!ENTITY fromWeb.description "Bekræft at du ønsker at tilføje dette abonnement. Du kan ændre titel eller placering på abonnementet før det tilføjes.">
-<!ENTITY edit.description "Du kan ændre abonnementstitel eller placering efter behov.">
-<!ENTITY external.description "Dette er et eksternt filterabonnement; det opdateres af tilføjelsen der har oprettet abonnementet.">
+<!ENTITY fromWeb.description "Bekræft tilføjelsen af dette abonnement. Du kan ændre titel eller placering på abonnementet før det tilføjes.">
 <!ENTITY title.label "Abonnementstitel:">
 <!ENTITY title.accesskey "T">
-<!ENTITY location.label "Filterliste placering:">
+<!ENTITY location.label "Filterlistens placering:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Opdater automatisk">
-<!ENTITY autodownload.accesskey "P">
 <!ENTITY supplementMessage "Dette filterabonnement er beregnet til brug sammen med filterabonnementet "?1?" som du endnu ikke bruger.">
 <!ENTITY addMain.label "Tilføj også filterabonnement "?1?".">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/de/filters.dtd b/chrome/adblockplus.jar!/locale/de/filters.dtd
new file mode 100644
index 0000000..7d91001
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/de/filters.dtd
@@ -0,0 +1,113 @@
+<!ENTITY dialog.title                         "Filtereinstellungen von Adblock Plus">
+
+<!ENTITY subscriptions.tab.label              "Filterabonnements">
+<!ENTITY filters.tab.label                    "Eigene Filter">
+
+<!ENTITY addSubscription.label                "Filterabonnement hinzufügen">
+<!ENTITY addSubscription.accesskey            "b">
+
+<!ENTITY addSubscriptionAdd.label             "Hinzufügen">
+<!ENTITY addSubscriptionCancel.label          "Abbrechen">
+<!ENTITY addSubscriptionOther.label           "Anderes Abonnement hinzufügen">
+
+<!ENTITY noSubscriptions.text                 "
+	Sie haben noch keine Filterabonnements hinzugefügt. Ohne Filter wird Adblock Plus
+	nichts blockieren können, bitte benutzen Sie die Taste
+	"Filterabonnement hinzufügen".
+">
+<!ENTITY subscription.homepage.label          "Webseite">
+<!ENTITY subscription.external.label          "Wird von einer anderen Erweiterung aktualisiert">
+<!ENTITY subscription.source.label            "Filterliste">
+<!ENTITY subscription.enabled.label           "Aktiv">
+<!ENTITY subscription.lastDownload.label      "Zuletzt aktualisiert:">
+<!ENTITY subscription.lastDownload.inProgress "Wird heruntergeladen...">
+<!ENTITY subscription.lastDownload.unknown    "Nie">
+<!ENTITY subscription.lastDownload.invalidURL "Fehler, ungültige Adresse">
+<!ENTITY subscription.lastDownload.connectionError "Fehler, Download fehlgeschlagen">
+<!ENTITY subscription.lastDownload.invalidData "Fehler, keine gültige Filterliste">
+<!ENTITY subscription.lastDownload.checksumMismatch "Fehler, Prüfsumme ist falsch, möglicherweise ein Übertragungsfehler">
+<!ENTITY subscription.lastDownload.success    "Erfolgreich">
+<!ENTITY subscription.minVersion.warning      "Diese Filterliste benötigt eine neuere Version von Adblock Plus, Sie sollten auf die neueste Version von Adblock Plus aktualisieren.">
+<!ENTITY subscription.disabledFilters.warning "Einige Filter in dieser Filterliste sind deaktiviert.">
+<!ENTITY subscription.disabledFilters.enable  "Deaktivierte Filter aktivieren">
+
+<!ENTITY subscription.actions.label           "Aktionen">
+<!ENTITY subscription.update.label            "Filter aktualisieren">
+<!ENTITY subscription.editTitle.label         "Umbenennen">
+<!ENTITY subscription.delete.label            "Löschen">
+<!ENTITY subscription.showHideFilters.label   "Filter anzeigen/verstecken">
+<!ENTITY subscription.moveUp.label            "Nach oben verschieben">
+<!ENTITY subscription.moveDown.label          "Nach unten verschieben">
+
+<!ENTITY acceptableAds.label                  "Nicht aufdringliche Werbung zulassen">
+<!ENTITY acceptableAds.accesskey              "d">
+<!ENTITY readMore.label                       "Mehr Information">
+
+<!ENTITY addGroup.label                       "Filtergruppe hinzufügen">
+<!ENTITY addGroup.accesskey                   "g">
+
+<!ENTITY noFilters.text                       "
+	Sie haben noch keine eigenen Filter.
+">
+
+<!ENTITY addFilter.label                      "Filter hinzufügen">
+<!ENTITY addFilter.accesskey                  "F">
+
+<!ENTITY filter.actions.label                 "Filteraktionen">
+<!ENTITY filter.edit.label                    "Bearbeiten">
+<!ENTITY filter.cut.label                     "Ausschneiden">
+<!ENTITY filter.copy.label                    "Kopieren">
+<!ENTITY filter.paste.label                   "Einfügen">
+<!ENTITY filter.delete.label                  "Löschen">
+<!ENTITY filter.selectAll.label               "Alle auswählen">
+<!ENTITY filter.resetHitCounts.label          "Trefferstatistiken zurücksetzen">
+<!ENTITY filter.moveUp.label                  "Nach oben verschieben">
+<!ENTITY filter.moveDown.label                "Nach unten verschieben">
+<!ENTITY viewMenu.label                       "Ansicht">
+
+<!ENTITY filter.column                        "Filterregel">
+<!ENTITY filter.accesskey                     "F">
+<!ENTITY slow.column                          "Langsam">
+<!ENTITY slow.accesskey                       "L">
+<!ENTITY enabled.column                       "Aktiv">
+<!ENTITY enabled.accesskey                    "k">
+<!ENTITY hitcount.column                      "Treffer">
+<!ENTITY hitcount.accesskey                   "r">
+<!ENTITY lasthit.column                       "Letzter Treffer">
+<!ENTITY lasthit.accesskey                    "z">
+
+<!ENTITY sort.label                           "Sortieren">
+<!ENTITY sort.accesskey                       "S">
+<!ENTITY sort.none.label                      "Unsortiert">
+<!ENTITY sort.none.accesskey                  "U">
+<!ENTITY sort.ascending.label                 "Aufsteigend">
+<!ENTITY sort.ascending.accesskey             "A">
+<!ENTITY sort.descending.label                "Absteigend">
+<!ENTITY sort.descending.accesskey            "b">
+
+<!ENTITY noGroupSelected.text                 "Sie müssen eine Filtergruppe auswählen, um deren Inhalt anzuzeigen.">
+<!ENTITY noFiltersInGroup.text                "Die gewählte Filtergruppe ist leer.">
+
+<!ENTITY filters.remove.warning               "Wollen Sie wirklich alle ausgewählten Filter löschen?">
+
+<!ENTITY backupButton.label                   "Sichern und Wiederherstellen">
+<!ENTITY backupButton.accesskey               "h">
+
+<!ENTITY backup.label                         "Neue Sicherung erstellen">
+<!-- Note: the placeholder ?1? will be replaced by date/time of the automatic backup -->
+<!ENTITY restore.default.label                "Sicherung von ?1? wiederherstellen">
+<!ENTITY restore.own.label                    "Eigene Sicherung wiederherstellen">
+
+<!ENTITY backup.complete.title                "Alle Filter und alle Filterabonnements">
+<!ENTITY backup.custom.title                  "Nur eigene Filter">
+
+<!ENTITY backup.error                         "Beim Schreiben der Filter in die Datei ist ein Problem aufgetreten. Bitte stellen Sie sicher, dass die Datei nicht schreibgeschützt ist oder von einem anderen Programm verwendet wird.">
+<!ENTITY restore.error                        "Die Daten dieser Datei sind fehlerhaft, vielleicht ist es keine Sicherungsdatei von Adblock Plus?">
+<!ENTITY restore.complete.warning             "Alle Ihre Filtereinstellungen werden durch den Inhalt dieser Datei ersetzt. Wollen Sie fortfahren?">
+<!ENTITY restore.custom.warning               "Alle Ihre eigenen Filter werden durch den Inhalt dieser Datei ersetzt. Wollen Sie fortfahren?">
+<!ENTITY restore.minVersion.warning           "Warnung: diese Datei wurde mit einer neueren Version von Adblock Plus erstellt. Sie sollten Adblock Plus auf die neueste Version aktualisieren, bevor Sie Daten von dieser Sicherung wiederherstellen.">
+
+<!ENTITY find.label                           "Filter durchsuchen">
+<!ENTITY find.accesskey                       "s">
+
+<!ENTITY close.label                          "Schließen">
diff --git a/chrome/adblockplus.jar!/locale/de/firstRun.dtd b/chrome/adblockplus.jar!/locale/de/firstRun.dtd
new file mode 100644
index 0000000..6afc3dd
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/de/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Installation von Adblock Plus abgeschlossen">
+
+<!ENTITY confirmation               "
+	Danke für die Installation von Adblock Plus. Werbung wird von nun an blockiert.
+	Viel Spaß!">
+
+<!ENTITY advancedSection            "Erweiterte Optionen">
+
+<!ENTITY listSelection1             "
+	Das folgende Filterabonnement wurde konfiguriert, um Werbung zu blockieren:
+">
+
+<!ENTITY noList                     "Kein Filterabonnement">
+<!ENTITY visitHomepage.label        "Webseite öffnen">
+
+<!ENTITY acceptableAds              "
+	Adblock Plus wurde außerdem konfiguriert, um nicht aufdringliche Werbung zuzulassen.
+">
+
+<!ENTITY readMore.label             "Mehr Information">
+
+<!ENTITY listSelection2             "
+	Sie können diese Auswahl jederzeit in den [link]Filtereinstellungen[/link] ändern.
+">
diff --git a/chrome/adblockplus.jar!/locale/de/global.properties b/chrome/adblockplus.jar!/locale/de/global.properties
index f4817e9..fd03ee2 100644
--- a/chrome/adblockplus.jar!/locale/de/global.properties
+++ b/chrome/adblockplus.jar!/locale/de/global.properties
@@ -15,48 +15,19 @@ blocked_count_addendum=(außerdem Ausnahmen: ?1?, versteckte Elemente: ?2?)
 no_blocking_suggestions=Auf der geöffneten Seite gibt es keine Elemente, die blockiert werden könnten
 whitelisted_page=Adblock Plus wurde für die geöffnete Seite deaktiviert
 
-whitelist_description=Meine Ausnahmeregeln
-filterlist_description=Meine Blockierregeln
-invalid_description=Meine fehlerhaften Regeln
-elemhide_description=Meine Regeln zum Verstecken von Elementen
-subscription_description=Filterabonnement:
-subscription_wrong_version=Einige Filter in diesem Abonnement benötigen Adblock Plus ?1?, um korrekt zu funktionieren!
-subscription_source=Quelle:
-subscription_status=Status:
-subscription_status_autodownload=Automatische Aktualisierung
-subscription_status_manualdownload=Manuelle Aktualisierung
-subscription_status_externaldownload=Externe Aktualisierung (andere Erweiterung)
-subscription_status_lastdownload=Zuletzt aktualisiert:
-subscription_status_lastdownload_inprogress=jetzt...
-subscription_status_lastdownload_unknown=nie
+newGroup_title=Neue Filtergruppe
+whitelistGroup_title=Ausnahmeregeln
+blockingGroup_title=Blockierregeln
+elemhideGroup_title=Regeln zum Verstecken von Elementen
+
 remove_subscription_warning=Sind Sie sicher, dass Sie dieses Abonnement entfernen möchten?
-import_filters_wrong_version=Warnung: einige Filter in dieser Liste benötigen Adblock Plus ?1?, um korrekt zu funktionieren. Vielleicht sollten Sie die letzte Version von Adblock Plus installieren, bevor Sie diese Liste importieren.
-import_filters_warning=Sollen die importierten Filter die vorhandenen ersetzen oder sollen sie am Ende hinzugefügt werden?
-import_filters_title=Filter importieren
-export_filters_title=Filter exportieren
-invalid_filters_file=Die Datei ist keine gültige Adblock Plus Filterdatei.
-filters_write_error=Beim Schreiben der Filter in die Datei ist ein Fehler aufgetreten. Eventuell ist die Datei schreibgeschützt oder wird von einem anderen Programm verwendet.
-clearall_warning=Sind Sie sicher, dass Sie alle Filter aus der Liste entfernen möchten?
-resethitcounts_warning=Sind Sie sicher, dass Sie die Statistik für alle Filter auf Null zurücksetzen möchten? Diese Änderung kann nicht rückgängig gemacht werden!
-resethitcounts_selected_warning=Sind Sie sicher, dass Sie die Statistik für die ausgewählten Filter auf Null zurücksetzen möchten? Diese Änderung kann nicht rückgängig gemacht werden!
+clearStats_warning=Alle Trefferstatistiken werden zurückgesetzt und Filtertreffer werden in Zukunft nicht mehr gezählt. Wollen Sie fortfahren?
 
 filter_regexp_tooltip=Dieser Filter ist entweder ein regulärer Ausdruck oder zu kurz zum Optimieren. Zu viele solche Filter könnten Ihren Browser verlangsamen.
 filter_elemhide_duplicate_id=Nur ein ID-Wert des zu versteckenden Elements kann angegeben werden
 filter_elemhide_nocriteria=Keine Kriterien angegeben, um das zu versteckende Element zu erkennen
 
-subscription_notAdded_warning=Sie haben kein Filterabonnement hinzugefügt. Ohne ein Filterabonnement werden Sie die Filter für Adblock Plus manuell hinzufügen müssen.
-subscription_notAdded_warning_addendum=Wollen Sie ohne Filterabonnement fortfahren?
 subscription_invalid_location=Die eingegebene Adresse ist weder eine gültige Web-Adresse, noch ein gültiger Dateiname.
-synchronize_invalid_url=Fehler, ungültige Adresse
-synchronize_connection_error=Fehler, Download gescheitert
-synchronize_invalid_data=Fehler, keine gültige Filterliste
-synchronize_checksum_mismatch=Fehler, Prüfsumme ist falsch, möglicherweise ein Übertragungsfehler
-synchronize_ok=Erfolg
-
-overwrite=Überschreiben
-append=Hinzufügen
-
-new_filter_group_title=Neuer Filter
 
 type_label_other=Unbekannt
 type_label_script=Skript
@@ -66,11 +37,9 @@ type_label_object=Objekt
 type_label_subdocument=Frame
 type_label_document=Dokument
 type_label_elemhide=Versteckt
-type_label_xbl=XBL
-type_label_ping=Link-Rückmeldung
+type_label_popup=Pop-up-Fenster
 type_label_xmlhttprequest=XML-Anfrage
 type_label_object_subrequest=Objekt-Anfrage
-type_label_dtd=DTD
 type_label_media=Audio/Video
 type_label_font=Schriftart
 
@@ -79,4 +48,3 @@ fennec_status_disabled=Adblock Plus ist aktiv.
 fennec_status_enabled_site=Adblock Plus ist auf ?1? aktiv.
 fennec_status_disabled_site=Adblock Plus ist auf ?1? deaktiviert.
 
-sync_engine_title=Adblock Plus Filter
diff --git a/chrome/adblockplus.jar!/locale/de/overlay.dtd b/chrome/adblockplus.jar!/locale/de/overlay.dtd
index 1e9cb47..4d04a89 100644
--- a/chrome/adblockplus.jar!/locale/de/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/de/overlay.dtd
@@ -6,8 +6,6 @@
 <!ENTITY menuitem.accesskey     "A">
 <!ENTITY toolbarbutton.label    "Adblock Plus">
 
-<!ENTITY view.blockableItems.label  "Adblock Plus: Elemente der geöffneten Seite">
-
 <!ENTITY context.image.label    "Adblock Plus: Grafik blockieren">
 <!ENTITY context.object.label   "Adblock Plus: Objekt blockieren">
 <!ENTITY context.frame.label    "Adblock Plus: Frame blockieren">
@@ -18,8 +16,8 @@
 
 <!ENTITY sendReport.label       "Fehler auf dieser Seite melden">
 <!ENTITY sendReport.accesskey   "F">
-<!ENTITY settings.label         "Einstellungen">
-<!ENTITY settings.accesskey     "t">
+<!ENTITY filters.label          "Filtereinstellungen">
+<!ENTITY filters.accesskey      "s">
 <!ENTITY opensidebar.label      "Blockierbare Elemente öffnen">
 <!ENTITY opensidebar.accesskey  "B">
 <!ENTITY closesidebar.label     "Blockierbare Elemente schließen">
@@ -27,7 +25,24 @@
 <!ENTITY whitelist.site.label   "Deaktivieren: auf ?1?">
 <!ENTITY whitelist.page.label   "Deaktivieren: nur auf dieser Seite">
 <!ENTITY disable.label          "Überall deaktivieren">
-<!ENTITY recommend.label        "Uns auf Facebook empfehlen">
+<!ENTITY options.label          "Optionen">
+<!ENTITY options.accesskey      "O">
+<!ENTITY contribute.label       "Zu Adblock Plus beitragen">
+
+<!ENTITY showintoolbar.label        "In Symbolleiste anzeigen">
+<!ENTITY showintoolbar.accesskey    "t">
+<!ENTITY showinstatusbar.label      "In Statusleiste anzeigen">
+<!ENTITY showinstatusbar.accesskey  "S">
+<!ENTITY showinaddonbar.label       "In Add-on-Leiste anzeigen">
+<!ENTITY showinaddonbar.accesskey   "t">
+<!ENTITY objecttabs.label           "Tab zum Blockieren von Flash und Java anzeigen">
+<!ENTITY objecttabs.accesskey       "B">
+<!ENTITY hideplaceholders.label     "Platzhalter blockierter Elemente verstecken">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label            "Filtertreffer zählen">
+<!ENTITY counthits.accesskey        "z">
+<!ENTITY sync.label                 "Adblock Plus-Einstellungen synchonisieren">
+<!ENTITY sync.accesskey             "y">
 
 <!ENTITY objecttab.title        "Blockieren">
 <!ENTITY objecttab.tooltip      "Klicken Sie hier, um dieses Objekt mit Adblock Plus zu blockieren">
diff --git a/chrome/adblockplus.jar!/locale/de/settings.dtd b/chrome/adblockplus.jar!/locale/de/settings.dtd
deleted file mode 100644
index 80296ba..0000000
--- a/chrome/adblockplus.jar!/locale/de/settings.dtd
+++ /dev/null
@@ -1,104 +0,0 @@
-<!ENTITY dialog.title               "Adblock Plus - Einstellungen">
-
-<!ENTITY filters.label              "Filter">
-<!ENTITY filters.accesskey          "F">
-
-<!ENTITY add.label                  "Filter hinzufügen">
-<!ENTITY add.accesskey              "Z">
-<!ENTITY addsubscription.label      "Filterabonnement hinzufügen">
-<!ENTITY addsubscription.accesskey  "B">
-<!ENTITY synchsubscriptions.label       "Filter für alle Abonnements herunterladen">
-<!ENTITY synchsubscriptions.accesskey   "N">
-<!ENTITY import.label               "Filter importieren">
-<!ENTITY import.accesskey           "M">
-<!ENTITY export.label               "Benutzerfilter exportieren">
-<!ENTITY export.accesskey           "X">
-<!ENTITY clearall.label             "Alle Benutzerfilter entfernen">
-<!ENTITY clearall.accesskey         "L">
-<!ENTITY resethitcounts.label       "Trefferstatistik zurücksetzen">
-<!ENTITY resethitcounts.accesskey   "R">
-
-<!ENTITY edit.label                 "Bearbeiten">
-<!ENTITY edit.accesskey             "B">
-
-<!ENTITY cut.label                  "Ausschneiden">
-<!ENTITY cut.accesskey              "A">
-<!ENTITY copy.label                 "Kopieren">
-<!ENTITY copy.accesskey             "K">
-<!ENTITY paste.label                "Einfügen">
-<!ENTITY paste.accesskey            "E">
-<!ENTITY remove.label               "Löschen">
-<!ENTITY remove.accesskey           "L">
-<!ENTITY menu.find.label            "Filter durchsuchen">
-<!ENTITY menu.find.accesskey        "S">
-<!ENTITY menu.findagain.label       "Weitersuchen">
-<!ENTITY menu.findagain.accesskey   "N">
-
-<!ENTITY view.label                 "Ansicht">
-<!ENTITY view.accesskey             "s">
-
-<!ENTITY sort.label                 "Sortieren">
-<!ENTITY sort.accesskey             "S">
-<!ENTITY sort.none.label            "Unsortiert">
-<!ENTITY sort.none.accesskey        "U">
-<!ENTITY sort.ascending.label       "Aufsteigend">
-<!ENTITY sort.ascending.accesskey   "A">
-<!ENTITY sort.descending.label      "Absteigend">
-<!ENTITY sort.descending.accesskey  "b">
-
-<!ENTITY options.label              "Optionen">
-<!ENTITY options.accesskey          "O">
-
-<!ENTITY enable.label               "Adblock Plus aktivieren">
-<!ENTITY enable.accesskey           "N">
-<!ENTITY showintoolbar.label        "In Symbolleiste anzeigen">
-<!ENTITY showintoolbar.accesskey    "M">
-<!ENTITY showinstatusbar.label      "In Statusleiste anzeigen">
-<!ENTITY showinstatusbar.accesskey  "S">
-<!ENTITY objecttabs.label           "Tab zum Blockieren von Flash und Java anzeigen">
-<!ENTITY objecttabs.accesskey       "B">
-<!ENTITY collapse.label             "Platz von blockierten Elementen freigeben">
-<!ENTITY collapse.accesskey         "F">
-<!ENTITY sync.label                 "Adblock Plus-Einstellungen synchonisieren">
-<!ENTITY sync.accesskey             "y">
-
-<!ENTITY help.label                 "Hilfe">
-<!ENTITY help.accesskey             "H">
-
-<!ENTITY gettingStarted.label       "Erste Schritte">
-<!ENTITY gettingStarted.accesskey   "S">
-<!ENTITY faq.label                  "Häufig gestellte Fragen">
-<!ENTITY faq.accesskey              "F">
-<!ENTITY filterdoc.label            "Filter für Adblock Plus erstellen">
-<!ENTITY filterdoc.accesskey        "L">
-<!ENTITY about.label                "Über Adblock Plus">
-<!ENTITY about.accesskey            "B">
-
-<!ENTITY description                "Die Filter in dieser Liste bestimmen, welche Adressen von Adblock Plus blockiert werden:">
-
-<!ENTITY filter.column              "Filterregel">
-<!ENTITY filter.accesskey           "F">
-<!ENTITY slow.column                "Langsam">
-<!ENTITY slow.accesskey             "L">
-<!ENTITY enabled.column             "Aktiv">
-<!ENTITY enabled.accesskey          "k">
-<!ENTITY hitcount.column            "Treffer">
-<!ENTITY hitcount.accesskey         "r">
-<!ENTITY lasthit.column             "Letzter Treffer">
-<!ENTITY lasthit.accesskey          "z">
-
-<!ENTITY context.edit.label         "Filter bearbeiten">
-<!ENTITY context.resethitcount.label      "Trefferstatistik für Filter zurücksetzen">
-<!ENTITY context.synchsubscription.label  "Filter jetzt neu herunterladen">
-<!ENTITY context.editsubscription.label   "Abonnement bearbeiten">
-<!ENTITY context.moveup.label       "Filter nach oben verschieben">
-<!ENTITY context.movedown.label     "Filter nach unten verschieben">
-<!ENTITY context.movegroupup.label        "Gruppe nach oben verschieben">
-<!ENTITY context.movegroupdown.label      "Gruppe nach unten verschieben">
-<!ENTITY context.enable.label       "Aktivieren">
-<!ENTITY context.disable.label      "Deaktivieren">
-
-<!ENTITY apply.label                "Anwenden">
-<!ENTITY apply.accesskey            "W">
-
-<!ENTITY fennec.subscription.label  "Filterabonnement">
diff --git a/chrome/adblockplus.jar!/locale/de/sidebar.dtd b/chrome/adblockplus.jar!/locale/de/sidebar.dtd
index f344d42..6218284 100644
--- a/chrome/adblockplus.jar!/locale/de/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/de/sidebar.dtd
@@ -11,6 +11,7 @@
 <!ENTITY filter.label             "Filter">
 <!ENTITY state.label              "Status">
 <!ENTITY size.label               "Größe">
+<!ENTITY filterSource.label       "Filterquelle">
 <!ENTITY docDomain.label          "Ursprungsdomain">
 <!ENTITY docDomain.thirdParty     "(Anfrage zu einer Drittseite)">
 <!ENTITY docDomain.firstParty     "(Anfrage zu derselben Domain)">
diff --git a/chrome/adblockplus.jar!/locale/de/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/de/subscriptionSelection.dtd
index 979e629..6e6dff0 100644
--- a/chrome/adblockplus.jar!/locale/de/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/de/subscriptionSelection.dtd
@@ -1,38 +1,18 @@
 <!ENTITY dialog.title               "Filterabonnement für Adblock Plus hinzufügen">
-<!ENTITY dialog.title.edit          "Filterabonnement bearbeiten">
-
-<!ENTITY description.newInstall     "
-	Adblock Plus funktioniert am besten, wenn ein Filterabonnement hinzugefügt wird.
-	Filterabonnements werden von anderen Adblock Plus Nutzern kostenfrei zur
-	Verfügung gestellt. Das Filterabonnement, das zu Ihrer Sprache am besten passt,
-	ist bereits voreingestellt.
-">
-
 <!ENTITY subscriptionSelector.label "Bitte wählen Sie ein Filterabonnement aus der Liste aus:">
 
 <!ENTITY viewList.label             "Filter ansehen">
 <!ENTITY visitHomepage.label        "Webseite der Filterliste besuchen">
 
 <!ENTITY addSubscription.label      "Filterabonnement hinzufügen">
-<!ENTITY saveSubscription.label     "Änderungen speichern">
-
-<!ENTITY other.label                "Anderes Abonnement hinzufügen">
-<!ENTITY other.accesskey            "d">
- 
 <!ENTITY list.download.failed       "Adblock Plus konnte die Liste der Filterabonnements nicht herunterladen.">
 <!ENTITY list.download.retry        "Nochmal versuchen">
 <!ENTITY list.download.website      "Zur Webseite wechseln">
 <!ENTITY fromWeb.description        "Bitte bestätigen Sie, dass Sie dieses Filterabonnement hinzufügen möchten. Die Bezeichnung und Adresse der Abonnements können vor dem Hinzufügen geändert werden.">
-<!ENTITY edit.description           "Bitte ändern Sie die Bezeichnung und Adresse der Abonnements wie erforderlich.">
-<!ENTITY external.description       "Das ist ein externes Filterabonnement, es wird von der Erweiterung aktualisiert, die es erstellt hat.">
-
 <!ENTITY title.label                "Bezeichnung des Abonnements:">
 <!ENTITY title.accesskey            "z">
 <!ENTITY location.label             "Adresse der Filterliste:">
 <!ENTITY location.accesskey         "r">
-<!ENTITY autodownload.label         "Automatisch aktualisieren">
-<!ENTITY autodownload.accesskey     "t">
-
 <!ENTITY supplementMessage          "Dieses Filterabonnement sollte in Verbindung mit dem Filterabonnement "?1?" verwendet werden.">
 <!ENTITY addMain.label              "Filterabonnement "?1?" auch hinzufügen">
 <!ENTITY addMain.accesskey          "h">
diff --git a/chrome/adblockplus.jar!/locale/el/about.dtd b/chrome/adblockplus.jar!/locale/el/about.dtd
index ef73efa..c5c8b76 100644
--- a/chrome/adblockplus.jar!/locale/el/about.dtd
+++ b/chrome/adblockplus.jar!/locale/el/about.dtd
@@ -1,8 +1,6 @@
 <!ENTITY dialog.title "Σχετικά με το Adblock Plus">
 <!ENTITY version.title "Έκδοση">
-<!ENTITY description "Με το Adblock Plus σας δίνεται η δυνατότητα να αποφασίζετε εσείς τι θέλετε να βλέπετε και τι όχι στις ιστοσελίδες.
-	Δεν χρειάζεται να βλέπετε διαφημίσεις πλέον αν δεν το θέλετε!
-	Απλά ενημερώστε το Adblock Plus!">
+<!ENTITY description "Με το Adblock Plus σας δίνεται η δυνατότητα να αποφασίζετε εσείς τι θέλετε να βλέπετε και τι όχι στις ιστοσελίδες.nnn	Δεν χρειάζεται να βλέπετε διαφημίσεις πλέον αν δεν το θέλετε!nn	Απλά ενημερώστε το Adblock Plus!">
 <!ENTITY homepage.label "Ιστοσελίδα:">
 <!ENTITY author.label "Δημιουργός:">
 <!ENTITY contributors.label "Συντελεστές:">
diff --git a/chrome/adblockplus.jar!/locale/el/filters.dtd b/chrome/adblockplus.jar!/locale/el/filters.dtd
new file mode 100644
index 0000000..97732cb
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/el/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Προτιμήσεις φίλτρων του Adblock Plus">
+<!ENTITY subscriptions.tab.label "Συνδρομές φίλτρων">
+<!ENTITY filters.tab.label "Προσαρμοσμένα φίλτρα">
+<!ENTITY addSubscription.label "Προσθήκη συνδρομής">
+<!ENTITY addSubscription.accesskey "σ">
+<!ENTITY addSubscriptionAdd.label "Προσθήκη">
+<!ENTITY addSubscriptionCancel.label "Ακύρωση">
+<!ENTITY addSubscriptionOther.label "Προσθήκη άλλης συνδρομής">
+<!ENTITY noSubscriptions.text "Δεν έχετε προσθέσει κάποια συνδρομή φίλτρων. Το Adblock Plus δεν μπορεί να μπλοκάρει κάτι χωρίς φίλτρα· παρακαλώ χρησιμοποιήστε την "Προσθήκη συνδρομής" για να ορίσετε μια.">
+<!ENTITY subscription.homepage.label "Ιστοσελίδα">
+<!ENTITY subscription.external.label "Ενημερώθηκε από άλλο πρόσθετο">
+<!ENTITY subscription.source.label "Λίστα φίλτρων">
+<!ENTITY subscription.enabled.label "Ενεργοποιημένη">
+<!ENTITY subscription.lastDownload.label "Τελευταία ενημέρωση:">
+<!ENTITY subscription.lastDownload.inProgress "Σε εξέλιξη...">
+<!ENTITY subscription.lastDownload.unknown "Μ/Δ">
+<!ENTITY subscription.lastDownload.invalidURL "Απέτυχε, μη έγκυρη διεύθυνση">
+<!ENTITY subscription.lastDownload.connectionError "Απέτυχε, σφάλμα κατά τη λήψη">
+<!ENTITY subscription.lastDownload.invalidData "Απέτυχε, μη έγκυρη λίστα φίλτρων">
+<!ENTITY subscription.lastDownload.checksumMismatch "Απέτυχε, απόκλιση στον έλεγχο checksum">
+<!ENTITY subscription.lastDownload.success "Επιτυχής">
+<!ENTITY subscription.minVersion.warning "Αυτή η συνδρομή φίλτρων απαιτεί μια νεότερη έκδοση του Adblock Plus· θα πρέπει να αναβαθμίσετε το Adblock Plus στην τελευταία έκδοση.">
+<!ENTITY subscription.disabledFilters.warning "Κάποια φίλτρα σε αυτή την συνδρομή είναι απενεργοποιημένα.">
+<!ENTITY subscription.disabledFilters.enable "Ενεργοποίηση απενεργοποιημένων φίλτρων">
+<!ENTITY subscription.actions.label "Ενέργειες">
+<!ENTITY subscription.update.label "Ενημέρωση φίλτρων">
+<!ENTITY subscription.editTitle.label "Επεξεργασία τίτλου">
+<!ENTITY subscription.delete.label "Διαγραφή">
+<!ENTITY subscription.showHideFilters.label "Εμφάνιση/απόκρυψη φίλτρων">
+<!ENTITY subscription.moveUp.label "Μετακίνηση επάνω">
+<!ENTITY subscription.moveDown.label "Μετακίνηση κάτω">
+<!ENTITY acceptableAds.label "Να επιτρέπεται η μη παρεμβατική διαφήμιση">
+<!ENTITY acceptableAds.accesskey "ι">
+<!ENTITY readMore.label "Διαβάστε περισσότερα">
+<!ENTITY addGroup.label "Προσθήκη ομάδας φίλτρων">
+<!ENTITY addGroup.accesskey "ο">
+<!ENTITY noFilters.text "Δεν έχετε κάποιο προσαρμοσμένο φίλτρο ακόμα.">
+<!ENTITY addFilter.label "Προσθήκη φίλτρου">
+<!ENTITY addFilter.accesskey "φ">
+<!ENTITY filter.actions.label "Ενέργειες φίλτρων">
+<!ENTITY filter.edit.label "Επεξεργασία">
+<!ENTITY filter.cut.label "Αποκοπή">
+<!ENTITY filter.copy.label "Αντιγραφή">
+<!ENTITY filter.paste.label "Επικόλληση">
+<!ENTITY filter.delete.label "Διαγραφή">
+<!ENTITY filter.selectAll.label "Επιλογή όλων">
+<!ENTITY filter.resetHitCounts.label "Μηδενισμός στατιστικών επιτυχιών">
+<!ENTITY filter.moveUp.label "Μετακίνηση επάνω">
+<!ENTITY filter.moveDown.label "Μετακίνηση κάτω">
+<!ENTITY viewMenu.label "Προβολή">
+<!ENTITY filter.column "Κανόνας φίλτρου">
+<!ENTITY filter.accesskey "φ">
+<!ENTITY slow.column "Εμφάνιση φίλτρων">
+<!ENTITY slow.accesskey "Ε">
+<!ENTITY enabled.column "Ενεργοποιημένο">
+<!ENTITY enabled.accesskey "ν">
+<!ENTITY hitcount.column "Επιτυχίες">
+<!ENTITY hitcount.accesskey "χ">
+<!ENTITY lasthit.column "Τελευταία επιτυχία">
+<!ENTITY lasthit.accesskey "λ">
+<!ENTITY sort.label "Ταξινόμηση κατά">
+<!ENTITY sort.accesskey "Τ">
+<!ENTITY sort.none.label "Χωρίς ταξινόμηση">
+<!ENTITY sort.none.accesskey "ω">
+<!ENTITY sort.ascending.label "Αύξουσα">
+<!ENTITY sort.ascending.accesskey "Α">
+<!ENTITY sort.descending.label "Φθίνουσα">
+<!ENTITY sort.descending.accesskey "θ">
+<!ENTITY noGroupSelected.text "Πρέπει να επιλέξετε μια ομάδα φίλτρων ώστε να εμφανιστούν τα φίλτρα της.">
+<!ENTITY noFiltersInGroup.text "Η επιλεγμένη ομάδα είναι άδεια">
+<!ENTITY filters.remove.warning "Θέλετε να απομακρύνετε όλα τα επιλεγμένα φίλτρα;">
+<!ENTITY backupButton.label "Αντίγραφα ασφαλείας και επαναφορά">
+<!ENTITY backupButton.accesskey "Α">
+<!ENTITY backup.label "Δημιουργία νέου αντιγράφου ασφαλείας">
+<!ENTITY restore.default.label "Επαναφορά αντιγράφου ασφαλείας από την ?1?">
+<!ENTITY restore.own.label "Επαναφορά δικού σας αντιγράφου ασφαλείας">
+<!ENTITY backup.complete.title "Όλα τα φίλτρα και οι συνδρομές">
+<!ENTITY backup.custom.title "Μόνο τα προσαρμοσμένα φίλτρα">
+<!ENTITY backup.error "Υπήρξε κάποιο πρόβλημα στην εγγραφή των φίλτρων στο αρχείο. Σιγουρευτείτε ότι το αρχείο δεν προστατεύεται από εγγραφή ή ότι δεν χρησιμοποιείται από κάποια άλλη εφαρμογή.">
+<!ENTITY restore.error "Τα δεδομένα του αρχείου δεν μπορούν να επεξεργαστούν, μήπως αυτός δεν είναι αντίγραφο ασφαλείας του Adblock Plus;">
+<!ENTITY restore.complete.warning "Όλες οι προτιμήσεις των φίλτρων σας θα αντικατασταθούν από τα περιεχόμενα του επιλεγμένου αρχείου. θέλετε να συνεχίσετε;">
+<!ENTITY restore.custom.warning "Όλα τα προσαρμοσμένα φίλτρα σας θα αντικατασταθούν από τα περιεχόμενα του επιλεγμένου αρχείου. θέλετε να συνεχίσετε;">
+<!ENTITY restore.minVersion.warning "Προειδοποίηση: το αρχείο έχει δημιουργηθεί με μια νεότερη έκδοση του Adblock Plus. Θα πρέπει να αναβαθμίσετε το Adblock Plus στην τελευταία του έκδοση πριν ανακτήσετε από αυτό το αρχείο.">
+<!ENTITY find.label "Εύρεση">
+<!ENTITY find.accesskey "ρ">
+<!ENTITY close.label "Κλείσιμο">
diff --git a/chrome/adblockplus.jar!/locale/el/firstRun.dtd b/chrome/adblockplus.jar!/locale/el/firstRun.dtd
new file mode 100644
index 0000000..6a18f27
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/el/firstRun.dtd
@@ -0,0 +1,16 @@
+<!ENTITY dialog.title "Η εγκατάσταση του Adblock Plus ολοκληρώθηκε">
+<!ENTITY confirmation "
+ Ευχαριστούμε που εγκαταστήσατε το Adblock Plus. Οι διαφημίσεις θα φιλτράρονται από εδώ και στο εξής.
+ Απολαύστε το!">
+<!ENTITY advancedSection "Προχωρημένες επιλογές">
+<!ENTITY listSelection1 "
+ Η παρακάτω λίστα φίλτρων έχει ρυθμιστεί να φιλτράρει διαφημήσεις:
+">
+<!ENTITY noList "Καμιά λίστα φίλτρων">
+<!ENTITY visitHomepage.label "Επισκεφτείτε την ιστοσελίδα της λίστας">
+<!ENTITY acceptableAds "
+ Το Adblock Plus έχεις επίσης ρυθμιστεί να επιτρέπει μη παρεμβατικές διαφημίσεις.">
+<!ENTITY readMore.label "Διαβάστε περισσότερα σχετικά με αυτό">
+<!ENTITY listSelection2 "
+ Μπορείτε ν' αλλάξετε αυτή την επιλογή στις [link]Προτιμήσεις φίλτρων[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/el/global.properties b/chrome/adblockplus.jar!/locale/el/global.properties
index a649201..430160b 100644
--- a/chrome/adblockplus.jar!/locale/el/global.properties
+++ b/chrome/adblockplus.jar!/locale/el/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? από τα ?2?
 blocked_count_addendum=(λευκή λίστα: ?1?, κρυφά: ?2?)
 no_blocking_suggestions=Δεν υπάρχουν αντικείμενα προς φραγή σε αυτή τη σελίδα
 whitelisted_page=Το Adblock Plus απενεργοποιήθηκε για την τρέχουσα σελίδα
-whitelist_description=Εξαιρέσεις
-filterlist_description=Φίλτρα διαφημίσεων
-invalid_description=Μη έγκυρα φίλτρα
-elemhide_description=Κανόνες απόκρυψης στοιχείων
-subscription_description=Συνδρομή:
-subscription_wrong_version=Μερικά φίλτρα αυτής της συνδρομής απαιτούν το Adblock Plus ?1? για να λειτουργήσουν!
-subscription_source=Πηγή:
-subscription_status=Κατάσταση:
-subscription_status_autodownload=Ενημερώθηκε αυτόματα
-subscription_status_manualdownload=Ενημερώθηκε χειροκίνητα
-subscription_status_externaldownload=Ενημερώθηκε από άλλη επέκταση
-subscription_status_lastdownload=Τελευταία ενημέρωση:
-subscription_status_lastdownload_inprogress=Σε εξέλιξη...
-subscription_status_lastdownload_unknown=Μ/Δ
+newGroup_title=Νέα ομάδα φίλτρων
+whitelistGroup_title=Κανόνες εξαίρεσης
+blockingGroup_title=Κανόνες φραγής διαφημίσεων
+elemhideGroup_title=Κανόνες απόκρυψης στοιχείων
 remove_subscription_warning=Θέλετε να απομακρύνετε αυτή τη συνδρομή;
-import_filters_wrong_version=Προειδοποίηση: μερικά από τα φίλτρα σε αυτή τη λίστα απαιτούν το Adblock Plus ?1? για να λειτουργήσουν. Προτείνεται η εγκατάσταση της τελευταίας έκδοσης του Adblock Plus πριν την εισαγωγή της λίστας.
-import_filters_warning=Θέλετε να αντικαταστήσετε τα υπάρχοντα φίλτρα ή να τα προσθέσετε στο τέλος της λίστας;
-import_filters_title=Εισαγωγή φίλτρων
-export_filters_title=Εξαγωγή φίλτρων
-invalid_filters_file=Μη έγκυρο αρχείο λίστας φίλτρων του Adblock Plus.
-filters_write_error=Σφάλμα κατά την εγγραφή των φίλτρων στο αρχείο. Βεβαιωθείτε πως το αρχείο δεν είναι προστατευμένο ή χρησιμοποιείται από άλλη εφαρμογή.
-clearall_warning=Θέλετε πραγματικά να απομακρύνετε όλα τα φίλτρα από τη λίστα;
-resethitcounts_warning=Θέλετε πραγματικά να μηδενίσετε τα στατιστικά επιτυχιών για όλα τα φίλτρα; Η ενέργεια αυτή είναι μη αναστρέψιμη!
-resethitcounts_selected_warning=Θέλετε πραγματικά να μηδενίσετε τα στατιστικά επιτυχιών για τα επιλεγμένα φίλτρα; Η ενέργεια αυτή είναι μη αναστρέψιμη!
+clearStats_warning=Αυτό θα μηδενίσει τα στατιστικά και θα απενεργοποιήσει τις επιτυχίες των φίλτρων. Θέλετε να συνεχίσετε;
 filter_regexp_tooltip=Αυτό το φίλτρο είναι ένα regular expression ή είναι πολύ κοντό ώστε να βελτιστοποιηθεί. Πολλά από αυτά τα φίλτρα μπορεί να μειώσουν την ταχύτητα πλοήγησης.
 filter_elemhide_duplicate_id=Μόνο μια ταυτότητα του στοιχείου προς απόκρυψη πρέπει να καθοριστεί
 filter_elemhide_nocriteria=Δεν καθορίστηκαν κριτήρια ώστε να αναγνωριστεί το στοιχείο που θα φιλτραριστεί
-subscription_notAdded_warning=Δεν προσθέσατε μια συνδρομή φίλτρων. Αν δεν το κάνετε, θα πρέπει να προσθέσετε στο Adblock Plus κάποια φίλτρα χειροκίνητα.
-subscription_notAdded_warning_addendum=Θέλετε να συνεχίσετε;
 subscription_invalid_location=Η τοποθεσία της λίστας φίλτρων δεν είναι έγκυρη URL ούτε και όνομα αρχείου.
-synchronize_invalid_url=Απέτυχε, μη έγκυρη διεύθυνση
-synchronize_connection_error=Απέτυχε, σφάλμα κατά τη λήψη
-synchronize_invalid_data=Απέτυχε, μη έγκυρη λίστα φίλτρων
-synchronize_checksum_mismatch=Απέτυχε, απόκλιση στον έλεγχο checksum
-synchronize_ok=Επιτυχής
-overwrite=Αντικατάσταση
-append=Προσθήκη στο τέλος
-new_filter_group_title=Νέο φίλτρο
 type_label_other=άλλο
 type_label_script=σενάριο εντολών
 type_label_image=εικόνα
@@ -56,15 +28,12 @@ type_label_object=αντικείμενο
 type_label_subdocument=πλαίσιο
 type_label_document=κείμενο
 type_label_elemhide=κρυφό
-type_label_xbl=XBL binding
-type_label_ping=link ping
+type_label_popup=αναδυόμενο παράθυρο
 type_label_xmlhttprequest=XML request
 type_label_object_subrequest=object subrequest
-type_label_dtd=DTD
 type_label_media=ήχος/βίντεο
 type_label_font=γραμματοσειρά
 fennec_status_enabled=Το Adblock Plus είναι ενεργοποιημένο.
 fennec_status_disabled=Το Adblock Plus είναι απενεργοποιημένο.
 fennec_status_enabled_site=Το Adblock Plus είναι ενεργοποιημένο στο ?1?.
 fennec_status_disabled_site=Το Adblock Plus είναι απενεργοποιημένο στο ?1?.
-sync_engine_title=Δεδομένα του Adlock Plus
diff --git a/chrome/adblockplus.jar!/locale/el/overlay.dtd b/chrome/adblockplus.jar!/locale/el/overlay.dtd
index 91f6ac8..7b863d8 100644
--- a/chrome/adblockplus.jar!/locale/el/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/el/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Φιλτραρισμένα στοιχεία">
 <!ENTITY context.image.label "Adblock Plus: φραγή εικόνας">
 <!ENTITY context.object.label "Adblock Plus: φραγή αντικειμένου">
 <!ENTITY context.frame.label "Adblock Plus: φραγή πλαισίου">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Στοιχεία προς φιλτράρισμα στην τρέχουσα σελίδα">
 <!ENTITY sendReport.label "Αναφορά προβλήματος σε αυτή την σελίδα">
 <!ENTITY sendReport.accesskey "ρ">
-<!ENTITY settings.label "Προτιμήσεις">
-<!ENTITY settings.accesskey "Π">
+<!ENTITY filters.label "Προτιμήσεις φίλτρων">
+<!ENTITY filters.accesskey "φ">
 <!ENTITY opensidebar.label "Άνοιγμα των φιλτραρισμένων στοιχείων">
 <!ENTITY opensidebar.accesskey "α">
 <!ENTITY closesidebar.label "Κλείσιμο των φιλτραρισμένων στοιχείων">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Απενεργοποίηση στο ?1?">
 <!ENTITY whitelist.page.label "Απενεργοποίηση σε αυτή τη σελίδα μόνο">
 <!ENTITY disable.label "Απενεργοποίηση παντού">
-<!ENTITY recommend.label "Προτείνετε μας στο Facebook">
+<!ENTITY options.label "Επιλογές">
+<!ENTITY options.accesskey "λ">
+<!ENTITY contribute.label "Συνεισφέρετε στο Adblock Plus">
+<!ENTITY showintoolbar.label "Εμφάνιση στην εργαλειοθήκη">
+<!ENTITY showintoolbar.accesskey "θ">
+<!ENTITY showinstatusbar.label "Εμφάνιση στην γραμμή κατάστασης">
+<!ENTITY showinstatusbar.accesskey "κ">
+<!ENTITY showinaddonbar.label "Εμφάνιση στην εργαλειοθήκη προσθέτου">
+<!ENTITY showinaddonbar.accesskey "θ">
+<!ENTITY objecttabs.label "Εμφάνιση ετικέτας σε αντικείμενα Flash και Java">
+<!ENTITY objecttabs.accesskey "α">
+<!ENTITY hideplaceholders.label "Απόκρυψη πλαισίων των φιλτραρισμένων στοιχείων">
+<!ENTITY hideplaceholders.accesskey "ι">
+<!ENTITY counthits.label "Καταμέτρηση επιτυχιών φίλτρων">
+<!ENTITY counthits.accesskey "τ">
+<!ENTITY sync.label "Συγχρονισμός των ρυθμίσεων του Adblock Plus">
+<!ENTITY sync.accesskey "χ">
 <!ENTITY objecttab.title "Φραγή">
 <!ENTITY objecttab.tooltip "Κλικ εδώ για να φιλτράρετε αυτό το αντικείμενο με το Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/el/settings.dtd b/chrome/adblockplus.jar!/locale/el/settings.dtd
deleted file mode 100644
index f1fea2b..0000000
--- a/chrome/adblockplus.jar!/locale/el/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Προτιμήσεις του Adblock Plus">
-<!ENTITY filters.label "Φίλτρα">
-<!ENTITY filters.accesskey "Φ">
-<!ENTITY add.label "Προσθήκη φίλτρου">
-<!ENTITY add.accesskey "Π">
-<!ENTITY addsubscription.label "Προσθήκη συνδρομής">
-<!ENTITY addsubscription.accesskey "σ">
-<!ENTITY synchsubscriptions.label "Ενημέρωση όλων των συνδρομών">
-<!ENTITY synchsubscriptions.accesskey "Ε">
-<!ENTITY import.label "Εισαγωγή φίλτρων">
-<!ENTITY import.accesskey "ι">
-<!ENTITY export.label "Εξαγωγή φίλτρων">
-<!ENTITY export.accesskey "ξ">
-<!ENTITY clearall.label "Απομάκρυνση όλων των φίλτρων">
-<!ENTITY clearall.accesskey "Α">
-<!ENTITY resethitcounts.label "Μηδενισμός στατιστικών">
-<!ENTITY resethitcounts.accesskey "Μ">
-<!ENTITY edit.label "Επεξεργασία">
-<!ENTITY edit.accesskey "Ε">
-<!ENTITY cut.label "Αποκοπή">
-<!ENTITY cut.accesskey "κ">
-<!ENTITY copy.label "Αντιγραφή">
-<!ENTITY copy.accesskey "γ">
-<!ENTITY paste.label "Επικόλληση">
-<!ENTITY paste.accesskey "π">
-<!ENTITY remove.label "Διαγραφή">
-<!ENTITY remove.accesskey "Δ">
-<!ENTITY menu.find.label "Αναζήτηση">
-<!ENTITY menu.find.accesskey "ζ">
-<!ENTITY menu.findagain.label "Εύρεση ξανά">
-<!ENTITY menu.findagain.accesskey "ξ">
-<!ENTITY view.label "Προβολή">
-<!ENTITY view.accesskey "ο">
-<!ENTITY sort.label "Ταξινόμηση κατά">
-<!ENTITY sort.accesskey "Τ">
-<!ENTITY sort.none.label "Χωρίς ταξινόμηση">
-<!ENTITY sort.none.accesskey "ω">
-<!ENTITY sort.ascending.label "Αύξουσα">
-<!ENTITY sort.ascending.accesskey "Α">
-<!ENTITY sort.descending.label "Φθίνουσα">
-<!ENTITY sort.descending.accesskey "θ">
-<!ENTITY options.label "Επιλογές">
-<!ENTITY options.accesskey "λ">
-<!ENTITY enable.label "Ενεργοποίηση του Adblock Plus">
-<!ENTITY enable.accesskey "Ε">
-<!ENTITY showintoolbar.label "Εμφάνιση στην εργαλειοθήκη">
-<!ENTITY showintoolbar.accesskey "θ">
-<!ENTITY showinstatusbar.label "Εμφάνιση στην γραμμή κατάστασης">
-<!ENTITY showinstatusbar.accesskey "κ">
-<!ENTITY objecttabs.label "Εμφάνιση ετικέτας σε αντικείμενα Flash και Java">
-<!ENTITY objecttabs.accesskey "α">
-<!ENTITY collapse.label "Σύμπτυξη φιλτραρισμένων στοιχείων">
-<!ENTITY collapse.accesskey "Σ">
-<!ENTITY sync.label "Συγχρονισμός των ρυθμίσεων του Adblock Plus">
-<!ENTITY sync.accesskey "χ">
-<!ENTITY help.label "Βοήθεια">
-<!ENTITY help.accesskey "Β">
-<!ENTITY gettingStarted.label "Γρήγορη εκκίνηση">
-<!ENTITY gettingStarted.accesskey "γ">
-<!ENTITY faq.label "Συχνές ερωτήσεις">
-<!ENTITY faq.accesskey "ε">
-<!ENTITY filterdoc.label "Συγγραφή φίλτρων">
-<!ENTITY filterdoc.accesskey "Σ">
-<!ENTITY about.label "Περί">
-<!ENTITY about.accesskey "Π">
-<!ENTITY description "Τα παρακάτω φίλτρα καθορίζουν το ποιες διευθύνσεις θα φιλτράρονται και ποιες όχι:">
-<!ENTITY filter.column "Κανόνας φίλτρου">
-<!ENTITY filter.accesskey "φ">
-<!ENTITY slow.column "Εμφάνιση φίλτρων">
-<!ENTITY slow.accesskey "Ε">
-<!ENTITY enabled.column "Ενεργοποιημένο">
-<!ENTITY enabled.accesskey "ν">
-<!ENTITY hitcount.column "Επιτυχίες">
-<!ENTITY hitcount.accesskey "χ">
-<!ENTITY lasthit.column "Τελευταία επιτυχία">
-<!ENTITY lasthit.accesskey "λ">
-<!ENTITY context.edit.label "Επεξεργασία φίλτρου">
-<!ENTITY context.resethitcount.label "Μηδενισμός στατιστικών επιτυχιών για το φίλτρο">
-<!ENTITY context.synchsubscription.label "Ενημέρωση συνδρομής τώρα">
-<!ENTITY context.editsubscription.label "Επεξεργασία συνδρομής">
-<!ENTITY context.moveup.label "Μετακίνηση επάνω">
-<!ENTITY context.movedown.label "Μετακίνηση κάτω">
-<!ENTITY context.movegroupup.label "Μετακίνηση ομάδας επάνω">
-<!ENTITY context.movegroupdown.label "Μετακίνηση ομάδας κάτω">
-<!ENTITY context.enable.label "Ενεργοποίηση">
-<!ENTITY context.disable.label "Απενεργοποίηση">
-<!ENTITY apply.label "Εφαρμογή">
-<!ENTITY apply.accesskey "ρ">
-<!ENTITY fennec.subscription.label "Συνδρομή φίλτρων">
diff --git a/chrome/adblockplus.jar!/locale/el/sidebar.dtd b/chrome/adblockplus.jar!/locale/el/sidebar.dtd
index d4eb6be..1ed6da9 100644
--- a/chrome/adblockplus.jar!/locale/el/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/el/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Φίλτρο">
 <!ENTITY state.label "Κατάσταση">
 <!ENTITY size.label "Μέγεθος">
+<!ENTITY filterSource.label "Πηγή φίλτρου">
 <!ENTITY docDomain.label "Πηγή εγγράφου">
 <!ENTITY docDomain.thirdParty "(τρίτων)">
 <!ENTITY docDomain.firstParty "(πρωτεύον)">
diff --git a/chrome/adblockplus.jar!/locale/el/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/el/subscriptionSelection.dtd
index 12045e2..1c1ee7e 100644
--- a/chrome/adblockplus.jar!/locale/el/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/el/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Συνδρομές φίλτρων του Adblock Plus">
-<!ENTITY dialog.title.edit "Επεξεργασία συνδρομής">
-<!ENTITY description.newInstall "Το Adblock Plus θα είναι πιο αποτελεσματικό αν γίνετε συνδρομητής σε μια λίστα φίλτρων. Οι λίστες φίλτρων παρέχονται από χρήστες του Adblock Plus χωρίς κόστος. Η καταλληλότερη συνδρομή για την γλώσσα σας έχει ήδη επιλεγεί.">
 <!ENTITY subscriptionSelector.label "Παρακαλώ επιλέξτε μια συνδρομή σε φίλτρα από την λίστα:">
 <!ENTITY viewList.label "Προβολή φίλτρων">
 <!ENTITY visitHomepage.label "Ιστοσελίδα της συνδρομής">
 <!ENTITY addSubscription.label "Προσθήκη συνδρομής">
-<!ENTITY saveSubscription.label "Αποθήκευση συνδρομής">
-<!ENTITY other.label "Προσθήκη άλλης συνδρομής">
-<!ENTITY other.accesskey "Π">
 <!ENTITY list.download.failed "Το Adblock Plus απέτυχε να λάβει την λίστα με τις συνδρομές.">
 <!ENTITY list.download.retry "Προσπαθήστε ξανά">
 <!ENTITY list.download.website "Προβολή της ιστοσελίδας">
 <!ENTITY fromWeb.description "Παρακαλώ επιβεβαιώστε ότι θέλετε να προσθέσετε αυτή την λίστα φίλτρων. Μπορείτε να τροποποιήσετε τον τίτλο ή την τοποθεσία πριν την προσθήκη.">
-<!ENTITY edit.description "Μπορείτε ν' αλλάξετε τον τίτλο της συνδρομής ή την τοποθεσία όπως σας βολεύει.">
-<!ENTITY external.description "Αυτή η λίστα φίλτρων προέρχεται από τρίτους· θα ενημερωθεί από το πρόσθετο που την δημιούργησε.">
 <!ENTITY title.label "Τίτλος συνδρομής:">
 <!ENTITY title.accesskey "σ">
 <!ENTITY location.label "Τοποθεσία λίστας φίλτρων:">
 <!ENTITY location.accesskey "Τ">
-<!ENTITY autodownload.label "Αυτόματη ενημέρωση">
-<!ENTITY autodownload.accesskey "Α">
 <!ENTITY supplementMessage "Αυτή η συνδρομή φίλτρων μπορεί να χρησιμοποιηθεί μαζί με την συνδρομή "?1?" την οποία δεν χρησιμοποιείτε.">
 <!ENTITY addMain.label "Προσθήκη και της συνδρομής φίλτρων "?1?"">
 <!ENTITY addMain.accesskey "θ">
diff --git a/chrome/adblockplus.jar!/locale/en-GB/filters.dtd b/chrome/adblockplus.jar!/locale/en-GB/filters.dtd
new file mode 100644
index 0000000..6fc1f31
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/en-GB/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY addSubscription.label "Add filter subscription">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY addSubscriptionOther.label "Add a different subscription">
+<!ENTITY noSubscriptions.text "
+	You haven't added any filter subscriptions yet. Adblock Plus won't block
+	anything without filters, please use "Add filter subscription" to
+	add some.
+">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY subscription.lastDownload.label "Last download:">
+<!ENTITY subscription.lastDownload.inProgress "Downloading...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Failed: not a valid address">
+<!ENTITY subscription.lastDownload.connectionError "Failed: download failure">
+<!ENTITY subscription.lastDownload.invalidData "Failed: not a valid filters list">
+<!ENTITY subscription.lastDownload.checksumMismatch "Failed: checksum mismatch">
+<!ENTITY subscription.lastDownload.success "Success">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version; you should update to the latest Adblock Plus version.">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Read more">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+	You don't have any custom filters yet.
+">
+<!ENTITY addFilter.label "Add filter">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY filter.cut.label "Cut">
+<!ENTITY filter.copy.label "Copy">
+<!ENTITY filter.paste.label "Paste">
+<!ENTITY filter.delete.label "Delete">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY viewMenu.label "View">
+<!ENTITY filter.column "Filter rule">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Slow filters">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "Enabled">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "Hits">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Last hit">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Sort by">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Unsorted">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "A > Z sort order">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A sort order">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY find.label "Find">
+<!ENTITY find.accesskey "n">
+<!ENTITY close.label "Close">
diff --git a/chrome/adblockplus.jar!/locale/en-GB/firstRun.dtd b/chrome/adblockplus.jar!/locale/en-GB/firstRun.dtd
new file mode 100644
index 0000000..6149d7f
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/en-GB/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus installation complete">
+<!ENTITY confirmation "
+	Thank you for installing Adblock Plus. Ads will be blocked from now on.
+	Enjoy!">
+<!ENTITY advancedSection "Advanced options">
+<!ENTITY listSelection1 "
+	The following filter list has been configured to block advertising:
+">
+<!ENTITY noList "No filter list">
+<!ENTITY visitHomepage.label "Visit list home page">
+<!ENTITY acceptableAds "
+	Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+<!ENTITY readMore.label "Read more about this">
+<!ENTITY listSelection2 "
+	You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/en-GB/global.properties b/chrome/adblockplus.jar!/locale/en-GB/global.properties
index 829699b..cd680a5 100644
--- a/chrome/adblockplus.jar!/locale/en-GB/global.properties
+++ b/chrome/adblockplus.jar!/locale/en-GB/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? out of ?2?
 blocked_count_addendum=(also whitelisted: ?1?, hidden: ?2?)
 no_blocking_suggestions=No blockable items on the current page
 whitelisted_page=Adblock Plus has been disabled for the current page
-whitelist_description=My Exception Rules
-filterlist_description=My Ad Blocking Rules
-invalid_description=My Invalid Rules
-elemhide_description=My Element Hiding Rules
-subscription_description=Filter subscription:
-subscription_wrong_version=Some filters in this subscription require Adblock Plus ?1? to work properly.
-subscription_source=Source:
-subscription_status=Status:
-subscription_status_autodownload=Updated automatically
-subscription_status_manualdownload=Updated manually
-subscription_status_externaldownload=Updated externally (another extension)
-subscription_status_lastdownload=Last download:
-subscription_status_lastdownload_inprogress=Downloading...
-subscription_status_lastdownload_unknown=N/A
+newGroup_title=New filter group
+whitelistGroup_title=Exception Rules
+blockingGroup_title=Ad Blocking Rules
+elemhideGroup_title=Element Hiding Rules
 remove_subscription_warning=Do you really want to remove this subscription?
-import_filters_wrong_version=Warning: some of the filters in this list require Adblock Plus ?1? to work properly. You should probably upgrade to the latest Adblock Plus release before importing this list.
-import_filters_warning=Do you want to replace your current filters or append the new filters at the end of the list?
-import_filters_title=Import filters
-export_filters_title=Export filters
-invalid_filters_file=Not a valid Adblock Plus filters file.
-filters_write_error=There was an error writing filters to the file. Make sure the file isn't write protected or open in another application.
-clearall_warning=Do you really want to remove all filters from the list?
-resethitcounts_warning=Do you really want to reset hit counts for all filters? This operation cannot be undone.
-resethitcounts_selected_warning=Do you really want to reset hit counts for the selected filters? This operation cannot be undone.
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
 filter_regexp_tooltip=This filter is either a regular expression or too short to be optimised. Too many of these filters might slow down your browsing.
 filter_elemhide_duplicate_id=Only one ID of the element to be hidden can be specified
 filter_elemhide_nocriteria=No criteria specified to recognise the element to be hidden
-subscription_notAdded_warning=You didn't add a filter subscription. Without a filter subscription you will need to add Adblock Plus filters manually.
-subscription_notAdded_warning_addendum=Do you want to proceed?
 subscription_invalid_location=Filter list location is neither a valid URL nor a valid file name.
-synchronize_invalid_url=Failed: not a valid address
-synchronize_connection_error=Failed: download failure
-synchronize_invalid_data=Failed: not a valid filters list
-synchronize_checksum_mismatch=Failed: checksum mismatch
-synchronize_ok=Success
-overwrite=Overwrite
-append=Append
-new_filter_group_title=New filter
 type_label_other=other
 type_label_script=script
 type_label_image=image
@@ -56,15 +28,12 @@ type_label_object=object
 type_label_subdocument=frame
 type_label_document=document
 type_label_elemhide=hidden
-type_label_xbl=XBL binding
-type_label_ping=link ping
+type_label_popup=popup window
 type_label_xmlhttprequest=XML request
 type_label_object_subrequest=object sub-request
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=font
 fennec_status_enabled=Adblock Plus is enabled.
 fennec_status_disabled=Adblock Plus is disabled.
 fennec_status_enabled_site=Adblock Plus is enabled on ?1?.
 fennec_status_disabled_site=Adblock Plus is disabled on ?1?.
-sync_engine_title=Adblock Plus data
diff --git a/chrome/adblockplus.jar!/locale/en-GB/overlay.dtd b/chrome/adblockplus.jar!/locale/en-GB/overlay.dtd
index d9b17e6..286e562 100644
--- a/chrome/adblockplus.jar!/locale/en-GB/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/en-GB/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus Preferences">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blockable Items">
 <!ENTITY context.image.label "Adblock Plus: Block image">
 <!ENTITY context.object.label "Adblock Plus: Block object">
 <!ENTITY context.frame.label "Adblock Plus: Block frame">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blockable items on current page">
 <!ENTITY sendReport.label "Report issue on this page">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Preferences">
-<!ENTITY settings.accesskey "f">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Open blockable items">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Close blockable items">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Disable on ?1?">
 <!ENTITY whitelist.page.label "Disable on this page only">
 <!ENTITY disable.label "Disable everywhere">
-<!ENTITY recommend.label "Recommend us on Facebook">
+<!ENTITY options.label "Options">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY showintoolbar.label "Show in toolbar">
+<!ENTITY showintoolbar.accesskey "b">
+<!ENTITY showinstatusbar.label "Show in status bar">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Show tabs on Flash and Java">
+<!ENTITY objecttabs.accesskey "t">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY sync.label "Synchronise Adblock Plus settings">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Block">
 <!ENTITY objecttab.tooltip "Block this object with Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/en-GB/sendReport.dtd b/chrome/adblockplus.jar!/locale/en-GB/sendReport.dtd
index 3c2abce..846cc92 100644
--- a/chrome/adblockplus.jar!/locale/en-GB/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/en-GB/sendReport.dtd
@@ -3,14 +3,10 @@
 <!ENTITY dataCollector.heading "Welcome to the issue reporter">
 <!ENTITY dataCollector.description "Please wait a few moments while Adblock Plus gathers the required data.">
 <!ENTITY typeSelector.heading "Select issue type">
-<!ENTITY typeSelector.description "This window will guide you through the steps required for the submission of an Adblock
-	Plus issue report. First, please select the type of issue that you are experiencing
-	on this page:">
+<!ENTITY typeSelector.description "This window will guide you through the steps required for the submission of an Adblocknnn	Plus issue report. First, please select the type of issue that you are experiencingnn	on this page:">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus is blocking too much">
 <!ENTITY typeSelector.falsePositive.accesskey "m">
-<!ENTITY typeSelector.falsePositive.description "Select this option if the page lacks important content, displays incorrectly or
-	fails to function properly. You can determine whether Adblock Plus is the cause
-	of the problem by disabling it temporarily.">
+<!ENTITY typeSelector.falsePositive.description "Select this option if the page lacks important content, displays incorrectly ornnn	fails to function properly. You can determine whether Adblock Plus is the causenn	of the problem by disabling it temporarily.">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus doesn't block an advertisement">
 <!ENTITY typeSelector.falseNegative.accesskey "v">
 <!ENTITY typeSelector.falseNegative.description "Select this option if an advertisement is displayed despite Adblock Plus being enabled.">
@@ -31,33 +27,22 @@
 <!ENTITY issues.nosubscriptions.add.label "Add filter subscription">
 <!ENTITY issues.subscriptionCount.description "It seems that you are subscribed to too many filter subscriptions. This setup is not recommended because it will make the likeliness of issues much higher. We also cannot accept your issue report because it is unclear which filter subscription author needs to take action. Please remove all but the really necessary filter subscriptions and test whether the issue still occurs then.">
 <!ENTITY issues.openPreferences.label "Open filter preferences">
-<!ENTITY issues.ownfilters.description "Some of the filters applied on this page are user-defined. Please disable
-	the filters that might have caused the issue:">
+<!ENTITY issues.ownfilters.description "Some of the filters applied on this page are user-defined. Please disablennn	the filters that might have caused the issue:">
 <!ENTITY issues.ownfilters.disable.label "Disable filter">
-<!ENTITY issues.disabledgroups.description "The following filter subscriptions / filter groups are disabled, yet they might have
-	an effect on this page:">
+<!ENTITY issues.disabledgroups.description "The following filter subscriptions / filter groups are disabled, yet they might havennn	an effect on this page:">
 <!ENTITY issues.disabledgroups.enable.label "Enable filter subscription / filter group">
 <!ENTITY issues.disabledfilters.description "The following filters are disabled, yet they might have an effect on this page:">
 <!ENTITY issues.disabledfilters.enable.label "Enable filter">
 <!ENTITY issues.override.label "The configuration is correct, continue with the report">
 <!ENTITY issues.override.accesskey "c">
 <!ENTITY issues.change.description "Your configuration has been changed. Please reload the page to test the changes and submit a report if the issue hasn't been resolved by the alterations.">
-<!ENTITY typeWarning.description "You have indicated that you want to report a general issue with Adblock Plus rather
-	than a problem with the filters. Please note that such issues are best reported
-	in the [link]Adblock Plus forum[/link]. You should only use the issue reporter to
-	supplement an existing discussion, as nobody will notice your report
-	unless you provide them with the link to it. The automatically generated link
-	will be provided after submitting the report.">
+<!ENTITY typeWarning.description "You have indicated that you want to report a general issue with Adblock Plus rathernnn	than a problem with the filters. Please note that such issues are best reportednn	in the [link]Adblock Plus forum[/link]. You should only use the issue reporter tonn	supplement an existing discussion, as nobody will notice your reportnn	unless you provide them with the link to it. The automatically generated linknn	will be provided after submitting the report.">
 <!ENTITY typeWarning.override.label "I understand and want to submit the report anyway">
 <!ENTITY typeWarning.override.accesskey "s">
 <!ENTITY reloadButton.label "Reload page">
 <!ENTITY reloadButton.accesskey "R">
 <!ENTITY screenshot.heading "Attach screenshot">
-<!ENTITY screenshot.description "The same page can look different for different people. It may help us to
-	understand the problem if you attach a screenshot to your report. You can remove
-	sections containing sensitive information as well as mark areas where the
-	problem is noticeable. To do that click the corresponding button and select
-	a section of the image with your mouse.">
+<!ENTITY screenshot.description "The same page can look different for different people. It may help us tonnn	understand the problem if you attach a screenshot to your report. You can removenn	sections containing sensitive information as well as mark areas where thenn	problem is noticeable. To do that click the corresponding button and selectnn	a section of the image with your mouse.">
 <!ENTITY screenshot.attach.label "Attach a page image to the report">
 <!ENTITY screenshot.attach.accesskey "t">
 <!ENTITY screenshot.mark.label "Mark the problem">
@@ -67,9 +52,7 @@
 <!ENTITY screenshot.undo.label "Undo">
 <!ENTITY screenshot.undo.accesskey "U">
 <!ENTITY commentPage.heading "Enter comment">
-<!ENTITY commentPage.description "The text field below allows you to enter a comment to help us understand the issue.
-	This step is optional but recommended if the problem isn't obvious.
-	You can also review the report data before it is sent.">
+<!ENTITY commentPage.description "The text field below allows you to enter a comment to help us understand the issue.nnn	This step is optional but recommended if the problem isn't obvious.nn	You can also review the report data before it is sent.">
 <!ENTITY comment.label "Comment (optional):">
 <!ENTITY comment.accesskey "C">
 <!ENTITY comment.lengthWarning "The length of your comment exceeds 1000 characters. Only the first 1000 characters will be sent.">
@@ -86,9 +69,7 @@
 <!ENTITY sendPage.waitMessage "Please wait while Adblock Plus is submitting your report.">
 <!ENTITY sendPage.confirmation "Your report has been saved. You can access it at the following address:">
 <!ENTITY sendPage.knownIssue "The issue you reported is probably already known. More information:">
-<!ENTITY sendPage.errorMessage "An attempt to send the report failed with error code "?1?". Please ensure you are
-	connected to the Internet and retry. If the problem persists please request
-	assistance in the [link]Adblock Plus forum[/link].">
+<!ENTITY sendPage.errorMessage "An attempt to send the report failed with error code "?1?". Please ensure you arennn	connected to the Internet and retry. If the problem persists please requestnn	assistance in the [link]Adblock Plus forum[/link].">
 <!ENTITY sendPage.retry.label "Send again">
 <!ENTITY copyLink.label "Copy report link">
 <!ENTITY copyLink.accesskey "C">
diff --git a/chrome/adblockplus.jar!/locale/en-GB/settings.dtd b/chrome/adblockplus.jar!/locale/en-GB/settings.dtd
deleted file mode 100644
index efafa6a..0000000
--- a/chrome/adblockplus.jar!/locale/en-GB/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus Preferences">
-<!ENTITY filters.label "Filters">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Add filter">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "Add filter subscription">
-<!ENTITY addsubscription.accesskey "s">
-<!ENTITY synchsubscriptions.label "Update all subscriptions">
-<!ENTITY synchsubscriptions.accesskey "d">
-<!ENTITY import.label "Import filters">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Export custom filters">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "Remove all custom filters">
-<!ENTITY clearall.accesskey "l">
-<!ENTITY resethitcounts.label "Reset statistics">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Edit">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Cut">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Copy">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Paste">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Delete">
-<!ENTITY remove.accesskey "D">
-<!ENTITY menu.find.label "Find">
-<!ENTITY menu.find.accesskey "F">
-<!ENTITY menu.findagain.label "Find Again">
-<!ENTITY menu.findagain.accesskey "g">
-<!ENTITY view.label "View">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Sort by">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Unsorted">
-<!ENTITY sort.none.accesskey "U">
-<!ENTITY sort.ascending.label "A > Z sort order">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A sort order">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Options">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Enable Adblock Plus">
-<!ENTITY enable.accesskey "n">
-<!ENTITY showintoolbar.label "Show in toolbar">
-<!ENTITY showintoolbar.accesskey "b">
-<!ENTITY showinstatusbar.label "Show in status bar">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Show tabs on Flash and Java">
-<!ENTITY objecttabs.accesskey "t">
-<!ENTITY collapse.label "Collapse blocked elements">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Synchronise Adblock Plus settings">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Help">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "Getting started">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "Frequently Asked Questions">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Writing Adblock Plus filters">
-<!ENTITY filterdoc.accesskey "r">
-<!ENTITY about.label "About Adblock Plus">
-<!ENTITY about.accesskey "b">
-<!ENTITY description "The following filters determine which addresses should be blocked and which ones should be allowed:">
-<!ENTITY filter.column "Filter rule">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Slow filters">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "Enabled">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "Hits">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "Last hit">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Edit filter">
-<!ENTITY context.resethitcount.label "Reset statistics for filter">
-<!ENTITY context.synchsubscription.label "Update subscription now">
-<!ENTITY context.editsubscription.label "Edit subscription">
-<!ENTITY context.moveup.label "Move up">
-<!ENTITY context.movedown.label "Move down">
-<!ENTITY context.movegroupup.label "Move group up">
-<!ENTITY context.movegroupdown.label "Move group down">
-<!ENTITY context.enable.label "Enable">
-<!ENTITY context.disable.label "Disable">
-<!ENTITY apply.label "Apply">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "Filter subscription">
diff --git a/chrome/adblockplus.jar!/locale/en-GB/sidebar.dtd b/chrome/adblockplus.jar!/locale/en-GB/sidebar.dtd
index 397ab13..94c27e6 100644
--- a/chrome/adblockplus.jar!/locale/en-GB/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/en-GB/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filter">
 <!ENTITY state.label "State">
 <!ENTITY size.label "Size">
+<!ENTITY filterSource.label "Filter source">
 <!ENTITY docDomain.label "Document source">
 <!ENTITY docDomain.thirdParty "(third party)">
 <!ENTITY docDomain.firstParty "(first party)">
@@ -29,7 +30,7 @@
 <!ENTITY context.enablefilter.label "Re-enable filter ?1?">
 <!ENTITY context.disablefilteronsite.label "Disable this filter on ?1?">
 <!ENTITY context.open.label "Open in New Tab">
-<!ENTITY context.flash.label "Flash item's borders">
-<!ENTITY context.copy.label "Copy item's address">
+<!ENTITY context.flash.label "Flash item's borders">
+<!ENTITY context.copy.label "Copy item's address">
 <!ENTITY context.copyFilter.label "Copy filter">
 <!ENTITY context.selectAll.label "Select all">
diff --git a/chrome/adblockplus.jar!/locale/en-GB/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/en-GB/subscriptionSelection.dtd
index 4a73158..e6a6893 100644
--- a/chrome/adblockplus.jar!/locale/en-GB/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/en-GB/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Add Adblock Plus filter subscription">
-<!ENTITY dialog.title.edit "Edit filter subscription">
-<!ENTITY description.newInstall "Adblock Plus will be most effective if you add a filter subscription. Filter subscriptions are provided by other Adblock Plus users free of charge. The most suitable subscription for your language is already selected.">
 <!ENTITY subscriptionSelector.label "Please choose a filter subscription from the list:">
 <!ENTITY viewList.label "View filters">
 <!ENTITY visitHomepage.label "Visit home page">
 <!ENTITY addSubscription.label "Add subscription">
-<!ENTITY saveSubscription.label "Save subscription">
-<!ENTITY other.label "Add a different subscription">
-<!ENTITY other.accesskey "f">
 <!ENTITY list.download.failed "Adblock Plus failed to retrieve the list of subscriptions.">
 <!ENTITY list.download.retry "Try again">
 <!ENTITY list.download.website "View website">
 <!ENTITY fromWeb.description "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it.">
-<!ENTITY edit.description "You can change the subscription title or location as necessary.">
-<!ENTITY external.description "This is an external filter subscription; it will be updated by the extension that created this subscription.">
 <!ENTITY title.label "Subscription title:">
 <!ENTITY title.accesskey "t">
 <!ENTITY location.label "Filter list location:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "Update automatically">
-<!ENTITY autodownload.accesskey "p">
 <!ENTITY supplementMessage "This filter subscription is meant to be used with the filter subscription "?1?" which you are not using yet.">
 <!ENTITY addMain.label "Add filter subscription "?1?" as well">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/en-US/filters.dtd b/chrome/adblockplus.jar!/locale/en-US/filters.dtd
new file mode 100644
index 0000000..e4150b5
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/en-US/filters.dtd
@@ -0,0 +1,113 @@
+<!ENTITY dialog.title                         "Adblock Plus Filter Preferences">
+
+<!ENTITY subscriptions.tab.label              "Filter subscriptions">
+<!ENTITY filters.tab.label                    "Custom filters">
+
+<!ENTITY addSubscription.label                "Add filter subscription">
+<!ENTITY addSubscription.accesskey            "f">
+
+<!ENTITY addSubscriptionAdd.label             "Add">
+<!ENTITY addSubscriptionCancel.label          "Cancel">
+<!ENTITY addSubscriptionOther.label           "Add a different subscription">
+
+<!ENTITY noSubscriptions.text                 "
+	You haven't added any filter subscriptions yet. Adblock Plus won't block
+	anything without filters, please use "Add filter subscription" to
+	add some.
+">
+<!ENTITY subscription.homepage.label          "Homepage">
+<!ENTITY subscription.external.label          "Updated by another extension">
+<!ENTITY subscription.source.label            "Filter list">
+<!ENTITY subscription.enabled.label           "Enabled">
+<!ENTITY subscription.lastDownload.label      "Last download:">
+<!ENTITY subscription.lastDownload.inProgress "Downloading…">
+<!ENTITY subscription.lastDownload.unknown    "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Failed, not a valid address">
+<!ENTITY subscription.lastDownload.connectionError "Failed, download failure">
+<!ENTITY subscription.lastDownload.invalidData "Failed, not a valid filters list">
+<!ENTITY subscription.lastDownload.checksumMismatch "Failed, checksum mismatch">
+<!ENTITY subscription.lastDownload.success    "Success">
+<!ENTITY subscription.minVersion.warning      "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY subscription.disabledFilters.enable  "Enable disabled filters">
+
+<!ENTITY subscription.actions.label           "Actions">
+<!ENTITY subscription.update.label            "Update filters">
+<!ENTITY subscription.editTitle.label         "Edit title">
+<!ENTITY subscription.delete.label            "Delete">
+<!ENTITY subscription.showHideFilters.label   "Show/hide filters">
+<!ENTITY subscription.moveUp.label            "Move up">
+<!ENTITY subscription.moveDown.label          "Move down">
+
+<!ENTITY acceptableAds.label                  "Allow non-intrusive advertising">
+<!ENTITY acceptableAds.accesskey              "i">
+<!ENTITY readMore.label                       "Read more">
+
+<!ENTITY addGroup.label                       "Add filter group">
+<!ENTITY addGroup.accesskey                   "g">
+
+<!ENTITY noFilters.text                       "
+	You don't have any custom filters yet.
+">
+
+<!ENTITY addFilter.label                      "Add filter">
+<!ENTITY addFilter.accesskey                  "d">
+
+<!ENTITY filter.actions.label                 "Filter actions">
+<!ENTITY filter.edit.label                    "Edit">
+<!ENTITY filter.cut.label                     "Cut">
+<!ENTITY filter.copy.label                    "Copy">
+<!ENTITY filter.paste.label                   "Paste">
+<!ENTITY filter.delete.label                  "Delete">
+<!ENTITY filter.selectAll.label               "Select All">
+<!ENTITY filter.resetHitCounts.label          "Reset hit statistics">
+<!ENTITY filter.moveUp.label                  "Move up">
+<!ENTITY filter.moveDown.label                "Move down">
+<!ENTITY viewMenu.label                       "View">
+
+<!ENTITY filter.column                        "Filter rule">
+<!ENTITY filter.accesskey                     "F">
+<!ENTITY slow.column                          "Slow filters">
+<!ENTITY slow.accesskey                       "w">
+<!ENTITY enabled.column                       "Enabled">
+<!ENTITY enabled.accesskey                    "n">
+<!ENTITY hitcount.column                      "Hits">
+<!ENTITY hitcount.accesskey                   "H">
+<!ENTITY lasthit.column                       "Last hit">
+<!ENTITY lasthit.accesskey                    "L">
+
+<!ENTITY sort.label                           "Sort by">
+<!ENTITY sort.accesskey                       "S">
+<!ENTITY sort.none.label                      "Unsorted">
+<!ENTITY sort.none.accesskey                  "U">
+<!ENTITY sort.ascending.label                 "A > Z sort order">
+<!ENTITY sort.ascending.accesskey             "A">
+<!ENTITY sort.descending.label                "Z > A sort order">
+<!ENTITY sort.descending.accesskey            "Z">
+
+<!ENTITY noGroupSelected.text                 "You need to select a filter group before its filters can be displayed.">
+<!ENTITY noFiltersInGroup.text                "The selected group is empty.">
+
+<!ENTITY filters.remove.warning               "Do you really want to remove all selected filters?">
+
+<!ENTITY backupButton.label                   "Backup and Restore">
+<!ENTITY backupButton.accesskey               "B">
+
+<!ENTITY backup.label                         "Create new backup">
+<!-- Note: the placeholder ?1? will be replaced by date/time of the automatic backup -->
+<!ENTITY restore.default.label                "Restore backup from ?1?">
+<!ENTITY restore.own.label                    "Restore own backup">
+
+<!ENTITY backup.complete.title                "All filters and subscriptions">
+<!ENTITY backup.custom.title                  "Custom filters only">
+
+<!ENTITY backup.error                         "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error                        "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY restore.complete.warning             "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY restore.custom.warning               "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY restore.minVersion.warning           "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+
+<!ENTITY find.label                           "Find">
+<!ENTITY find.accesskey                       "n">
+
+<!ENTITY close.label                          "Close">
diff --git a/chrome/adblockplus.jar!/locale/en-US/firstRun.dtd b/chrome/adblockplus.jar!/locale/en-US/firstRun.dtd
new file mode 100644
index 0000000..579cc09
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/en-US/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+	Thank you for installing Adblock Plus. Ads will be blocked from now on.
+	Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+	The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+	Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+	You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/en-US/global.properties b/chrome/adblockplus.jar!/locale/en-US/global.properties
index eefe2a3..e3fed8b 100644
--- a/chrome/adblockplus.jar!/locale/en-US/global.properties
+++ b/chrome/adblockplus.jar!/locale/en-US/global.properties
@@ -17,50 +17,20 @@ blocked_count_addendum=(also whitelisted: ?1?, hidden: ?2?)
 
 no_blocking_suggestions=No blockable items on the current page
 whitelisted_page=Adblock Plus has been disabled for the current page
-whitelist_description=My Exception Rules
-filterlist_description=My Ad Blocking Rules
-invalid_description=My Invalid Rules
-elemhide_description=My Element Hiding Rules
-subscription_description=Filter subscription:
-# Note: the placeholder ?1? will be replaced by the Adblock Plus version number required
-subscription_wrong_version=Some filters in this subscription require Adblock Plus ?1? to work properly.
-subscription_source=Source:
-subscription_status=Status:
-subscription_status_autodownload=Updated automatically
-subscription_status_manualdownload=Updated manually
-subscription_status_externaldownload=Updated externally (another extension)
-subscription_status_lastdownload=Last download:
-subscription_status_lastdownload_inprogress=Downloading...
-subscription_status_lastdownload_unknown=N/A
+
+newGroup_title=New filter group
+whitelistGroup_title=Exception Rules
+blockingGroup_title=Ad Blocking Rules
+elemhideGroup_title=Element Hiding Rules
+
 remove_subscription_warning=Do you really want to remove this subscription?
-# Note: the placeholder ?1? will be replaced by the Adblock Plus version number required
-import_filters_wrong_version=Warning: some of the filters in this list require Adblock Plus ?1? to work properly. You should probably upgrade to the latest Adblock Plus release before importing this list.
-import_filters_warning=Do you want to replace your current filters or append the new filters at the end of the list?
-import_filters_title=Import filters
-export_filters_title=Export filters
-invalid_filters_file=Not a valid Adblock Plus filters file.
-filters_write_error=There was an error writing filters to the file. Make sure the file isn't write protected or open in another application.
-clearall_warning=Do you really want to remove all filters from the list?
-resethitcounts_warning=Do you really want to reset hit counts for all filters back to zero? Note: this operation can't be undone.
-resethitcounts_selected_warning=Do you really want to reset hit counts for selected filters back to zero? Note: this operation can't be undone.
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
 
 filter_regexp_tooltip=This filter is either a regular expression or too short to be optimized. Too many of these filters might slow down your browsing.
 filter_elemhide_duplicate_id=Only one ID of the element to be hidden can be specified
 filter_elemhide_nocriteria=No criteria specified to recognize the element to be hidden
 
-subscription_notAdded_warning=You didn't add a filter subscription. Without a filter subscription you will need to add Adblock Plus filters manually.
-subscription_notAdded_warning_addendum=Do you want to proceed?
 subscription_invalid_location=Filter list location is neither a valid URL nor a valid file name.
-synchronize_invalid_url=Failed, not a valid address
-synchronize_connection_error=Failed, download failure
-synchronize_invalid_data=Failed, not a valid filters list
-synchronize_checksum_mismatch=Failed, checksum mismatch
-synchronize_ok=Success
-
-overwrite=Overwrite
-append=Append
-
-new_filter_group_title=New filter
 
 type_label_other=other
 type_label_script=script
@@ -70,12 +40,10 @@ type_label_object=object
 type_label_subdocument=frame
 type_label_document=document
 type_label_elemhide=hidden
+type_label_popup=pop-up window
 
-type_label_xbl=XBL binding
-type_label_ping=link ping
 type_label_xmlhttprequest=XML request
 type_label_object_subrequest=object subrequest
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=font
 
@@ -85,5 +53,3 @@ fennec_status_disabled=Adblock Plus is disabled.
 fennec_status_enabled_site=Adblock Plus is enabled on ?1?.
 # Note: the placeholder ?1? will be replaced by the site name
 fennec_status_disabled_site=Adblock Plus is disabled on ?1?.
-
-sync_engine_title=Adblock Plus data
diff --git a/chrome/adblockplus.jar!/locale/en-US/overlay.dtd b/chrome/adblockplus.jar!/locale/en-US/overlay.dtd
index 76e5e6b..1d3eb57 100644
--- a/chrome/adblockplus.jar!/locale/en-US/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/en-US/overlay.dtd
@@ -6,8 +6,6 @@
 <!ENTITY menuitem.accesskey     "b">
 <!ENTITY toolbarbutton.label    "Adblock Plus">
 
-<!ENTITY view.blockableItems.label  "Adblock Plus: Blockable Items">
-
 <!ENTITY context.image.label    "Adblock Plus: Block image">
 <!ENTITY context.object.label   "Adblock Plus: Block object">
 <!ENTITY context.frame.label    "Adblock Plus: Block frame">
@@ -18,8 +16,8 @@
 
 <!ENTITY sendReport.label       "Report issue on this page">
 <!ENTITY sendReport.accesskey   "R">
-<!ENTITY settings.label         "Preferences">
-<!ENTITY settings.accesskey     "f">
+<!ENTITY filters.label          "Filter preferences">
+<!ENTITY filters.accesskey      "F">
 <!ENTITY opensidebar.label      "Open blockable items">
 <!-- Note: This access key should usually be the same as closesidebar.accesskey. It is the same menu item with different label depending on whether the sidebar is currently open.-->
 <!ENTITY opensidebar.accesskey  "b">
@@ -30,7 +28,24 @@
 <!ENTITY whitelist.site.label   "Disable on ?1?">
 <!ENTITY whitelist.page.label   "Disable on this page only">
 <!ENTITY disable.label          "Disable everywhere">
-<!ENTITY recommend.label        "Recommend us on Facebook">
+<!ENTITY options.label          "Options">
+<!ENTITY options.accesskey      "O">
+<!ENTITY contribute.label       "Contribute to Adblock Plus">
+
+<!ENTITY showintoolbar.label        "Show in toolbar">
+<!ENTITY showintoolbar.accesskey    "b">
+<!ENTITY showinstatusbar.label      "Show in status bar">
+<!ENTITY showinstatusbar.accesskey  "s">
+<!ENTITY showinaddonbar.label       "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey   "b">
+<!ENTITY objecttabs.label           "Show tabs on Flash and Java">
+<!ENTITY objecttabs.accesskey       "t">
+<!ENTITY hideplaceholders.label     "Hide placeholders of blocked elements">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label            "Count filter hits">
+<!ENTITY counthits.accesskey        "h">
+<!ENTITY sync.label                 "Sync Adblock Plus settings">
+<!ENTITY sync.accesskey             "c">
 
 <!ENTITY objecttab.title        "Block">
 <!ENTITY objecttab.tooltip      "Click here to block this object with Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/en-US/settings.dtd b/chrome/adblockplus.jar!/locale/en-US/settings.dtd
deleted file mode 100644
index d0838a0..0000000
--- a/chrome/adblockplus.jar!/locale/en-US/settings.dtd
+++ /dev/null
@@ -1,104 +0,0 @@
-<!ENTITY dialog.title               "Adblock Plus Preferences">
-
-<!ENTITY filters.label              "Filters">
-<!ENTITY filters.accesskey          "F">
-
-<!ENTITY add.label                  "Add filter">
-<!ENTITY add.accesskey              "A">
-<!ENTITY addsubscription.label      "Add filter subscription">
-<!ENTITY addsubscription.accesskey  "s">
-<!ENTITY synchsubscriptions.label       "Update all subscriptions">
-<!ENTITY synchsubscriptions.accesskey   "d">
-<!ENTITY import.label               "Import filters">
-<!ENTITY import.accesskey           "m">
-<!ENTITY export.label               "Export custom filters">
-<!ENTITY export.accesskey           "x">
-<!ENTITY clearall.label             "Remove all custom filters">
-<!ENTITY clearall.accesskey         "l">
-<!ENTITY resethitcounts.label       "Reset hit statistics">
-<!ENTITY resethitcounts.accesskey   "R">
-
-<!ENTITY edit.label                 "Edit">
-<!ENTITY edit.accesskey             "E">
-
-<!ENTITY cut.label                  "Cut">
-<!ENTITY cut.accesskey              "t">
-<!ENTITY copy.label                 "Copy">
-<!ENTITY copy.accesskey             "C">
-<!ENTITY paste.label                "Paste">
-<!ENTITY paste.accesskey            "P">
-<!ENTITY remove.label               "Delete">
-<!ENTITY remove.accesskey           "D">
-<!ENTITY menu.find.label            "Find">
-<!ENTITY menu.find.accesskey        "F">
-<!ENTITY menu.findagain.label       "Find Again">
-<!ENTITY menu.findagain.accesskey   "g">
-
-<!ENTITY view.label                 "View">
-<!ENTITY view.accesskey             "V">
-
-<!ENTITY sort.label                 "Sort by">
-<!ENTITY sort.accesskey             "S">
-<!ENTITY sort.none.label            "Unsorted">
-<!ENTITY sort.none.accesskey        "U">
-<!ENTITY sort.ascending.label       "A > Z sort order">
-<!ENTITY sort.ascending.accesskey   "A">
-<!ENTITY sort.descending.label      "Z > A sort order">
-<!ENTITY sort.descending.accesskey  "Z">
-
-<!ENTITY options.label              "Options">
-<!ENTITY options.accesskey          "O">
-
-<!ENTITY enable.label               "Enable Adblock Plus">
-<!ENTITY enable.accesskey           "n">
-<!ENTITY showintoolbar.label        "Show in toolbar">
-<!ENTITY showintoolbar.accesskey    "b">
-<!ENTITY showinstatusbar.label      "Show in status bar">
-<!ENTITY showinstatusbar.accesskey  "s">
-<!ENTITY objecttabs.label           "Show tabs on Flash and Java">
-<!ENTITY objecttabs.accesskey       "t">
-<!ENTITY collapse.label             "Collapse blocked elements">
-<!ENTITY collapse.accesskey         "l">
-<!ENTITY sync.label                 "Sync Adblock Plus settings">
-<!ENTITY sync.accesskey             "c">
-
-<!ENTITY help.label                 "Help">
-<!ENTITY help.accesskey             "H">
-
-<!ENTITY gettingStarted.label       "Getting started">
-<!ENTITY gettingStarted.accesskey   "s">
-<!ENTITY faq.label                  "Frequently Asked Questions">
-<!ENTITY faq.accesskey              "F">
-<!ENTITY filterdoc.label            "Writing Adblock Plus filters">
-<!ENTITY filterdoc.accesskey        "r">
-<!ENTITY about.label                "About Adblock Plus">
-<!ENTITY about.accesskey            "b">
-
-<!ENTITY description                "The following filters determine which addresses should be blocked and which ones should be allowed:">
-
-<!ENTITY filter.column              "Filter rule">
-<!ENTITY filter.accesskey           "F">
-<!ENTITY slow.column                "Slow filters">
-<!ENTITY slow.accesskey             "w">
-<!ENTITY enabled.column             "Enabled">
-<!ENTITY enabled.accesskey          "n">
-<!ENTITY hitcount.column            "Hits">
-<!ENTITY hitcount.accesskey         "H">
-<!ENTITY lasthit.column             "Last hit">
-<!ENTITY lasthit.accesskey          "L">
-
-<!ENTITY context.edit.label         "Edit filter">
-<!ENTITY context.resethitcount.label      "Reset hit statistics for filter">
-<!ENTITY context.synchsubscription.label  "Update subscription now">
-<!ENTITY context.editsubscription.label   "Edit subscription">
-<!ENTITY context.moveup.label       "Move filter up">
-<!ENTITY context.movedown.label     "Move filter down">
-<!ENTITY context.movegroupup.label        "Move group up">
-<!ENTITY context.movegroupdown.label      "Move group down">
-<!ENTITY context.enable.label       "Enable">
-<!ENTITY context.disable.label      "Disable">
-
-<!ENTITY apply.label                "Apply">
-<!ENTITY apply.accesskey            "p">
-
-<!ENTITY fennec.subscription.label  "Filter subscription">
diff --git a/chrome/adblockplus.jar!/locale/en-US/sidebar.dtd b/chrome/adblockplus.jar!/locale/en-US/sidebar.dtd
index 7bd9410..33996b5 100644
--- a/chrome/adblockplus.jar!/locale/en-US/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/en-US/sidebar.dtd
@@ -5,19 +5,17 @@
 
 <!ENTITY search.label             "Search:">
 <!ENTITY search.accesskey         "S">
-
 <!ENTITY type.label               "Type">
 <!ENTITY address.label            "Address">
 <!ENTITY filter.label             "Filter">
 <!ENTITY state.label              "State">
 <!ENTITY size.label               "Size">
+<!ENTITY filterSource.label       "Filter source">
 <!ENTITY docDomain.label          "Document source">
 <!ENTITY docDomain.thirdParty     "(third party)">
 <!ENTITY docDomain.firstParty     "(first party)">
-
 <!ENTITY noitems.label            "No blockable items">
 <!ENTITY whitelisted.label        "Whitelisted page">
-
 <!ENTITY tooltip.address.label    "Address:">
 <!ENTITY tooltip.type.label       "Type:">
 <!ENTITY tooltip.type.blocked     "(blocked)">
diff --git a/chrome/adblockplus.jar!/locale/en-US/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/en-US/subscriptionSelection.dtd
index 83bfa6e..082e5a7 100644
--- a/chrome/adblockplus.jar!/locale/en-US/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/en-US/subscriptionSelection.dtd
@@ -1,12 +1,4 @@
 <!ENTITY dialog.title               "Add Adblock Plus filter subscription">
-<!ENTITY dialog.title.edit          "Edit filter subscription">
-
-<!ENTITY description.newInstall     "
-	Adblock Plus will be most effective if you add a filter subscription.
-	Filter subscriptions are provided by other Adblock Plus users free of
-	charge. The most suitable subscription for your language is already
-	selected.
-">
 
 <!ENTITY subscriptionSelector.label "Please choose a filter subscription from the list:">
 
@@ -14,25 +6,17 @@
 <!ENTITY visitHomepage.label        "Visit home page">
 
 <!ENTITY addSubscription.label      "Add subscription">
-<!ENTITY saveSubscription.label     "Save subscription">
-
-<!ENTITY other.label                "Add a different subscription">
-<!ENTITY other.accesskey            "f">
 
 <!ENTITY list.download.failed       "Adblock Plus failed to retrieve the list of subscriptions.">
 <!ENTITY list.download.retry        "Try again">
 <!ENTITY list.download.website      "View website">
 
 <!ENTITY fromWeb.description        "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it.">
-<!ENTITY edit.description           "You can change the subscription title or location as necessary.">
-<!ENTITY external.description       "This is an external filter subscription; it will be updated by the extension that created this subscription.">
 
 <!ENTITY title.label                "Subscription title:">
 <!ENTITY title.accesskey            "t">
 <!ENTITY location.label             "Filter list location:">
 <!ENTITY location.accesskey         "l">
-<!ENTITY autodownload.label         "Update filters automatically">
-<!ENTITY autodownload.accesskey     "p">
 
 <!-- Note: the placeholder (?1?) will be replaced by the name of the filter subscription required -->
 <!ENTITY supplementMessage          "This filter subscription is meant to be used with the filter subscription "?1?" which you are not using yet.">
diff --git a/chrome/adblockplus.jar!/locale/eo/filters.dtd b/chrome/adblockplus.jar!/locale/eo/filters.dtd
new file mode 100644
index 0000000..68943be
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/eo/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Filtrilaj agordoj de Adblock Plus">
+<!ENTITY subscriptions.tab.label "Filtrilabonoj">
+<!ENTITY filters.tab.label "Propraj filtriloj">
+<!ENTITY addSubscription.label "Aldoni filtrilabonon">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Aldoni">
+<!ENTITY addSubscriptionCancel.label "Nuligi">
+<!ENTITY addSubscriptionOther.label "Aldoni alian abonon">
+<!ENTITY noSubscriptions.text "
+Vi ankoraŭ ne aldonis filtrilabonojn. Adblock Plus blokos
+nenion sen filtriloj, bonvolu uzu "Aldoni filtrilabonon" por
+ aldoni abonon.
+">
+<!ENTITY subscription.homepage.label "Hejmpaĝo">
+<!ENTITY subscription.external.label "Ĝisdatigita per alia etendaĵo">
+<!ENTITY subscription.source.label "Filtrila listo">
+<!ENTITY subscription.enabled.label "Ebligita">
+<!ENTITY subscription.lastDownload.label "Lasta elŝuto:">
+<!ENTITY subscription.lastDownload.inProgress "Elŝutanta...">
+<!ENTITY subscription.lastDownload.unknown "Neniu">
+<!ENTITY subscription.lastDownload.invalidURL "Malsukcesis, tio ne estas valida adreso">
+<!ENTITY subscription.lastDownload.connectionError "Malsukcesis, elŝuta eraro">
+<!ENTITY subscription.lastDownload.invalidData "Malsukcesis, tio ne estas listo de validaj filtriloj">
+<!ENTITY subscription.lastDownload.checksumMismatch "Malsukcesis, kontrolsuma miskongruo">
+<!ENTITY subscription.lastDownload.success "Sukceso">
+<!ENTITY subscription.minVersion.warning "Ĉi tiu filtrilabono bezonas pli novan version de Adblock Plus, vi ĝisdatigu al la plej nova versio de Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Kelkaj filtriloj en ĉi tiu abono estas malebligitaj.">
+<!ENTITY subscription.disabledFilters.enable "Ebligi malebligitajn filtrilojn">
+<!ENTITY subscription.actions.label "Agoj">
+<!ENTITY subscription.update.label "Ĝisdatigi filtrilojn">
+<!ENTITY subscription.editTitle.label "Redakti titolon">
+<!ENTITY subscription.delete.label "Forviŝi">
+<!ENTITY subscription.showHideFilters.label "Montri/Kaŝi filtrilojn">
+<!ENTITY subscription.moveUp.label "Supren">
+<!ENTITY subscription.moveDown.label "Malsupren">
+<!ENTITY acceptableAds.label "Permesi nealtrudiĝantan reklamon">
+<!ENTITY acceptableAds.accesskey "t">
+<!ENTITY readMore.label "Legu pli">
+<!ENTITY addGroup.label "Aldoni filtrilgrupon">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+Vi ankoraŭ ne havas proprajn filtrilojn.
+">
+<!ENTITY addFilter.label "Aldoni filtrilon">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "Filtrilaj agoj">
+<!ENTITY filter.edit.label "Redakti">
+<!ENTITY filter.cut.label "Eltondi">
+<!ENTITY filter.copy.label "Kopii">
+<!ENTITY filter.paste.label "Alglui">
+<!ENTITY filter.delete.label "Forviŝi">
+<!ENTITY filter.selectAll.label "Elekti ĉion">
+<!ENTITY filter.resetHitCounts.label "Rekomencigi trafostatistikon">
+<!ENTITY filter.moveUp.label "Supren">
+<!ENTITY filter.moveDown.label "Malsupren">
+<!ENTITY viewMenu.label "Vidi">
+<!ENTITY filter.column "Filtrilregulo">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Malrapidaj filtriloj">
+<!ENTITY slow.accesskey "m">
+<!ENTITY enabled.column "Ebligita">
+<!ENTITY enabled.accesskey "i">
+<!ENTITY hitcount.column "Trafoj">
+<!ENTITY hitcount.accesskey "T">
+<!ENTITY lasthit.column "Lasta trafo">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Ordigi laŭ">
+<!ENTITY sort.accesskey "O">
+<!ENTITY sort.none.label "Nenio">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "Ordigo A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordigo Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Vi devas elekti filtrilgrupon antaŭ ol filtriloj povas esti vidigataj.">
+<!ENTITY noFiltersInGroup.text "La elektita grupo estas malplena.">
+<!ENTITY filters.remove.warning "Ĉu vi vere volas forigi ĉiujn elektitajn filtrilojn?">
+<!ENTITY backupButton.label "Sekurkopii kaj restaŭri">
+<!ENTITY backupButton.accesskey "k">
+<!ENTITY backup.label "Krei novan sekurkopion">
+<!ENTITY restore.default.label "Restaŭri sekurkopion de ?1?">
+<!ENTITY restore.own.label "Restaŭri propran sekurkopion">
+<!ENTITY backup.complete.title "Ĉiuj filtriloj kaj abonoj">
+<!ENTITY backup.custom.title "Nur propraj filtriloj">
+<!ENTITY backup.error "Okazis eraro dum skribado de filtriloj en dosieron. Kontrolu, ke la dosiero ne estas kontraŭskribe protektita aŭ uzate per alia aplikaĵo.">
+<!ENTITY restore.error "La dosieraj datumoj ne povis traktitaj, ĉu tio eble ne estas sekurkopia dosiero de Adblock Plus?">
+<!ENTITY restore.complete.warning "Ĉiuj viaj filtrilaj agordoj estos anstataŭigataj per la enhavo de la elektita dosiero. Ĉu vi volas daŭrigi?">
+<!ENTITY restore.custom.warning "Ĉiuj viaj propraj filtriloj estos anstataŭigataj per la enhavo de la elektita dosiero. Ĉu vi volas daŭrigi?">
+<!ENTITY restore.minVersion.warning "Averto: la dosiero estas kreita per pli nova versio de Adblock Plus. Vi ĝisdatigu al la plej nova versio de Adblock Plus antaŭ ol vi restaŭri ion el ĉi tiu dosiero.">
+<!ENTITY find.label "Serĉi">
+<!ENTITY find.accesskey "S">
+<!ENTITY close.label "Fermi">
diff --git a/chrome/adblockplus.jar!/locale/eo/firstRun.dtd b/chrome/adblockplus.jar!/locale/eo/firstRun.dtd
new file mode 100644
index 0000000..cf276f0
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/eo/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus fininstalita">
+<!ENTITY confirmation "
+Dankon, ke vi instalis Adblock Plus. Reklamo estos blokata ekde nun.
+Multan plezuron!">
+<!ENTITY advancedSection "Detalaj agordoj">
+<!ENTITY listSelection1 "
+La jena listo de filtriloj estas konfigurita por bloki reklamon:
+">
+<!ENTITY noList "Listo de filtriloj ne ekzistas">
+<!ENTITY visitHomepage.label "Viziti paĝon de filtrilaj listoj">
+<!ENTITY acceptableAds "
+Adblock Plus esta ankaŭ agordita por permesi nealtrudiĝantanreklamon.
+">
+<!ENTITY readMore.label "Legu pli pri tio">
+<!ENTITY listSelection2 "
+Vi povas ŝanĝi ĉi tiun elekton ĉiutempe en la [link]filtrilaj agordoj[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/eo/global.properties b/chrome/adblockplus.jar!/locale/eo/global.properties
index 13e8d15..9dea291 100644
--- a/chrome/adblockplus.jar!/locale/eo/global.properties
+++ b/chrome/adblockplus.jar!/locale/eo/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? el ?2?
 blocked_count_addendum=(ankaŭ en blanka listo: ?1?, kaŝita: ?2?)
 no_blocking_suggestions=Neniuj blokeblaj elementoj en ĉi tiu paĝo
 whitelisted_page=Adblock Plus estas malebligita por ĉi tiu paĝo
-whitelist_description=Miaj esceptoreguloj
-filterlist_description=Miaj blokadaj reguloj
-invalid_description=Miaj nevalidaj reguloj
-elemhide_description=Miaj reguloj por kaŝado de elementoj
-subscription_description=Filtrilabono:
-subscription_wrong_version=Kelkaj filtriloj bezonas Adblock Plus ?1?, por ke ili korekte funkciu.
-subscription_source=Fonto:
-subscription_status=Stato:
-subscription_status_autodownload=Aŭtomate ĝisdatigita
-subscription_status_manualdownload=Permane ĝisdatigita
-subscription_status_externaldownload=Ekstere gixsdatigita (alia etendaĵo)
-subscription_status_lastdownload=Lasta elŝuto:
-subscription_status_lastdownload_inprogress=Elŝutanta...
-subscription_status_lastdownload_unknown=Neniu
+newGroup_title=Nova grupo de filtriloj
+whitelistGroup_title=Esceptoreguloj
+blockingGroup_title=Reguloj por bloki reklamon
+elemhideGroup_title=Reguloj por ka3i elementojn
 remove_subscription_warning=Ĉu vi efektive volas fini ĉi tiun abonon?
-import_filters_wrong_version=Averto: kelkaj filtriloj en ĉi tiu listo bezonas Adblock Plus ?1?, por ke ili korekte funkciu. Eble promociu al la plej nova versio de Adblock Plus, antaŭ ol vi importas ĉi tiun liston.
-import_filters_warning=Ĉu vi volas anstataŭigi viajn nunajn filtrilojn aŭ postglui novajn filtrilojn en la fino de la listo?
-import_filters_title=Importi filtrilojn
-export_filters_title=Eksporti filtrilojn
-invalid_filters_file=Tio ne estas valida dosiero de filtriloj de Adblock Plus.
-filters_write_error=Okazis eraro dum skribado de filtriloj en la dosieron. Certiĝu, ĉu la dosiero ne estas protektita kontraŭ skribado aŭ malfermu en alia aplikaĵo.
-clearall_warning=Ĉu vi vere volas forigi ĉiujn filtrilojn el la listo?
-resethitcounts_warning=Ĉu vi vere volas remeti la trafonombrojn por ĉiuj filtriloj al nul? Atentu: ĉi tiu operacio ne povas esti malfarata.
-resethitcounts_selected_warning=Ĉu vi vere volas remeti la trafonombrojn por elektitaj filtriloj al nul? Atentu: ĉi tiu operacio ne povas esti malfarata.
+clearStats_warning=Tio rekomencigos la statistikon de filtrilaj trafoj kaj malebligos la nombradon de filtrilaj trafoj. Ĉu vi volas daŭrigi?
 filter_regexp_tooltip=Ĉi tiu filtrilo estas aŭ regula esprimo aŭ tro mallonga por optimigo. Tro multe da ĉi tiuj filtriloj povus malrapidigi vian retumadon.
 filter_elemhide_duplicate_id=Nur unu el la kaŝotaj elementoj povas esti specifata
 filter_elemhide_nocriteria=Neniuj kriterioj specifitaj por ekkoni la kaŝotan elementon
-subscription_notAdded_warning=Vi ne aldonis filtrilabonon. Sen filtrilabono vi devos aldoni la filtrilojn de Addblock Plus permane.
-subscription_notAdded_warning_addendum=Ĉu vi volas daŭrigi?
 subscription_invalid_location=La loko de la listo de filtriloj estas nek valida URL nek valida dosiernomo.
-synchronize_invalid_url=Malsukcesis, tio ne estas valida adreso
-synchronize_connection_error=Malsukcesis, elŝuta eraro
-synchronize_invalid_data=Malsukcesis, tio ne estas listo de validaj filtriloj
-synchronize_checksum_mismatch=Malsukcesis, kontrolsuma miskongruo
-synchronize_ok=Sukceso
-overwrite=Superskribi
-append=Postglui
-new_filter_group_title=Nova filtrilo
 type_label_other=alia
 type_label_script=skripto
 type_label_image=bildo
@@ -56,15 +28,12 @@ type_label_object=objekto
 type_label_subdocument=kadro
 type_label_document=dokumento
 type_label_elemhide=kaŝita
-type_label_xbl=XBL-bindado
-type_label_ping=ligila eĥosondaĵo
+type_label_popup=ŝprucfenestro
 type_label_xmlhttprequest=XML-peto
 type_label_object_subrequest=objekta subpeto
-type_label_dtd=DTD
 type_label_media=aŭdio/video
 type_label_font=tiparo
 fennec_status_enabled=Adblock Plus estas ebligita.
 fennec_status_disabled=Adblock Plus estas malebligita.
 fennec_status_enabled_site=Adblock Plus estas ebligita sur ?1?.
 fennec_status_disabled_site=Adblock Plus estas malebligita sur ?1?.
-sync_engine_title=Datumoj de Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/eo/overlay.dtd b/chrome/adblockplus.jar!/locale/eo/overlay.dtd
index 5fb32ee..03cfa8a 100644
--- a/chrome/adblockplus.jar!/locale/eo/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/eo/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Agordoj de Adblock Plus">
 <!ENTITY menuitem.accesskey "a">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokeblaj elementoj">
 <!ENTITY context.image.label "Adblock Plus: Bloki bildon">
 <!ENTITY context.object.label "Adblock Plus: Bloki objekton">
 <!ENTITY context.frame.label "Adblock Plus: Bloki kadron">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blokeblaj elementoj sur la nuna paĝo">
 <!ENTITY sendReport.label "Raporti problemon pri ĉi tiu paĝo">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Agordoj">
-<!ENTITY settings.accesskey "A">
+<!ENTITY filters.label "Filtrilaj agordoj">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Malfermi blokeblajn elementojn">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Fermi blokeblajn elementojn">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Malebligi sur ?1?">
 <!ENTITY whitelist.page.label "Malebligi nur sur ĉi tiu paĝo">
 <!ENTITY disable.label "Ĉie malebligi">
-<!ENTITY recommend.label "Rekomendi nin sur Facebook">
+<!ENTITY options.label "Opcioj">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Kontribuu al Adblock Plus">
+<!ENTITY showintoolbar.label "Vidigi en ilobreto">
+<!ENTITY showintoolbar.accesskey "V">
+<!ENTITY showinstatusbar.label "Vidigi en statstrio">
+<!ENTITY showinstatusbar.accesskey "g">
+<!ENTITY showinaddonbar.label "Vidigi en aldonaĵbreto">
+<!ENTITY showinaddonbar.accesskey "V">
+<!ENTITY objecttabs.label "Montri langetojn de Flash kaj Ĝavo">
+<!ENTITY objecttabs.accesskey "M">
+<!ENTITY hideplaceholders.label "Kaŝi lokokupilojn de blokitaj elementoj">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Nombri filtriltrafojn">
+<!ENTITY counthits.accesskey "N">
+<!ENTITY sync.label "Sinkronigi agordojn de Adblock Plus">
+<!ENTITY sync.accesskey "S">
 <!ENTITY objecttab.title "Bloki">
 <!ENTITY objecttab.tooltip "Klaku ĉi tien por bloki ĉi tiun objekton per Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/eo/settings.dtd b/chrome/adblockplus.jar!/locale/eo/settings.dtd
deleted file mode 100644
index 1a2a638..0000000
--- a/chrome/adblockplus.jar!/locale/eo/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Agordoj de Adblock Plus">
-<!ENTITY filters.label "Filtriloj">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Aldoni filtrilon">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "Aldoni filtrilabonon">
-<!ENTITY addsubscription.accesskey "b">
-<!ENTITY synchsubscriptions.label "Ĝisdatigi ĉiujn abonojn">
-<!ENTITY synchsubscriptions.accesskey "d">
-<!ENTITY import.label "Importi filtrilojn">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Eksporti proprajn filtrilojn">
-<!ENTITY export.accesskey "p">
-<!ENTITY clearall.label "Forigi ĉiuj proprajn filtrilojn">
-<!ENTITY clearall.accesskey "o">
-<!ENTITY resethitcounts.label "Renuligi trafostatistikon">
-<!ENTITY resethitcounts.accesskey "t">
-<!ENTITY edit.label "Redakti">
-<!ENTITY edit.accesskey "R">
-<!ENTITY cut.label "Eltondi">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Kopii">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Alglui">
-<!ENTITY paste.accesskey "A">
-<!ENTITY remove.label "Forviŝi">
-<!ENTITY remove.accesskey "v">
-<!ENTITY menu.find.label "Serĉi">
-<!ENTITY menu.find.accesskey "S">
-<!ENTITY menu.findagain.label "Serĉi denove">
-<!ENTITY menu.findagain.accesskey "e">
-<!ENTITY view.label "Vidi">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Ordigi laŭ">
-<!ENTITY sort.accesskey "O">
-<!ENTITY sort.none.label "Nenio">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "Ordigo A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ordigo Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opcioj">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Ebligi Adblock Plus">
-<!ENTITY enable.accesskey "c">
-<!ENTITY showintoolbar.label "Vidigi en ilobreto">
-<!ENTITY showintoolbar.accesskey "i">
-<!ENTITY showinstatusbar.label "Vidigi en statstrio">
-<!ENTITY showinstatusbar.accesskey "g">
-<!ENTITY objecttabs.label "Montri langetojn de Flash kaj Ĝavo">
-<!ENTITY objecttabs.accesskey "M">
-<!ENTITY collapse.label "Maletendi blokitajn elementojn">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Sinkronigi agordojn de Adblock Plus">
-<!ENTITY sync.accesskey "S">
-<!ENTITY help.label "Helpo">
-<!ENTITY help.accesskey "h">
-<!ENTITY gettingStarted.label "Unuaj paŝoj">
-<!ENTITY gettingStarted.accesskey "u">
-<!ENTITY faq.label "Oftaj demandoj">
-<!ENTITY faq.accesskey "O">
-<!ENTITY filterdoc.label "Krei filtrilojn por Adblock Plus">
-<!ENTITY filterdoc.accesskey "K">
-<!ENTITY about.label "Pri Adblock Plus">
-<!ENTITY about.accesskey "p">
-<!ENTITY description "La sekvontaj filtriloj determinas, kiuj adresoj estu blokataj kaj kiuj estu permesataj:">
-<!ENTITY filter.column "Filtrilregulo">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Malrapidaj filtriloj">
-<!ENTITY slow.accesskey "m">
-<!ENTITY enabled.column "Ebligita">
-<!ENTITY enabled.accesskey "i">
-<!ENTITY hitcount.column "Trafoj">
-<!ENTITY hitcount.accesskey "T">
-<!ENTITY lasthit.column "Lasta trafo">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Redakti filtrilon">
-<!ENTITY context.resethitcount.label "Remeti trafostatistikon por filtrilo">
-<!ENTITY context.synchsubscription.label "Ĝisdatigi abonon nun">
-<!ENTITY context.editsubscription.label "Redakti abonon">
-<!ENTITY context.moveup.label "Movi filtrilon supren">
-<!ENTITY context.movedown.label "Movi filtrilon malsupren">
-<!ENTITY context.movegroupup.label "Movi grupon supren">
-<!ENTITY context.movegroupdown.label "Movi grupon malsupren">
-<!ENTITY context.enable.label "Ŝalti">
-<!ENTITY context.disable.label "Malŝalti">
-<!ENTITY apply.label "Apliki">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "Filtrilabono">
diff --git a/chrome/adblockplus.jar!/locale/eo/sidebar.dtd b/chrome/adblockplus.jar!/locale/eo/sidebar.dtd
index fe9c0dc..be31dbb 100644
--- a/chrome/adblockplus.jar!/locale/eo/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/eo/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtrilo">
 <!ENTITY state.label "Stato">
 <!ENTITY size.label "Grandeco">
+<!ENTITY filterSource.label "Fonto de la filtrilo">
 <!ENTITY docDomain.label "Fonto de la dokumento">
 <!ENTITY docDomain.thirdParty "(de tria liveranto)">
 <!ENTITY docDomain.firstParty "(de unua liveranto)">
diff --git a/chrome/adblockplus.jar!/locale/eo/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/eo/subscriptionSelection.dtd
index bc8576d..a375d4f 100644
--- a/chrome/adblockplus.jar!/locale/eo/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/eo/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Aldoni filtrilabonon de Adblock Plus">
-<!ENTITY dialog.title.edit "Redakti filtrilabonon">
-<!ENTITY description.newInstall "Adblock Plus estos plej efektiva, se vi aldonas filtrilabonon. Filtrilabonojn estas senkoste disponigataj de uzantoj de Adblock Plus. La plej taŭga abono por via lingvo estas jam elektita.">
 <!ENTITY subscriptionSelector.label "Bonvolu elekti filtrilabonon el la listo:">
 <!ENTITY viewList.label "Rigardi filtrilojn">
 <!ENTITY visitHomepage.label "Viziti hejmpaĝon">
 <!ENTITY addSubscription.label "Redakti abonon">
-<!ENTITY saveSubscription.label "Konservi abonon">
-<!ENTITY other.label "Aldoni alian abonon">
-<!ENTITY other.accesskey "d">
 <!ENTITY list.download.failed "Adblock Plus malsukcesis akiri la liston de abonoj.">
 <!ENTITY list.download.retry "Ankoraŭfoje provi">
 <!ENTITY list.download.website "Rigardi retejon">
 <!ENTITY fromWeb.description "Bonvolu konfirmi, ke vi volas aldoni ĉi tiun filtrilabonon. Vi povas ŝanĝi la abonan titolon aŭ lokon antaŭ ol vi aldonas ĝin.">
-<!ENTITY edit.description "Vi povas ŝanĝi ka titolon aŭ lokon de la abono laŭ via bezono.">
-<!ENTITY external.description "Tio estas ekstera filtrilabono; ĝi estos ĝisdatigata per la etendaĵo, kiu kreis ĉi tiun abonon.">
 <!ENTITY title.label "Titolo de la abono:">
 <!ENTITY title.accesskey "t">
 <!ENTITY location.label "Loko de la listo de filtriloj:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "Aŭtomate ĝisdatigi filtrilojn">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Ĉi tiu filtrilabono estu uzata kun la filtrilabono "?1?", kiun vi ankoraŭ ne uzas.">
 <!ENTITY addMain.label "Ankaŭ aldoni filtrilabonon "?1?"">
 <!ENTITY addMain.accesskey "f">
diff --git a/chrome/adblockplus.jar!/locale/es-AR/filters.dtd b/chrome/adblockplus.jar!/locale/es-AR/filters.dtd
new file mode 100644
index 0000000..8a50c44
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/es-AR/filters.dtd
@@ -0,0 +1,91 @@
+<!ENTITY dialog.title "Preferencia de filtro de Adblock Plus">
+<!ENTITY subscriptions.tab.label "Suscripciones de filtro">
+<!ENTITY filters.tab.label "Filtros personalizados">
+<!ENTITY addSubscription.label "Agregar suscripción de filtros">
+<!ENTITY addSubscription.accesskey "p">
+<!ENTITY addSubscriptionAdd.label "Agregar">
+<!ENTITY addSubscriptionCancel.label "Cancelar">
+<!ENTITY addSubscriptionOther.label "Agregar un filtro de suscripción">
+<!ENTITY noSubscriptions.text "
+ Todavía no agregaste ninguna suscripción de filtro. Adblock Plus no bloqueará nada sin filtros. Por favor, andá a "Agregar suscripción de filtro" para
+ agregar alguno.
+">
+<!ENTITY subscription.homepage.label "Página principal">
+<!ENTITY subscription.external.label "Actualizada por otra extensión">
+<!ENTITY subscription.source.label "Lista de filtros">
+<!ENTITY subscription.enabled.label "Habilitado">
+<!ENTITY subscription.lastDownload.label "Última descarga:">
+<!ENTITY subscription.lastDownload.inProgress "Descargando...">
+<!ENTITY subscription.lastDownload.unknown "No disponible">
+<!ENTITY subscription.lastDownload.invalidURL "Falló, no es una dirección válida">
+<!ENTITY subscription.lastDownload.connectionError "Falló, error en la descarga">
+<!ENTITY subscription.lastDownload.invalidData "Falló, no es una lista de filtros válida">
+<!ENTITY subscription.lastDownload.checksumMismatch "Falló, el archivo checksum no coincide">
+<!ENTITY subscription.lastDownload.success "Se realizó exitosamente">
+<!ENTITY subscription.minVersion.warning "Esta suscripción de filtro necesita de una versión más reciente de Adblock Plus. Deberías actualizar a la última versión de Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Algunos filtros en esta suscripción están deshabilitados.">
+<!ENTITY subscription.disabledFilters.enable "Habilitar filtros deshabilitados">
+<!ENTITY subscription.actions.label "Acciones">
+<!ENTITY subscription.update.label "Actualizar filtros">
+<!ENTITY subscription.editTitle.label "Editar título">
+<!ENTITY subscription.delete.label "Eliminar">
+<!ENTITY subscription.showHideFilters.label "Mostrar/ocultar filtros">
+<!ENTITY subscription.moveUp.label "Subir">
+<!ENTITY subscription.moveDown.label "Bajar">
+<!ENTITY acceptableAds.label "Permitir publicidad no hostigadora">
+<!ENTITY acceptableAds.accesskey "h">
+<!ENTITY readMore.label "Leer más">
+<!ENTITY addGroup.label "Agregar grupo de filtros">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+ Todavía no tenés ningún filtro personalizado.
+">
+<!ENTITY addFilter.label "Agregar filtro">
+<!ENTITY addFilter.accesskey "o">
+<!ENTITY filter.actions.label "Acciones de filtro">
+<!ENTITY filter.edit.label "Editar">
+<!ENTITY filter.cut.label "Cortar">
+<!ENTITY filter.copy.label "Copiar">
+<!ENTITY filter.paste.label "Pegar">
+<!ENTITY filter.delete.label "Eliminar">
+<!ENTITY filter.selectAll.label "Seleccionar todo">
+<!ENTITY filter.resetHitCounts.label "Restablecer estadísticas de uso">
+<!ENTITY filter.moveUp.label "Subir">
+<!ENTITY filter.moveDown.label "Bajar">
+<!ENTITY viewMenu.label "Ver">
+<!ENTITY filter.column "Regla de filtro">
+<!ENTITY filter.accesskey "f">
+<!ENTITY slow.column "Filtros lentos">
+<!ENTITY slow.accesskey "n">
+<!ENTITY enabled.column "Habilitado">
+<!ENTITY enabled.accesskey "H">
+<!ENTITY hitcount.column "Veces usado">
+<!ENTITY hitcount.accesskey "u">
+<!ENTITY lasthit.column "Última vez usado">
+<!ENTITY lasthit.accesskey "l">
+<!ENTITY sort.label "Ordenar por">
+<!ENTITY sort.accesskey "O">
+<!ENTITY sort.none.label "Desordenado">
+<!ENTITY sort.none.accesskey "D">
+<!ENTITY sort.ascending.label "Ordenar de la "A" a la "Z"">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordenar de la "Z" a la "A"">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Necesitás seleccionar un grupo de filtros antes de que sus filtros puedan ser visualizados.">
+<!ENTITY noFiltersInGroup.text "El grupo seleccionado está vacío">
+<!ENTITY filters.remove.warning "¿Estás seguro que querés quitar todos los filtros seleccionados?">
+<!ENTITY backupButton.label "Resguardar y restaurar">
+<!ENTITY backupButton.accesskey "R">
+<!ENTITY backup.label "Crear nuevo resguardo">
+<!ENTITY restore.default.label "¿Restaurar resguardo del?1?">
+<!ENTITY restore.own.label "Restaurar tu propio resguardo">
+<!ENTITY backup.complete.title "Todos los filtros y suscripciones">
+<!ENTITY backup.custom.title "Solamente filtros personalizados">
+<!ENTITY backup.error "Hubo un error al escribir filtros al archivo. Asegurate de que el archivo no esté protegido contra escritura o siendo usado por otro programa.">
+<!ENTITY restore.error "No se pudo procesar los datos del archivo. ¿Este es un archivo de resguardo de Adblock Plus?">
+<!ENTITY restore.complete.warning "Todas tus preferencias de filtros serán reemplazadas por los contenidos del archivo seleccionado. ¿Querés continuar?">
+<!ENTITY restore.custom.warning "Todos tus filtros personalizados serán reemplazados por los contenidos del archivo seleccionado. ¿Querés continuar?">
+<!ENTITY restore.minVersion.warning "Advertencia: este archivo fue creado por una versión más reciente de Adblock Plus. Deberías actualizarte a la última versión de Adblock Plus antes de restaurar este archivo.">
+<!ENTITY find.label "Buscar">
+<!ENTITY find.accesskey "b">
+<!ENTITY close.label "Cerrar">
diff --git a/chrome/adblockplus.jar!/locale/es-AR/firstRun.dtd b/chrome/adblockplus.jar!/locale/es-AR/firstRun.dtd
new file mode 100644
index 0000000..73ca310
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/es-AR/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Instalación de Adblock Plus completa">
+<!ENTITY confirmation "
+ Gracias por instalar Adblock Plus. A partir de este momento, las publicidades serán bloqueadas.
+ ¡A disfrutar!">
+<!ENTITY advancedSection "Opciones avanzadas">
+<!ENTITY listSelection1 "
+ La siguiente lista de filtros fue configurada para bloquear publicidad:
+">
+<!ENTITY noList "Sin lista de filtros">
+<!ENTITY visitHomepage.label "Visitar la página web de la lista">
+<!ENTITY acceptableAds "
+ Adblock Plus también fue configurado para permitir publicidad no hostigadora.
+">
+<!ENTITY readMore.label "Leer más acerca de esto">
+<!ENTITY listSelection2 "
+ Podés cambiar esta selección en cualquier momento, en las [link]Preferencias de filtro[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/es-AR/global.properties b/chrome/adblockplus.jar!/locale/es-AR/global.properties
index 5b4f08f..1c998fc 100644
--- a/chrome/adblockplus.jar!/locale/es-AR/global.properties
+++ b/chrome/adblockplus.jar!/locale/es-AR/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? de un total de ?2?
 blocked_count_addendum=(también en la lista segura: ?1?, oculta: ?2?)
 no_blocking_suggestions=No hay elementos bloqueables en la página actual
 whitelisted_page=Adblock Plus fue deshabilitado para la página actual
-whitelist_description=Mis reglas de excepción
-filterlist_description=Mis reglas de bloqueo de publicidad
-invalid_description=Mis reglas inválidas
-elemhide_description=Mis reglas de ocultamiento de elementos
-subscription_description=Suscripción de filtro:
-subscription_wrong_version=Algunos filtros en esta suscripción requieren que Adblock Plus ?1? ¡funcione bien!
-subscription_source=Fuente:
-subscription_status=Estado:
-subscription_status_autodownload=Actualizado automáticamente
-subscription_status_manualdownload=Actualizado manualmente
-subscription_status_externaldownload=Actualizado externamente (otra extensión)
-subscription_status_lastdownload=Última descarga:
-subscription_status_lastdownload_inprogress=Descargando...
-subscription_status_lastdownload_unknown=No disponible
+newGroup_title=Nuevo grupo de filtros
+whitelistGroup_title=Reglas de excepción
+blockingGroup_title=Reglas de bloqueo de publicidad
+elemhideGroup_title=Reglas de elementos colapsados
 remove_subscription_warning=¿Estás seguro de querer quitar esta suscripción?
-import_filters_wrong_version=Advertencia: algunos filtros en esta lista requieren que Adblock Plus ?1? ¡funcione bien! Quizás deberías actualizarte al último lanzamiento de Adblock Plus antes de importar esta lista.
-import_filters_warning=¿Querés reemplazar tus filtros actuales o sumar los nuevos filtros al final de la lista?
-import_filters_title=Importar filtros
-export_filters_title=Exportar filtros
-invalid_filters_file=Este no es un archivo válido de filtros de Adblock Plus.
-filters_write_error=Hubo un error al escribir filtros al archivo. Asegurate de que el archivo no esté protegido contra escrituras, o que no esté siendo utilizado por otro programa.
-clearall_warning=¿Estás seguro de querer quitar todos los filtros de la lista?
-resethitcounts_warning=¿Estás seguro de querer restablecer los contadores a cero para todos los filtros? ¡Esta operación no se puede deshacer!
-resethitcounts_selected_warning=¿Estás seguro de querer restablecer los contadores a cero para los filtros seleccionados? ¡Esta operación no se puede deshacer!
+clearStats_warning=Esto restablecerá todas las estadísticas de conteo y las deshabilitará. ¿Querés continuar?
 filter_regexp_tooltip=Este filtro o bien es una expresión constante, o bien es demasiado corto para ser optimizado. Demasiados filtros similares podrían ralentizar tu navegación web.
 filter_elemhide_duplicate_id=Se puede especificar solamente un identificador del elemento a ser ocultado.
 filter_elemhide_nocriteria=No se especificó el criterio para reconocer el elemento a ser ocultado
-subscription_notAdded_warning=No agregaste una suscripción de filtros. Sin una suscripción de filtros vas a tener que ingresar los filtros a Adblock Plus manualmente.
-subscription_notAdded_warning_addendum=¿Querés continuar?
 subscription_invalid_location=La ubicación de lista de filtros no es válida, o no es válido el nombre de archivo.
-synchronize_invalid_url=Falló, no es una dirección válida
-synchronize_connection_error=Falló, error en la descarga
-synchronize_invalid_data=Falló, no es una lista de filtros válida
-synchronize_checksum_mismatch=Falló, el archivo checksum no coincide
-synchronize_ok=Se realizó exitosamente
-overwrite=Sobreescribir
-append=Sumar
-new_filter_group_title=Nuevo filtro
 type_label_other=otro
 type_label_script=script
 type_label_image=imagen
@@ -56,15 +28,12 @@ type_label_object=objeto
 type_label_subdocument=marco
 type_label_document=documento
 type_label_elemhide=oculto
-type_label_xbl=solicitud XML
-type_label_ping=rebote de enlace
+type_label_popup=ventana emergente
 type_label_xmlhttprequest=petición XML
 type_label_object_subrequest=subpetición de objeto
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=fuente
 fennec_status_enabled=Adblock Plus está habilitado.
 fennec_status_disabled=Adblock Plus está deshabilitado.
 fennec_status_enabled_site=Adblock Plus está habilitado en ?1?.
 fennec_status_disabled_site=Adblock Plus está deshabilitado en ?1?.
-sync_engine_title=Datos de Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/es-AR/overlay.dtd b/chrome/adblockplus.jar!/locale/es-AR/overlay.dtd
index 118f05d..20d6361 100644
--- a/chrome/adblockplus.jar!/locale/es-AR/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/es-AR/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Preferencias de Adblock Plus">
 <!ENTITY menuitem.accesskey "P">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: elementos bloqueables">
 <!ENTITY context.image.label "Adblock Plus: bloquear imagen">
 <!ENTITY context.object.label "Adblock Plus: bloquear objeto">
 <!ENTITY context.frame.label "Adblock Plus: bloquear marco">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Elementos bloqueables en la página actual">
 <!ENTITY sendReport.label "Informar de problemas en esta página">
 <!ENTITY sendReport.accesskey "r">
-<!ENTITY settings.label "Preferencias">
-<!ENTITY settings.accesskey "P">
+<!ENTITY filters.label "Preferencias de filtro">
+<!ENTITY filters.accesskey "f">
 <!ENTITY opensidebar.label "Abrir elementos bloqueables">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Cerrar elementos bloqueables">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Deshabilitar en ?1?">
 <!ENTITY whitelist.page.label "Deshabilitar solamente en esta página">
 <!ENTITY disable.label "Deshabilitar en todos lados">
-<!ENTITY recommend.label "Recomendanos en Facebook">
+<!ENTITY options.label "Opciones">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Contribuí a Adblock Plus">
+<!ENTITY showintoolbar.label "Mostrar en la barra de herramientas">
+<!ENTITY showintoolbar.accesskey "h">
+<!ENTITY showinstatusbar.label "Mostrar en la barra de estado">
+<!ENTITY showinstatusbar.accesskey "e">
+<!ENTITY showinaddonbar.label "Mostrar en la barra de complementos">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Mostrar pestañas en Flash y Java">
+<!ENTITY objecttabs.accesskey "p">
+<!ENTITY hideplaceholders.label "Colapsar elementos bloqueados">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Veces usado">
+<!ENTITY counthits.accesskey "u">
+<!ENTITY sync.label "Sincronizar la configuración de Adblock Plus">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Bloquear">
 <!ENTITY objecttab.tooltip "Clic acá para bloquear este objeto con Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/es-AR/settings.dtd b/chrome/adblockplus.jar!/locale/es-AR/settings.dtd
deleted file mode 100644
index 33ffdd3..0000000
--- a/chrome/adblockplus.jar!/locale/es-AR/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Preferencias de Adblock Plus">
-<!ENTITY filters.label "Filtros">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Agregar filtro">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "Agregar suscripción de filtros">
-<!ENTITY addsubscription.accesskey "s">
-<!ENTITY synchsubscriptions.label "Actualizar todas las suscripciones">
-<!ENTITY synchsubscriptions.accesskey "c">
-<!ENTITY import.label "Importar filtros">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Exportar filtros personalizados">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "Quitar todos los filtros personalizados">
-<!ENTITY clearall.accesskey "Q">
-<!ENTITY resethitcounts.label "Restablecer estadísticas de uso">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Editar">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Cortar">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Copiar">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Pegar">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Eliminar">
-<!ENTITY remove.accesskey "l">
-<!ENTITY menu.find.label "Buscar">
-<!ENTITY menu.find.accesskey "B">
-<!ENTITY menu.findagain.label "Buscar de nuevo">
-<!ENTITY menu.findagain.accesskey "n">
-<!ENTITY view.label "Ver">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Ordenar por">
-<!ENTITY sort.accesskey "O">
-<!ENTITY sort.none.label "Desordenado">
-<!ENTITY sort.none.accesskey "D">
-<!ENTITY sort.ascending.label "Ordenar de la "A" a la "Z"">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ordenar de la "Z" a la "A"">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opciones">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Habilitar Adblock Plus">
-<!ENTITY enable.accesskey "k">
-<!ENTITY showintoolbar.label "Mostrar en la barra de herramientas">
-<!ENTITY showintoolbar.accesskey "h">
-<!ENTITY showinstatusbar.label "Mostrar en la barra de estado">
-<!ENTITY showinstatusbar.accesskey "e">
-<!ENTITY objecttabs.label "Mostrar pestañas en Flash y Java">
-<!ENTITY objecttabs.accesskey "p">
-<!ENTITY collapse.label "Colapsar elementos bloqueados">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Sincronizar la configuración de Adblock Plus">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Ayuda">
-<!ENTITY help.accesskey "y">
-<!ENTITY gettingStarted.label "Cómo comenzar">
-<!ENTITY gettingStarted.accesskey "C">
-<!ENTITY faq.label "Preguntas frecuentes">
-<!ENTITY faq.accesskey "P">
-<!ENTITY filterdoc.label "Escribir filtros de Adblock Plus">
-<!ENTITY filterdoc.accesskey "E">
-<!ENTITY about.label "Acerca de Adblock Plus">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Los siguientes filtros determinan qué direcciones deberían bloquearse y cuáles deberían permitirse:">
-<!ENTITY filter.column "Regla de filtro">
-<!ENTITY filter.accesskey "f">
-<!ENTITY slow.column "Filtros lentos">
-<!ENTITY slow.accesskey "n">
-<!ENTITY enabled.column "Habilitado">
-<!ENTITY enabled.accesskey "H">
-<!ENTITY hitcount.column "Veces usado">
-<!ENTITY hitcount.accesskey "u">
-<!ENTITY lasthit.column "Última vez usado">
-<!ENTITY lasthit.accesskey "l">
-<!ENTITY context.edit.label "Editar filtro">
-<!ENTITY context.resethitcount.label "Restablecer estadísticas de uso del filtro">
-<!ENTITY context.synchsubscription.label "Actualizar suscripción ahora">
-<!ENTITY context.editsubscription.label "Editar suscripción">
-<!ENTITY context.moveup.label "Subir filtro">
-<!ENTITY context.movedown.label "Bajar filtro">
-<!ENTITY context.movegroupup.label "Subir grupo">
-<!ENTITY context.movegroupdown.label "Bajar grupo">
-<!ENTITY context.enable.label "Habilitar">
-<!ENTITY context.disable.label "Deshabilitar">
-<!ENTITY apply.label "Aplicar">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "Suscripción de filtros">
diff --git a/chrome/adblockplus.jar!/locale/es-AR/sidebar.dtd b/chrome/adblockplus.jar!/locale/es-AR/sidebar.dtd
index 7ab5f6c..aa738dd 100644
--- a/chrome/adblockplus.jar!/locale/es-AR/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/es-AR/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtro">
 <!ENTITY state.label "Estado">
 <!ENTITY size.label "Tamaño">
+<!ENTITY filterSource.label "Fuente de filtro">
 <!ENTITY docDomain.label "Fuente del documento">
 <!ENTITY docDomain.thirdParty "(de terceros)">
 <!ENTITY docDomain.firstParty "(propios)">
diff --git a/chrome/adblockplus.jar!/locale/es-AR/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/es-AR/subscriptionSelection.dtd
index 7a46ff8..d78607a 100644
--- a/chrome/adblockplus.jar!/locale/es-AR/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/es-AR/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Agregar suscripción de filtro de Adblock Plus">
-<!ENTITY dialog.title.edit "Editar suscripción de filtro">
-<!ENTITY description.newInstall "Para que Adblock Plus sea más efectivo, tendrías que agregar una suscripción de filtros. Estas suscripciones son ofrecidas por otros usuarios de Adblock Plus, gratuitamente. Las suscripciones más adecuadas para tu idioma ya fueron seleccionadas.">
 <!ENTITY subscriptionSelector.label "Por favor, seleccioná una suscripción de la lista:">
 <!ENTITY viewList.label "Ver filtros">
 <!ENTITY visitHomepage.label "Visitar la página oficial">
 <!ENTITY addSubscription.label "Agregar suscripción">
-<!ENTITY saveSubscription.label "Guardar suscripción">
-<!ENTITY other.label "Agregar un filtro de suscripción">
-<!ENTITY other.accesskey "f">
 <!ENTITY list.download.failed "Hubo un error al recuperar la lista de suscripciones.">
 <!ENTITY list.download.retry "Intentá otra vez">
 <!ENTITY list.download.website "Ver sitio web">
 <!ENTITY fromWeb.description "Por favor, confirmá que querés agregar esta suscripción de filtros. Podés cambiar el título de la suscripción o la ubicación antes de agregarla.">
-<!ENTITY edit.description "Podés cambiar el título de la suscripción o la ubicación, de ser necesario.">
-<!ENTITY external.description "Esta es una suscripción externa de filtros. La lista de filtros será actualizada por la extensión que creó esta suscripción.">
 <!ENTITY title.label "Título de suscripción:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Ubicación de la lista de filtros:">
 <!ENTITY location.accesskey "U">
-<!ENTITY autodownload.label "Actualizar automáticamente">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Esta suscripción está diseñada para ser usada conjuntamente con la suscripción de filtros "?1?", que aún no agregaste.">
 <!ENTITY addMain.label "Agregá también la suscripción de filtros "?1?".">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/about.dtd b/chrome/adblockplus.jar!/locale/es-ES/about.dtd
index 54febe0..c0a20c3 100644
--- a/chrome/adblockplus.jar!/locale/es-ES/about.dtd
+++ b/chrome/adblockplus.jar!/locale/es-ES/about.dtd
@@ -1,8 +1,6 @@
 <!ENTITY dialog.title "Acerca de Adblock Plus">
 <!ENTITY version.title "Versión">
-<!ENTITY description "Adblock Plus le permite decidir lo que quiere ver en la web. 
-	Ya no tiene que seguir descargando todos los anuncios que le  
-	molestan, si no los quiere ver - ¡Dígaselo a Adblock Plus!">
+<!ENTITY description "Adblock Plus le permite decidir lo que quiere ver en la web. Ya no tiene que seguir descargando todos los anuncios que le molestan, si no los quiere ver - ¡Dígaselo a Adblock Plus!">
 <!ENTITY homepage.label "Página de inicio de Adblock Plus:">
 <!ENTITY author.label "Autor:">
 <!ENTITY contributors.label "Colaboradores:">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/composer.dtd b/chrome/adblockplus.jar!/locale/es-ES/composer.dtd
index 6a4ba4c..f2c987d 100644
--- a/chrome/adblockplus.jar!/locale/es-ES/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/es-ES/composer.dtd
@@ -6,15 +6,15 @@
 <!ENTITY groupDisabled.warning "El grupo de filtros "?1?" al que se va añadir este filtro está desactivado. Puede añadir el filtro, pero éste no se aplicará a menos que [link]active el grupo de filtros[/link].">
 <!ENTITY filter.label "Nuevo filtro:">
 <!ENTITY filter.accesskey "N">
-<!ENTITY preferences.label "Mostrar filtros existentes...">
+<!ENTITY preferences.label "Mostrar filtros existentes…">
 <!ENTITY preferences.accesskey "M">
 <!ENTITY type.filter.label "Filtro de bloqueo">
 <!ENTITY type.filter.accesskey "b">
 <!ENTITY type.whitelist.label "Regla de excepción">
 <!ENTITY type.whitelist.accesskey "x">
 <!ENTITY pattern.label "Buscar patrón">
-<!ENTITY pattern.explanation "El patrón puede ser cualquier parte de la dirección, el carácter * actúa como comodín. El filtro sólo se aplicará a las direcciones que se correspondan con el patrón.">
-<!ENTITY regexp.warning "El patrón que ha introducido se interpretará como expresión regular. Si usa muchas expresiones regulares su navegación podría volverse más lenta. Si no quería usar una expresión regular, añada un carácter * al final del patrón.">
+<!ENTITY pattern.explanation "El patrón puede ser cualquier parte de la dirección, el carácter "*" actúa como comodín. El filtro sólo se aplicará a las direcciones que se correspondan con el patrón.">
+<!ENTITY regexp.warning "El patrón que ha introducido se interpretará como expresión regular. Si usa muchas expresiones regulares su navegación podría volverse más lenta. Si no quería usar una expresión regular, añada un carácter "*" al final del patrón.">
 <!ENTITY shortpattern.warning "El patrón que ha introducido es demasiado corto para ser optimizado, si usa muchos patrones como este su navegación podría volverse más lenta. Se le recomienda elegir una cadena más larga para este filtro.">
 <!ENTITY match.warning "El patrón introducido no coincide con la dirección a bloquear o incluir en la lista blanca, y no tendrá ningún efecto sobre ella.">
 <!ENTITY custom.pattern.label "Personalizar:">
@@ -34,7 +34,7 @@
 <!ENTITY firstParty.accesskey "d">
 <!ENTITY thirdParty.label "Sólo para contenidos de terceros">
 <!ENTITY thirdParty.accesskey "t">
-<!ENTITY matchCase.label "Coincidir mayús/minús">
+<!ENTITY matchCase.label "Coincidir MAY/minús">
 <!ENTITY matchCase.accesskey "C">
 <!ENTITY types.label "Aplicar a estos tipos:">
 <!ENTITY selectAllTypes.label "Seleccionar todos">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/filters.dtd b/chrome/adblockplus.jar!/locale/es-ES/filters.dtd
new file mode 100644
index 0000000..7b97eb9
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/es-ES/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Preferencias de filtros de Adblock Plus">
+<!ENTITY subscriptions.tab.label "Suscripciones de filtros">
+<!ENTITY filters.tab.label "Filtros personalizados">
+<!ENTITY addSubscription.label "Añadir suscripción de filtros">
+<!ENTITY addSubscription.accesskey "s">
+<!ENTITY addSubscriptionAdd.label "Añadir">
+<!ENTITY addSubscriptionCancel.label "Cancelar">
+<!ENTITY addSubscriptionOther.label "Añadir otra suscripción">
+<!ENTITY noSubscriptions.text "Aún no ha añadido ninguna suscripción de filtros. Adblock Plus no bloquea nada si no tiene filtros, por favor use "Añadir suscripción de filtros" para añadir alguna.">
+<!ENTITY subscription.homepage.label "Página de inicio">
+<!ENTITY subscription.external.label "Actualizado por otra extensión">
+<!ENTITY subscription.source.label "Lista de filtros">
+<!ENTITY subscription.enabled.label "Activada">
+<!ENTITY subscription.lastDownload.label "Última descarga:">
+<!ENTITY subscription.lastDownload.inProgress "Descargando…">
+<!ENTITY subscription.lastDownload.unknown "N/D">
+<!ENTITY subscription.lastDownload.invalidURL "Error: no es una dirección válida">
+<!ENTITY subscription.lastDownload.connectionError "Error: error de descarga">
+<!ENTITY subscription.lastDownload.invalidData "Error: lista de filtros no válida">
+<!ENTITY subscription.lastDownload.checksumMismatch "Error, el checksum no coincide">
+<!ENTITY subscription.lastDownload.success "Correcto">
+<!ENTITY subscription.minVersion.warning "Esta suscripción de filtros necesita una versión más reciente de Adblock Plus, debería actualizar a la última versión de Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "En esta suscripción hay filtros desactivados.">
+<!ENTITY subscription.disabledFilters.enable "Activar filtros desactivados">
+<!ENTITY subscription.actions.label "Acciones">
+<!ENTITY subscription.update.label "Actualizar filtros">
+<!ENTITY subscription.editTitle.label "Editar título">
+<!ENTITY subscription.delete.label "Eliminar">
+<!ENTITY subscription.showHideFilters.label "Mostrar/ocultar filtros">
+<!ENTITY subscription.moveUp.label "Subir">
+<!ENTITY subscription.moveDown.label "Bajar">
+<!ENTITY acceptableAds.label "Permitir publicidad no intrusiva">
+<!ENTITY acceptableAds.accesskey "P">
+<!ENTITY readMore.label "Leer más">
+<!ENTITY addGroup.label "Añadir grupo de filtros">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "Aún no tiene ningún filtro personalizado.">
+<!ENTITY addFilter.label "Añadir filtro">
+<!ENTITY addFilter.accesskey "ñ">
+<!ENTITY filter.actions.label "Acciones de filtros">
+<!ENTITY filter.edit.label "Editar">
+<!ENTITY filter.cut.label "Cortar">
+<!ENTITY filter.copy.label "Copiar">
+<!ENTITY filter.paste.label "Pegar">
+<!ENTITY filter.delete.label "Eliminar">
+<!ENTITY filter.selectAll.label "Seleccionar todos">
+<!ENTITY filter.resetHitCounts.label "Reiniciar estadísticas de uso">
+<!ENTITY filter.moveUp.label "Subir">
+<!ENTITY filter.moveDown.label "Bajar">
+<!ENTITY viewMenu.label "Ver">
+<!ENTITY filter.column "Regla de filtrado">
+<!ENTITY filter.accesskey "R">
+<!ENTITY slow.column "Filtros lentos">
+<!ENTITY slow.accesskey "e">
+<!ENTITY enabled.column "Activado">
+<!ENTITY enabled.accesskey "v">
+<!ENTITY hitcount.column "Contador">
+<!ENTITY hitcount.accesskey "C">
+<!ENTITY lasthit.column "Último uso">
+<!ENTITY lasthit.accesskey "u">
+<!ENTITY sort.label "Listar">
+<!ENTITY sort.accesskey "L">
+<!ENTITY sort.none.label "Sin ordenar">
+<!ENTITY sort.none.accesskey "S">
+<!ENTITY sort.ascending.label "Ordenar A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordenar Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Tiene que seleccionar un grupo de filtros para que se muestren sus filtros.">
+<!ENTITY noFiltersInGroup.text "El grupo seleccionado está vacío">
+<!ENTITY filters.remove.warning "¿Está seguro de querer eliminar todos los filtros seleccionados?">
+<!ENTITY backupButton.label "Copias de seguridad y restauración">
+<!ENTITY backupButton.accesskey "C">
+<!ENTITY backup.label "Crear nueva copia de seguridad">
+<!ENTITY restore.default.label "Restaurar copia de seguridad de ?1?">
+<!ENTITY restore.own.label "Restaurar copia de seguridad propia">
+<!ENTITY backup.complete.title "Todos los filtros y suscripciones">
+<!ENTITY backup.custom.title "Sólo los filtros personalizados">
+<!ENTITY backup.error "Se produjo un error al escribir filtros en el archivo. Asegúrese que el archivo no está protegido contra escritura o siendo utilizado por otra aplicación.">
+<!ENTITY restore.error "No se pudieron procesar los datos del archivo. ¿Es posible que no sea un archivo de copia de seguridad de Adblock Plus?">
+<!ENTITY restore.complete.warning "Todas sus preferencias de filtros se sustituirán por los contenidos del archivo seleccionado ¿Desea continuar?">
+<!ENTITY restore.custom.warning "Todas sus filtros personalizados se sustituirán por los contenidos del archivo seleccionado ¿Desea continuar?">
+<!ENTITY restore.minVersion.warning "Atención: el archivo se creó con una versión más reciente de Adblock Plus. Debería actualizar a la última versión de Adblock Plus antes de hacer una restauración desde este archivo.">
+<!ENTITY find.label "Buscar">
+<!ENTITY find.accesskey "B">
+<!ENTITY close.label "Cerrar">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/firstRun.dtd b/chrome/adblockplus.jar!/locale/es-ES/firstRun.dtd
new file mode 100644
index 0000000..8f0b1c8
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/es-ES/firstRun.dtd
@@ -0,0 +1,9 @@
+<!ENTITY dialog.title "Instalación de Adblock Plus completada">
+<!ENTITY confirmation "Gracias por instalar Adblock Plus. A partir de ahora se bloqueará la publicidad. Disfrútelo.">
+<!ENTITY advancedSection "Opciones avanzadas.">
+<!ENTITY listSelection1 "Para bloquear la publicidad se ha configurado la siguiente lista de filtros:">
+<!ENTITY noList "No hay lista de filtros">
+<!ENTITY visitHomepage.label "Visitar la página de la lista">
+<!ENTITY acceptableAds "También se ha configurado Adblock Plus para permitir publicidad no intrusiva.">
+<!ENTITY readMore.label "Leer más al respecto">
+<!ENTITY listSelection2 "Puede cambiar esta selección en cualquier momento en las [link]Preferencias de filtros[/link]">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/global.properties b/chrome/adblockplus.jar!/locale/es-ES/global.properties
index 32de33c..ee37b71 100644
--- a/chrome/adblockplus.jar!/locale/es-ES/global.properties
+++ b/chrome/adblockplus.jar!/locale/es-ES/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? de un total de ?2?
 blocked_count_addendum=(en lista blanca: ?1?, ocultos: ?2?)
 no_blocking_suggestions=No hay elementos que se puedan bloquear en la página actual
 whitelisted_page=Se ha deshabilitado Adblock Plus para la página actual
-whitelist_description=Mis reglas de excepción
-filterlist_description=Mis filtros de publicidad
-invalid_description=Mis filtros no válidos
-elemhide_description=Mis reglas de ocultación de elementos
-subscription_description=Suscripción de filtros:
-subscription_wrong_version=Algunos filtros de esta suscripción requieren Adblock Plus ?1? para funcionar correctamente.
-subscription_source=Fuente:
-subscription_status=Estado:
-subscription_status_autodownload=Actualizado automáticamente
-subscription_status_manualdownload=Actualizado manualmente
-subscription_status_externaldownload=Actualizado externamente (con otra extensión)
-subscription_status_lastdownload=Última descarga:
-subscription_status_lastdownload_inprogress=Descargando...
-subscription_status_lastdownload_unknown=N/D
+newGroup_title=Nuevo grupo de filtros
+whitelistGroup_title=Reglas de excepción
+blockingGroup_title=Reglas de bloqueo de publicidad
+elemhideGroup_title=Reglas de ocultación de elementos
 remove_subscription_warning=¿Está seguro de querer eliminar esta suscripción?
-import_filters_wrong_version=Advertencia: algunos de estos filtros de esta lista requieren Adblock Plus ?1? para funcionar correctamente. Probablemente debería actualizar a la última versión de Adblock Plus antes de importar esta lista.
-import_filters_warning=¿Desea reemplazar sus filtros actuales, o añadir los nuevos filtros al final de la lista?
-import_filters_title=Importar filtros
-export_filters_title=Exportar filtros
-invalid_filters_file=Archivo de filtros no válido para Adblock Plus.
-filters_write_error=Se produjo un error al escribir los filtros en el archivo. Compruebe que el archivo no está protegido contra escritura ni siendo usado por otro programa.
-clearall_warning=¿Está seguro de querer eliminar todos los filtros de la lista?
-resethitcounts_warning=¿Está seguro de querer restaurar a cero los contadores de todos los filtros? Esta operación no se puede deshacer.
-resethitcounts_selected_warning=¿Está seguro de querer restaurar a cero los contadores de los filtros seleccionados? Esta operación no se puede deshacer.
+clearStats_warning=Se reiniciarán todas las estadísticas de uso de filtros y se desactivarán dichas estadísticas de uso de filtros. ¿Desea continuar con la acción?
 filter_regexp_tooltip=Este filtro es una expresión regular o demasiado corto para ser optimizado. Demasiados filtros de este tipo podrían hacer más lenta su navegación.
 filter_elemhide_duplicate_id=Sólo puede especificarse una ID del elemento a ocultar
 filter_elemhide_nocriteria=No se especificó ningún criterio para identificar el elemento a ocultar
-subscription_notAdded_warning=No ha añadido ninguna suscripción de filtros. Sin ellas tendrá que ser usted el que añada manualmente filtros a Adblock Plus
-subscription_notAdded_warning_addendum=¿Quiere continuar?
 subscription_invalid_location=La dirección de la lista de filtros no es una URL ni una ruta de archivo válida.
-synchronize_invalid_url=Error: no es una dirección válida
-synchronize_connection_error=Error: error de descarga
-synchronize_invalid_data=Error: lista de filtros no válida
-synchronize_checksum_mismatch=Error, el checksum no coincide
-synchronize_ok=Correcto
-overwrite=Sobrescribir
-append=Añadir
-new_filter_group_title=Nuevo filtro
 type_label_other=otro
 type_label_script=script
 type_label_image=imagen
@@ -56,15 +28,12 @@ type_label_object=objeto
 type_label_subdocument=marco
 type_label_document=documento
 type_label_elemhide=escondido
-type_label_xbl=asociación XBL
-type_label_ping=ping de enlace
+type_label_popup=ventana emergente
 type_label_xmlhttprequest=solicitud XML
 type_label_object_subrequest=solicitud de objeto
-type_label_dtd=DTD
 type_label_media=audio/vídeo
 type_label_font=fuente
 fennec_status_enabled=Adblock Plus está activado.
 fennec_status_disabled=Adblock Plus está desactivado.
 fennec_status_enabled_site=Adblock Plus está activado en ?1?.
 fennec_status_disabled_site=Adblock Plus está desactivado en ?1?.
-sync_engine_title=Datos de Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/es-ES/overlay.dtd b/chrome/adblockplus.jar!/locale/es-ES/overlay.dtd
index 33ce194..b27a9dc 100644
--- a/chrome/adblockplus.jar!/locale/es-ES/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/es-ES/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: elementos bloqueables">
 <!ENTITY context.image.label "ABP - Bloquear imagen">
 <!ENTITY context.object.label "ABP - Bloquear objeto">
 <!ENTITY context.frame.label "ABP - Bloquear marco">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Elementos bloqueables en la página actual">
 <!ENTITY sendReport.label "Informar de un problema en esta página">
 <!ENTITY sendReport.accesskey "I">
-<!ENTITY settings.label "Preferencias">
-<!ENTITY settings.accesskey "P">
+<!ENTITY filters.label "Preferencias de filtros">
+<!ENTITY filters.accesskey "P">
 <!ENTITY opensidebar.label "Abrir ventana elementos bloqueables">
 <!ENTITY opensidebar.accesskey "v">
 <!ENTITY closesidebar.label "Cerrar ventana elementos bloqueables">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Desactivar en ?1?">
 <!ENTITY whitelist.page.label "Desactivar sólo en esta página">
 <!ENTITY disable.label "Desactivar globalmente">
-<!ENTITY recommend.label "Recomendarnos en Facebook">
+<!ENTITY options.label "Opciones">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Ayudar a Adblock Plus">
+<!ENTITY showintoolbar.label "Mostrar en la barra de herramientas">
+<!ENTITY showintoolbar.accesskey "b">
+<!ENTITY showinstatusbar.label "Mostrar en la barra de estado">
+<!ENTITY showinstatusbar.accesskey "d">
+<!ENTITY showinaddonbar.label "Mostrar en barra de extensiones">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Mostrar pestañas en Flash y Java">
+<!ENTITY objecttabs.accesskey "M">
+<!ENTITY hideplaceholders.label "Ocultar posicionadores de elementos bloqueados">
+<!ENTITY hideplaceholders.accesskey "O">
+<!ENTITY counthits.label "Contar usos de filtros">
+<!ENTITY counthits.accesskey "u">
+<!ENTITY sync.label "Sincronizar predisposiciones de Adblock Plus">
+<!ENTITY sync.accesskey "z">
 <!ENTITY objecttab.title "Bloquear">
 <!ENTITY objecttab.tooltip "Pulse aquí para bloquear este objeto con Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/sendReport.dtd b/chrome/adblockplus.jar!/locale/es-ES/sendReport.dtd
index 98f9054..d893bf4 100644
--- a/chrome/adblockplus.jar!/locale/es-ES/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/es-ES/sendReport.dtd
@@ -29,8 +29,8 @@
 <!ENTITY issues.openPreferences.label "Abrir preferencias de filtros">
 <!ENTITY issues.ownfilters.description "Algunos de los filtros aplicados en esta página son filtros personales de usuario. Por favor, desactive los filtros que podrían haber causado el problema:">
 <!ENTITY issues.ownfilters.disable.label "Desactivar filtro">
-<!ENTITY issues.disabledgroups.description "Están desactivadas las siguientes suscripciones de filtros / grupos de filtros, que podrían tener algún tipo de efecto sobre la página:">
-<!ENTITY issues.disabledgroups.enable.label "Activar suscripción de filtros / grupo de filtros">
+<!ENTITY issues.disabledgroups.description "Están desactivadas las siguientes suscripciones de filtros/grupos de filtros, que podrían tener algún tipo de efecto sobre la página:">
+<!ENTITY issues.disabledgroups.enable.label "Activar suscripción de filtros/grupo de filtros">
 <!ENTITY issues.disabledfilters.description "Están desactivados los siguientes filtros, que podrían tener algún tipo de efecto sobre la página:">
 <!ENTITY issues.disabledfilters.enable.label "Activar filtro">
 <!ENTITY issues.override.label "La configuración es correcta, puede seguir con el informe">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/settings.dtd b/chrome/adblockplus.jar!/locale/es-ES/settings.dtd
deleted file mode 100644
index 4d774cb..0000000
--- a/chrome/adblockplus.jar!/locale/es-ES/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Preferencias de Adblock Plus">
-<!ENTITY filters.label "Filtros">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Añadir filtro">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "Añadir suscripción de filtros">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "Actualizar todas las suscripciones">
-<!ENTITY synchsubscriptions.accesskey "z">
-<!ENTITY import.label "Importar filtros">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Exportar filtros">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "Eliminar los filtros personales">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "Reiniciar contadores de los filtros">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Editar">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Cortar">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Copiar">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Pegar">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Eliminar">
-<!ENTITY remove.accesskey "l">
-<!ENTITY menu.find.label "Buscar">
-<!ENTITY menu.find.accesskey "B">
-<!ENTITY menu.findagain.label "Repetir la búsqueda">
-<!ENTITY menu.findagain.accesskey "q">
-<!ENTITY view.label "Ver">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Listar">
-<!ENTITY sort.accesskey "L">
-<!ENTITY sort.none.label "Sin ordenar">
-<!ENTITY sort.none.accesskey "S">
-<!ENTITY sort.ascending.label "Ordenar A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ordenar Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opciones">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Activar Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Mostrar en la barra de herramientas">
-<!ENTITY showintoolbar.accesskey "h">
-<!ENTITY showinstatusbar.label "Mostrar en la barra de estado">
-<!ENTITY showinstatusbar.accesskey "d">
-<!ENTITY objecttabs.label "Mostrar pestañas en Flash y Java">
-<!ENTITY objecttabs.accesskey "M">
-<!ENTITY collapse.label "Contraer elementos bloqueados">
-<!ENTITY collapse.accesskey "C">
-<!ENTITY sync.label "Sincronizar predisposiciones de Adblock Plus">
-<!ENTITY sync.accesskey "z">
-<!ENTITY help.label "Ayuda">
-<!ENTITY help.accesskey "Y">
-<!ENTITY gettingStarted.label "Introducción a Adblock Plus">
-<!ENTITY gettingStarted.accesskey "I">
-<!ENTITY faq.label "Preguntas frecuentes">
-<!ENTITY faq.accesskey "P">
-<!ENTITY filterdoc.label "Escribir filtros para Adblock Plus">
-<!ENTITY filterdoc.accesskey "E">
-<!ENTITY about.label "Acerca de Adblock Plus">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Los siguientes filtros determinan que direcciones se bloquean y cuales se permiten:">
-<!ENTITY filter.column "Regla de filtrado">
-<!ENTITY filter.accesskey "R">
-<!ENTITY slow.column "Filtros lentos">
-<!ENTITY slow.accesskey "e">
-<!ENTITY enabled.column "Activado">
-<!ENTITY enabled.accesskey "v">
-<!ENTITY hitcount.column "Contador">
-<!ENTITY hitcount.accesskey "C">
-<!ENTITY lasthit.column "Último uso">
-<!ENTITY lasthit.accesskey "u">
-<!ENTITY context.edit.label "Editar filtro">
-<!ENTITY context.resethitcount.label "Reiniciar contador del filtro">
-<!ENTITY context.synchsubscription.label "Actualizar suscripción ahora">
-<!ENTITY context.editsubscription.label "Editar suscripción">
-<!ENTITY context.moveup.label "Subir">
-<!ENTITY context.movedown.label "Bajar">
-<!ENTITY context.movegroupup.label "Subir grupo">
-<!ENTITY context.movegroupdown.label "Bajar grupo">
-<!ENTITY context.enable.label "Activar">
-<!ENTITY context.disable.label "Desactivar">
-<!ENTITY apply.label "Aplicar">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "Suscripción de filtros">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/sidebar.dtd b/chrome/adblockplus.jar!/locale/es-ES/sidebar.dtd
index e6dfff6..c8f9da0 100644
--- a/chrome/adblockplus.jar!/locale/es-ES/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/es-ES/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtro">
 <!ENTITY state.label "Estado">
 <!ENTITY size.label "Tamaño">
+<!ENTITY filterSource.label "Origen filtro">
 <!ENTITY docDomain.label "Origen documento">
 <!ENTITY docDomain.thirdParty "(terceros)">
 <!ENTITY docDomain.firstParty "(dominio)">
diff --git a/chrome/adblockplus.jar!/locale/es-ES/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/es-ES/subscriptionSelection.dtd
index 0761f65..1afd007 100644
--- a/chrome/adblockplus.jar!/locale/es-ES/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/es-ES/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Añadir suscripción de filtros para Adblock Plus">
-<!ENTITY dialog.title.edit "Editar suscripción de filtros">
-<!ENTITY description.newInstall "Para conseguir la máxima eficacia de Adblock Plus debería añadir una suscripción de filtros. Estas suscripciones son elaboradas por usuarios de Adblock Plus sin ninguna contraprestación económica. Se han resaltado las suscripciones que puedan ser más adecuadas para su idioma.">
 <!ENTITY subscriptionSelector.label "Por favor elija una suscripción de filtros de la lista:">
 <!ENTITY viewList.label "Ver filtros">
 <!ENTITY visitHomepage.label "Visitar su página web">
 <!ENTITY addSubscription.label "Añadir suscripción">
-<!ENTITY saveSubscription.label "Guardar suscripción">
-<!ENTITY other.label "Añadir otra suscripción">
-<!ENTITY other.accesskey "o">
 <!ENTITY list.download.failed "Error al recuperar la lista de suscripciones.">
 <!ENTITY list.download.retry "Intentar de nuevo">
 <!ENTITY list.download.website "Ver página web">
 <!ENTITY fromWeb.description "Por favor, confirme que quiere añadir está suscripción de filtros. Puede cambiar su título o ubicación antes de añadirla.">
-<!ENTITY edit.description "Puede cambiar el título o ubicación de la suscripción si lo necesita.">
-<!ENTITY external.description "Se trata de una suscripción externa, la lista de filtros será actualizada por la extensión que creó la suscripción.">
 <!ENTITY title.label "Título de la suscripción:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Ubicación de la lista de filtros:">
 <!ENTITY location.accesskey "U">
-<!ENTITY autodownload.label "Actualizar automáticamente">
-<!ENTITY autodownload.accesskey "z">
-<!ENTITY supplementMessage "Esta suscripción de filtros está pensada para usarse junto a la suscripción "?1?" que usted aún no ha instalado.">
+<!ENTITY supplementMessage "Esta suscripción de filtros está pensada para usarse junto a la suscripción "?1?" que aún no ha instalado.">
 <!ENTITY addMain.label "Añadir también la suscripción "?1?".">
 <!ENTITY addMain.accesskey "ñ">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/about.dtd b/chrome/adblockplus.jar!/locale/es-MX/about.dtd
index 5cfffd2..d0a9e31 100644
--- a/chrome/adblockplus.jar!/locale/es-MX/about.dtd
+++ b/chrome/adblockplus.jar!/locale/es-MX/about.dtd
@@ -1,7 +1,7 @@
 <!ENTITY dialog.title "Sobre Adblock Plus">
 <!ENTITY version.title "Versión">
 <!ENTITY description "Adblock Plus te permite decidir lo que deseas ver en la web. No es necesario visualizar anuncios ni banners si no lo deseas - quitalos con Adblock Plus!">
-<!ENTITY homepage.label "Pagina principal de Adblock Plus:">
+<!ENTITY homepage.label "Página principal de Adblock Plus:">
 <!ENTITY author.label "Autor:">
 <!ENTITY contributors.label "Colaboradores:">
 <!ENTITY subscriptionAuthors.label "Filtro de autores suscritos:">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/filters.dtd b/chrome/adblockplus.jar!/locale/es-MX/filters.dtd
new file mode 100644
index 0000000..7c8ac15
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/es-MX/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Preferencias de Filtro de Adblock Plus">
+<!ENTITY subscriptions.tab.label "Suscripciones de Filtro">
+<!ENTITY filters.tab.label "Filtros personalizados">
+<!ENTITY addSubscription.label "Agregar suscripción de filtro">
+<!ENTITY addSubscription.accesskey "A">
+<!ENTITY addSubscriptionAdd.label "Agregar">
+<!ENTITY addSubscriptionCancel.label "Cancelar">
+<!ENTITY addSubscriptionOther.label "Agregar una suscripción diferente">
+<!ENTITY noSubscriptions.text "
+ Usted no ha agregado ninguna subscripción de filtros aun. Adblock Plus no bloqueará
+ nada sin filtros, por favor use "Agregar subscripción de filtros" para
+ agregar algunos.
+">
+<!ENTITY subscription.homepage.label "Página de inicio">
+<!ENTITY subscription.external.label "Actualizado por otro complemento">
+<!ENTITY subscription.source.label "Lista de filtros">
+<!ENTITY subscription.enabled.label "Activado">
+<!ENTITY subscription.lastDownload.label "Ultima descarga:">
+<!ENTITY subscription.lastDownload.inProgress "Descargando...">
+<!ENTITY subscription.lastDownload.unknown "N/D">
+<!ENTITY subscription.lastDownload.invalidURL "Fallo, no es una dirección valida">
+<!ENTITY subscription.lastDownload.connectionError "Fallo, La descarga ha fracasado">
+<!ENTITY subscription.lastDownload.invalidData "Fallo, no es una lista de filtros valida">
+<!ENTITY subscription.lastDownload.checksumMismatch "Fallo, comprobación(checksum) no concuerda">
+<!ENTITY subscription.lastDownload.success "Éxito">
+<!ENTITY subscription.minVersion.warning "Esta suscripción de filtro necesita una versión actualizada de Adblock Plus, debes actualizar tu versioon de Adblock Plus a la mas reciente.">
+<!ENTITY subscription.disabledFilters.warning "Algunos filtros en esta suscripción se encuentran desactivados.">
+<!ENTITY subscription.disabledFilters.enable "Activar filtros desactivados">
+<!ENTITY subscription.actions.label "Comportamiento/Acciones">
+<!ENTITY subscription.update.label "Actualizar filtros">
+<!ENTITY subscription.editTitle.label "Editar titulo">
+<!ENTITY subscription.delete.label "Eliminar">
+<!ENTITY subscription.showHideFilters.label "Mostrar/Ocultar filtros">
+<!ENTITY subscription.moveUp.label "Mover arriba">
+<!ENTITY subscription.moveDown.label "Mover abajo">
+<!ENTITY acceptableAds.label "Permitir publicidad no intrusiva">
+<!ENTITY acceptableAds.accesskey "v">
+<!ENTITY readMore.label "Leer mas">
+<!ENTITY addGroup.label "Agregar grupo de filtros">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+ Usted no tiene ningun filtro personalizado aún.
+">
+<!ENTITY addFilter.label "Agregar filtro">
+<!ENTITY addFilter.accesskey "f">
+<!ENTITY filter.actions.label "Comportamiento/Acción de filtros">
+<!ENTITY filter.edit.label "Editar">
+<!ENTITY filter.cut.label "Cortar">
+<!ENTITY filter.copy.label "Copiar">
+<!ENTITY filter.paste.label "Pegar">
+<!ENTITY filter.delete.label "Eliminar">
+<!ENTITY filter.selectAll.label "Seleccionar Todo">
+<!ENTITY filter.resetHitCounts.label "Reiniciar estadísticas">
+<!ENTITY filter.moveUp.label "Mover arriba">
+<!ENTITY filter.moveDown.label "Mover abajo">
+<!ENTITY viewMenu.label "Vista">
+<!ENTITY filter.column "Regla de filtro">
+<!ENTITY filter.accesskey "f">
+<!ENTITY slow.column "Filtros lentos">
+<!ENTITY slow.accesskey "e">
+<!ENTITY enabled.column "Habilitado">
+<!ENTITY enabled.accesskey "o">
+<!ENTITY hitcount.column "Contador">
+<!ENTITY hitcount.accesskey "C">
+<!ENTITY lasthit.column "Ultima visita">
+<!ENTITY lasthit.accesskey "U">
+<!ENTITY sort.label "Ordenar por">
+<!ENTITY sort.accesskey "p">
+<!ENTITY sort.none.label "Sin clasificar">
+<!ENTITY sort.none.accesskey "S">
+<!ENTITY sort.ascending.label "Ordernar de la A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordernar de la Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Necesitas seleccionar un grupo de filtros antes para que su contenido de filtros se puedan mostrar.">
+<!ENTITY noFiltersInGroup.text "El grupo seleccionado esta vacio">
+<!ENTITY filters.remove.warning "Realmente deseas quitar todos los filtros seleccionados?">
+<!ENTITY backupButton.label "Salvar/Copia de Seguridad y Restaurar">
+<!ENTITY backupButton.accesskey "S">
+<!ENTITY backup.label "Crear nueva copia de seguridad">
+<!ENTITY restore.default.label "Restaurar copia de seguridad desde ?1?">
+<!ENTITY restore.own.label "Restaurar copia de seguridad propia">
+<!ENTITY backup.complete.title "Todos los filtros y suscripciones">
+<!ENTITY backup.custom.title "Solo filtros personalizados">
+<!ENTITY backup.error "Hubo un error escribiendo los filtros en el archivo. Asegurese que el archivo no esta protegido o que no se encuentre en uso por otra aplicación.">
+<!ENTITY restore.error "Los datos de archivo no se pudierón procesar, tal vez esta no sea una copia de seguridad de Adblock Plus?">
+<!ENTITY restore.complete.warning "Todas tus preferencias de filtros se reemplazarán con el contenido del archivo seleccionado. Deseas continuar con el proceso?">
+<!ENTITY restore.custom.warning "Todos tus filtros personalizados serán reemplazados con el contenido del archivo seleccionado. Deseas continuar con el proceso?">
+<!ENTITY restore.minVersion.warning "Advertencia: el archivo ha sido creado con una versión mas actual de Adblock Plus. Deberias actualizar Adblock Plus a la versión mas reciente antes de restaurar desde este archivo.">
+<!ENTITY find.label "Buscar">
+<!ENTITY find.accesskey "b">
+<!ENTITY close.label "Cerrar">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/firstRun.dtd b/chrome/adblockplus.jar!/locale/es-MX/firstRun.dtd
new file mode 100644
index 0000000..1078750
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/es-MX/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Instalación de Adblock Plus completa">
+<!ENTITY confirmation "
+ Gracias por instalar Adblock Plus. Desde ahora los anuncios seran bloqueados.
+ Disfrutelo!">
+<!ENTITY advancedSection "Opciones avanzadas">
+<!ENTITY listSelection1 "
+ La siguiente lista de filtros ha sido configurada para bloquear publicidad:
+">
+<!ENTITY noList "No hay lista de filtros">
+<!ENTITY visitHomepage.label "Visitar la página web de la lista">
+<!ENTITY acceptableAds "
+ Adblock Plus tambien ha sido configurado para permitir publicidad no-instrusiva.
+">
+<!ENTITY readMore.label "Leer mas sobre esto">
+<!ENTITY listSelection2 "
+ Puede cambiar esta selección en cualquier momento en las [link]Preferencias de Filtro[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/global.properties b/chrome/adblockplus.jar!/locale/es-MX/global.properties
index 497b8b3..13425dd 100644
--- a/chrome/adblockplus.jar!/locale/es-MX/global.properties
+++ b/chrome/adblockplus.jar!/locale/es-MX/global.properties
@@ -1,53 +1,25 @@
 default_dialog_title=Adblock Plus
-action0_tooltip=Haga clic para abrir el menú contextual, click del medio para habilitar/deshabilitar.
-action1_tooltip=Clicke para abrir/cerrar elementos bloqueables, click del medio para habilitar/deshabilitar.
-action2_tooltip=Clicke para abrir las Preferencias, click del medio para habilitar/deshabilitar.
-action3_tooltip=Clicke para habilitar/deshabilitar Adblock Plus.
-disabled_tooltip=Adblock Plus esta deshabilitado.
-active_tooltip=Adblock Plus esta habilitado, ?1? suscripción(es) de filtro(s) y ?2? filtro(s) personalizado(s) en uso.
-whitelisted_tooltip=Adblock Plus esta deshabilitado en la pagina actual.
+action0_tooltip=Haga clic para abrir el menú contextual, click del medio para activar/desactivar.
+action1_tooltip=Clické para abrir/cerrar elementos bloqueables, click del medio para activar/desactivar.
+action2_tooltip=Clické para abrir las Preferencias, click del medio para activar/desactivar.
+action3_tooltip=Clické para activar/desactivar Adblock Plus.
+disabled_tooltip=Adblock Plus está desactivado.
+active_tooltip=Adblock Plus esta activado, ?1? suscripción(es) de filtro(s) y ?2? filtro(s) personalizado(s) en uso.
+whitelisted_tooltip=Adblock Plus esta desactivado en la página actual.
 blocked_count_tooltip=?1? del total de ?2?
 blocked_count_addendum=(tambien permitidos: ?1?, ocultos: ?2?)
-no_blocking_suggestions=No hay elementos bloqueables en la pagina actual
-whitelisted_page=Adblock Plus ha sido deshabilitado para la pagina actual
-whitelist_description=Mis Reglas de Excepción
-filterlist_description=Mis Reglas de Bloqueo de Publicidad
-invalid_description=Mis Reglas No Validas
-elemhide_description=Mis Reglas para Elementos Ocultos
-subscription_description=Suscripción de filtro:
-subscription_wrong_version=Algunos filtros en esta suscripción requieren Adblock Plus ?1? para funcionar apropiadamente.
-subscription_source=Fuente:
-subscription_status=Estado:
-subscription_status_autodownload=Actualización automática
-subscription_status_manualdownload=Actualización manual
-subscription_status_externaldownload=Actualización externa (otra extensión)
-subscription_status_lastdownload=Ultima descarga:
-subscription_status_lastdownload_inprogress=Descargando...
-subscription_status_lastdownload_unknown=N/D
+no_blocking_suggestions=No hay elementos bloqueables en la página actual
+whitelisted_page=Adblock Plus ha sido desactivado para la página actual
+newGroup_title=Nuevo grupo de filtros
+whitelistGroup_title=Reglas de excepción
+blockingGroup_title=Reglas de Bloqueo de Anuncios
+elemhideGroup_title=Reglas para Ocultar Elementos
 remove_subscription_warning=Realmente deseas quitar esta subscripción?
-import_filters_wrong_version=Advertencia: algunos filtros en esta lista requieren Adblock Plus ?1? para funcionar apropiadamente. Probablemente tengas que actualizar Adblock Plus a su ultima realización antes de importar esta lista.
-import_filters_warning=Deseas reemplazar tus filtros actuales o anexar los nuevos filtros al final de la lista?
-import_filters_title=Importar filtros
-export_filters_title=Exportar filtros
-invalid_filters_file=No es un archivo de filtro valido de Adblock Plus.
-filters_write_error=Hubo un error escribiendo los filtros al archivo. Asegurese de que el archivo no esta protegido contra escritura o abierto por otra aplicación.
-clearall_warning=Realmente desea quitar todos los filtros de la lista?
-resethitcounts_warning=Realmente desea restablecer el conteo de visitas para todos los filtros a cero? Tenga en cuenta: que esta operación no se puede deshacer.
-resethitcounts_selected_warning=Realmente desea reiniciar el contador de visitas para los filtros seleccionados a cero? Tenga en cuenta: que esta operación no se puede deshacer.
-filter_regexp_tooltip=Este filtro o bien es una expresión regular o es demasiado corto para ser optimizado. Demasiados de esos filtros podrian relentizar su experiencia al navegar.
+clearStats_warning=Esto reiniciará todas las estadísticas de filtros afectados y desactivará el conteo de accesos de los filtros. Deseas proceder?
+filter_regexp_tooltip=Este filtro o bien es una expresión regular o es demasiado corto para ser optimizado. Demasiados de estos filtros podrian relentizar su experiencia al navegar.
 filter_elemhide_duplicate_id=Solo una ID de el elemento oculto puede ser especificado
 filter_elemhide_nocriteria=No hay criterios específicos para reconocer el elemento que se oculta
-subscription_notAdded_warning=No ha agregado una suscripción de filtros. Sin una suscripción necesitará agregar filtros manualmente a Addblock Plus.
-subscription_notAdded_warning_addendum=Desea proceder?
 subscription_invalid_location=La ubicación de la lista de filtros no es ni una dirección URL válida, ni un nombre de archivo válido.
-synchronize_invalid_url=Fallo, no es una dirección valida
-synchronize_connection_error=Fallo, La descarga ha fracasado
-synchronize_invalid_data=Fallo, no es una lista de filtros valida
-synchronize_checksum_mismatch=Fallo, comprobación(checksum) no concuerda
-synchronize_ok=Éxito
-overwrite=Sobrescribir
-append=Anexar
-new_filter_group_title=Nuevo filtro
 type_label_other=otro
 type_label_script=script
 type_label_image=imagen
@@ -56,15 +28,12 @@ type_label_object=objeto
 type_label_subdocument=marco
 type_label_document=documento
 type_label_elemhide=oculto
-type_label_xbl=Asociar XBL
-type_label_ping=ping al enlace
+type_label_popup=ventana emergente
 type_label_xmlhttprequest=Solicitud XML
 type_label_object_subrequest=Solicitud de objeto
-type_label_dtd=DTD
 type_label_media=sonido/video
 type_label_font=fuente
-fennec_status_enabled=Adblock Plus esta habilitado
-fennec_status_disabled=Adblock Plus esta deshabilitado
-fennec_status_enabled_site=Adblock Plus esta habilitado en ?1?
-fennec_status_disabled_site=Adblock Plus esta deshabilitado en ?1?
-sync_engine_title=Datos de Adblock Plus
+fennec_status_enabled=Adblock Plus esta activado.
+fennec_status_disabled=Adblock Plus esta desactivado.
+fennec_status_enabled_site=Adblock Plus esta activado en ?1?.
+fennec_status_disabled_site=Adblock Plus esta desactivado en ?1?.
diff --git a/chrome/adblockplus.jar!/locale/es-MX/overlay.dtd b/chrome/adblockplus.jar!/locale/es-MX/overlay.dtd
index cdc8d08..43637b4 100644
--- a/chrome/adblockplus.jar!/locale/es-MX/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/es-MX/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Preferencias de Adblock Plus">
 <!ENTITY menuitem.accesskey "e">
 <!ENTITY toolbarbutton.label "Adblock plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Elementos bloqueables">
 <!ENTITY context.image.label "Adblock Plus: Bloquear imagen">
 <!ENTITY context.object.label "Adblock Plus: Bloquear objeto">
 <!ENTITY context.frame.label "Adblock Plus: Bloquear marco">
@@ -13,15 +12,31 @@
 <!ENTITY sidebar.title "Elementos bloqueables en la pagina actual">
 <!ENTITY sendReport.label "Reportar problema en esta pagina">
 <!ENTITY sendReport.accesskey "a">
-<!ENTITY settings.label "Preferencias">
-<!ENTITY settings.accesskey "P">
+<!ENTITY filters.label "Preferencias de filtro">
+<!ENTITY filters.accesskey "P">
 <!ENTITY opensidebar.label "Abrir elementos bloqueables">
 <!ENTITY opensidebar.accesskey "r">
 <!ENTITY closesidebar.label "Cerrar elementos bloqueables">
 <!ENTITY closesidebar.accesskey "r">
-<!ENTITY whitelist.site.label "Deshabilitar en ?1?">
+<!ENTITY whitelist.site.label "Desactivar en ?1?">
 <!ENTITY whitelist.page.label "Deshabilitar solo en esta pagina">
+<!ENTITY disable.label "Desactvado en cualquier lugar">
+<!ENTITY options.label "Opciones">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Desactivar con Adblock Plus">
+<!ENTITY showintoolbar.label "Mostrar barra de complementos">
+<!ENTITY showintoolbar.accesskey "c">
+<!ENTITY showinstatusbar.label "Mostrar en la barra de estado">
+<!ENTITY showinstatusbar.accesskey "M">
+<!ENTITY showinaddonbar.label "Mostrar en la barra de complementos">
+<!ENTITY showinaddonbar.accesskey "c">
+<!ENTITY objecttabs.label "Mostrar pestañas sobre Flash y Java">
+<!ENTITY objecttabs.accesskey "ñ">
+<!ENTITY hideplaceholders.label "Ocultar marcadores de posición de elementos bloqueados">
+<!ENTITY hideplaceholders.accesskey "O">
+<!ENTITY counthits.label "Contar accesos de filtro">
+<!ENTITY counthits.accesskey "f">
+<!ENTITY sync.label "Sincronizar configuración de Adblck Plus">
+<!ENTITY sync.accesskey "S">
 <!ENTITY objecttab.title "Bloquear">
-<!ENTITY objecttab.tooltip "Clicke aquí para bloquear este objecto con Adblock Plus">
-<!ENTITY disable.label "Disable everywhere">
-<!ENTITY recommend.label "Recommend us on Facebook">
+<!ENTITY objecttab.tooltip "Clické aquí para bloquear este objecto con Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/sendReport.dtd b/chrome/adblockplus.jar!/locale/es-MX/sendReport.dtd
index f6809f5..ca5e4f4 100644
--- a/chrome/adblockplus.jar!/locale/es-MX/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/es-MX/sendReport.dtd
@@ -2,14 +2,16 @@
 <!ENTITY privacyPolicy.label "Política de Privacidad">
 <!ENTITY dataCollector.heading "Bienvenido al reportero de problemas">
 <!ENTITY dataCollector.description "Por favor espere un momento mientras Adblock Plus reúne los datos necesarios.">
-<!ENTITY typeSelector.heading "Elija tipo de error">
-<!ENTITY typeSelector.description "Esta ventana lo guiara con pasos, necesarios para el envio de un reporte de problemas de Adblock Plus. Primero, por favor seleccione el tipo de problema que esta experimentando en esta pagina:">
+<!ENTITY typeSelector.heading "Elija tipo de problema">
+<!ENTITY typeSelector.description "Esta ventana lo guiará por pasos, necesarios para el envio de un reporte de problemas de Adblock Plus. Primero, por favor seleccione el tipo de problema que esta experimentando en esta página:">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus esta bloqueando demasiado">
 <!ENTITY typeSelector.falsePositive.accesskey "A">
-<!ENTITY typeSelector.falsePositive.description "Seleccione esta opción si la pagina carece de contenido importante, muestra incorrectamente o falla al funcionar como debe. Puede determinar si Adblock Plus es el causante del problema deshabilitandolo temporalmente.">
+<!ENTITY typeSelector.falsePositive.description "Seleccione esta opción si la página carece de contenido importante, muestra incorrectamente o falla al funcionar como debe. Puede determinar si Adblock Plus es el causante del problema desactivandolo temporalmente.">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus no bloquea una publicidad">
 <!ENTITY typeSelector.falseNegative.accesskey "b">
-<!ENTITY typeSelector.falseNegative.description "Seleccione esta opción si una publicidad continua mostrandose a pesar que Adblock Plus se encuentra habilitado.">
+<!ENTITY typeSelector.falseNegative.description "
+ Seleccione esta opción si una publicidad continua mostrandose a pesar que Adblock Plus se encuentra activado.
+">
 <!ENTITY typeSelector.other.label "Otro problema">
 <!ENTITY typeSelector.other.accesskey "O">
 <!ENTITY typeSelector.other.description "Seleccione esta opción si usted sospecha un problema con Adblock Plus especificamente en lugar de sus filtros.">
@@ -18,30 +20,57 @@
 <!ENTITY recentReports.clear.label "Quitar todos los reportes">
 <!ENTITY recentReports.clear.accesskey "Q">
 <!ENTITY issues.description "Adblock Plus ha detectado problemas con su configuración que puede ser la causa de este problema o que podria dificultar la investigación del problema.">
-<!ENTITY issues.whitelist.description "Adblock Plus se encuentra deshabilitado en la pagina que esta reportando. Por favor vuelva a habilitarlo y recargue la pagina antes de presentar el el informe para ayudar a la investigación de este tema.">
-<!ENTITY issues.whitelist.remove.label "Re-habilitar Adblock Plus en esta pagina">
-<!ENTITY issues.disabled.description "Adblock Plus esta deshabilitado, no bloqueara nada en su estado actual.">
-<!ENTITY issues.disabled.enable.label "Habilitar Adblock Plus">
-<!ENTITY issues.nofilters.description "Adblock Plus no esta bloqueando nada en la pagina actual. El problema que esta observando es probable que no se encuentre relacionado a Adblock Plus.">
-<!ENTITY issues.nosubscriptions.description "Usted no parece estar suscrito a ninguna lista de filtro pre-desarrollado que automáticamente remueve contenido no deseado de los sitios web.">
+<!ENTITY issues.whitelist.description "
+ Adblock Plus se encuentra desactivado en la pagina que esta reportando. Por favor vuelva a activarlo y recargue la página antes de presentar el informe para ayudar a la investigación de este problema.
+">
+<!ENTITY issues.whitelist.remove.label "Re-activar Adblock Plus en esta página">
+<!ENTITY issues.disabled.description "
+ Adblock Plus esta desactivado, no bloqueará nada en su estado actual.
+">
+<!ENTITY issues.disabled.enable.label "Activar Adblock Plus">
+<!ENTITY issues.nofilters.description "Adblock Plus no esta bloqueando nada en la página actual. El problema que esta observando es probable que no se encuentre relacionado con Adblock Plus.">
+<!ENTITY issues.nosubscriptions.description "
+ Usted no parece estar suscrito a ninguna lista de filtro pre-desarrollado que automáticamente quita contenido no deseado de los sitios web.
+">
 <!ENTITY issues.nosubscriptions.add.label "Agregar filtro de suscripción">
-<!ENTITY issues.ownfilters.description "Alguno de los filtros aplicados en esta pagina se encuentran definidos por el usuarios. Por favor deshabilite los filtros que pueden causar el problema.">
-<!ENTITY issues.ownfilters.disable.label "Deshablitar filtro">
-<!ENTITY issues.disabledgroups.description "La siguiente subscripcion/Grupo de filtros se encuentra deshabilitada, aun asi pueden tener efectos en esta pagina:">
-<!ENTITY issues.disabledgroups.enable.label "Habilitar subscripcion/Grupo de filtros">
-<!ENTITY issues.disabledfilters.description "Los siguientes filtros estan deshabilitados, aun asi pueden tener efectos en esta pagina:">
-<!ENTITY issues.disabledfilters.enable.label "Habilitar filtro">
+<!ENTITY issues.subscriptionCount.description "
+ Parece que usted se encuentra suscrito en demasiadas suscripciones. Esta
+ configuración no se recomienda porque causará una verosimilitud
+ con problemas mucho mas grandes. Tampoco podemos aceptar su reporte de problemas porque en el mismo
+ no se encuentra claro que autor de suscripción de filtro necesita tomar acciones. Por favor
+ quite todo menos las suscripciones realmente necesarias y compruebe
+ si el problema aun persiste.
+">
+<!ENTITY issues.openPreferences.label "Abrir preferencias de filtro">
+<!ENTITY issues.ownfilters.description "
+ Alguno de los filtros aplicados en esta página se encuentran definidos por el usuarios. Por favor desactive los filtros que pueden causar el problema.
+">
+<!ENTITY issues.ownfilters.disable.label "Desactivar filtro">
+<!ENTITY issues.disabledgroups.description "
+ La siguiente subscripcion/Grupo de filtros se encuentra desactivada, aun asi pueden tener efectos en esta pagina:
+">
+<!ENTITY issues.disabledgroups.enable.label "Activar subscripción/Grupo de filtros">
+<!ENTITY issues.disabledfilters.description "
+ Los siguientes filtros estan desactivados, aun asi pueden tener efectos en esta página:
+">
+<!ENTITY issues.disabledfilters.enable.label "Activar filtro">
 <!ENTITY issues.override.label "La configuración es correcta, continue con el reporte">
 <!ENTITY issues.override.accesskey "L">
-<!ENTITY issues.change.description "Su configuración ha sido cambiada. Por favor recargue la pagina para probar los cambios y presentar un reporte si el problema no ha sido resuelto por las alteraciones.">
-<!ENTITY typeWarning.description "Ha indicado que desea reportar un problema general con Adblock Plus en lugar de un problema con los filtros. Por favor tenga en cuenta que estos problemas son mejor reportados en el [link]Foro de Adblock Plus[/link]. Solo deberia usar el reportero de problemas para complementar una discución existente, ya que nadie se percatara de su informe a menos que se les proporcione el enlace a la misma. El enlace generado automáticamente sera proporcionado despues de presentar el reporte respectivo.">
+<!ENTITY issues.change.description "
+ Su configuración ha sido cambiada. Por favor recargue la página para probar los cambios y presentar un reporte si el problema no ha sido resuelto por las alteraciones.
+">
+<!ENTITY typeWarning.description "
+ Ha indicado que desea reportar un problema general con Adblock Plus en lugar de un problema con los filtros. Por favor tenga en cuenta que estos problemas son mejor reportados en el [link]Foro de Adblock Plus[/link]. Solo deberia usar el reportero de problemas para complementar una discución existente, ya que nadie se percatara de su informe a menos que se les proporcione el enlace a la misma. El enlace generado automáticamente sera proporcionado despues de presentar el reporte respectivo. 
+">
 <!ENTITY typeWarning.override.label "Entiendo y deseo presentar el reporte de todos modos">
 <!ENTITY typeWarning.override.accesskey "E">
 <!ENTITY reloadButton.label "Recargar pagina">
 <!ENTITY reloadButton.accesskey "R">
 <!ENTITY screenshot.heading "Adjuntar captura de pantalla">
-<!ENTITY screenshot.description "La misma pagina puede parecer diferente para cada persona. Puede ayudarnos a entender el problema si adjunta una captura de pantalla a su reporte. Puede quitar partes que contengan informacion sensitiva/privada asi mismo marcar areas donde el problema se note. Para hacerlo clicke el botón correspondiente y seleccione una parte de la imagen con su cursor/puntero.">
-<!ENTITY screenshot.attach.label "Adjuntar una imagen de la pagina al reporte">
+<!ENTITY screenshot.description "
+ La misma página puede parecer diferente para cada persona. Puede ayudarnos a entender el problema si adjunta una captura de pantalla a su reporte. Puede quitar partes que contengan informacion sensitiva/privada asi mismo marcar areas donde el problema se note. Para hacerlo clicke el botón correspondiente y seleccione una parte de la imagen con su cursor/puntero. 
+">
+<!ENTITY screenshot.attach.label "Adjuntar una imagen de la página al reporte">
 <!ENTITY screenshot.attach.accesskey "i">
 <!ENTITY screenshot.mark.label "Marcar el problema">
 <!ENTITY screenshot.mark.accesskey "M">
@@ -71,12 +100,3 @@
 <!ENTITY sendPage.retry.label "Enviar otra vez">
 <!ENTITY copyLink.label "Copiar dirección del reporte">
 <!ENTITY copyLink.accesskey "C">
-<!ENTITY issues.openPreferences.label "Open filter preferences">
-<!ENTITY issues.subscriptionCount.description "
-  It seems that you are subscribed to too many filter subscriptions. This
-  setup is not recommended because it will make the likeliness
-  of issues much higher. We also cannot accept your issue report because it
-  is unclear which filter subscription author needs to take action. Please
-  remove all but the really necessary filter subscriptions and test whether
-  the issue still occurs then.
-">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/settings.dtd b/chrome/adblockplus.jar!/locale/es-MX/settings.dtd
deleted file mode 100644
index ed2cbce..0000000
--- a/chrome/adblockplus.jar!/locale/es-MX/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Preferencia de Adblock Plus">
-<!ENTITY filters.label "Filtros">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Agregar filtro">
-<!ENTITY add.accesskey "g">
-<!ENTITY addsubscription.label "Agregar suscripción de filtro">
-<!ENTITY addsubscription.accesskey "l">
-<!ENTITY synchsubscriptions.label "Actualizar todas las suscripciones">
-<!ENTITY synchsubscriptions.accesskey "z">
-<!ENTITY import.label "Importar filtros">
-<!ENTITY import.accesskey "I">
-<!ENTITY export.label "Exportar filtros personalizados">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "Quitar todos los filtros personalizados">
-<!ENTITY clearall.accesskey "Q">
-<!ENTITY resethitcounts.label "Restablecer contador de filtros">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Editar">
-<!ENTITY edit.accesskey "d">
-<!ENTITY cut.label "Cortar">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Copiar">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Pegar">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Eliminar">
-<!ENTITY remove.accesskey "E">
-<!ENTITY menu.find.label "Buscar">
-<!ENTITY menu.find.accesskey "B">
-<!ENTITY menu.findagain.label "Buscar de nuevo">
-<!ENTITY menu.findagain.accesskey "u">
-<!ENTITY view.label "Ver">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Ordenar por">
-<!ENTITY sort.accesskey "p">
-<!ENTITY sort.none.label "Sin clasificar">
-<!ENTITY sort.none.accesskey "S">
-<!ENTITY sort.ascending.label "Ordernar de la A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ordernar de la Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opciones">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Habilitar Adblock Plus">
-<!ENTITY enable.accesskey "k">
-<!ENTITY showintoolbar.label "Mostrar barra de herramientas">
-<!ENTITY showintoolbar.accesskey "h">
-<!ENTITY showinstatusbar.label "Mostrar en la barra de estado">
-<!ENTITY showinstatusbar.accesskey "M">
-<!ENTITY objecttabs.label "Mostrar pestañas sobre Flash y Java">
-<!ENTITY objecttabs.accesskey "ñ">
-<!ENTITY collapse.label "Colapsar elementos bloqueados">
-<!ENTITY collapse.accesskey "b">
-<!ENTITY help.label "Ayuda">
-<!ENTITY help.accesskey "y">
-<!ENTITY gettingStarted.label "Primeros pasos">
-<!ENTITY gettingStarted.accesskey "P">
-<!ENTITY faq.label "Preguntas y Respuestas frecuentes">
-<!ENTITY faq.accesskey "f">
-<!ENTITY filterdoc.label "Escribiendo filtros de Adblock Plus">
-<!ENTITY filterdoc.accesskey "n">
-<!ENTITY about.label "Acerca de Adblock Plus">
-<!ENTITY about.accesskey "k">
-<!ENTITY description "El siguiente filtro determina que dirección debe ser bloqueada y cuales deben ser permitidas:">
-<!ENTITY filter.column "Regla de filtro">
-<!ENTITY filter.accesskey "f">
-<!ENTITY slow.column "Filtros lentos">
-<!ENTITY slow.accesskey "e">
-<!ENTITY enabled.column "Habilitado">
-<!ENTITY enabled.accesskey "o">
-<!ENTITY hitcount.column "Contador">
-<!ENTITY hitcount.accesskey "C">
-<!ENTITY lasthit.column "Ultima visita">
-<!ENTITY lasthit.accesskey "U">
-<!ENTITY context.edit.label "Editar filtro">
-<!ENTITY context.resethitcount.label "Restablecer contador de visitas del filtro">
-<!ENTITY context.synchsubscription.label "Actualizar suscripción ahora">
-<!ENTITY context.editsubscription.label "Editar suscripción">
-<!ENTITY context.moveup.label "Mover filtro arriba">
-<!ENTITY context.movedown.label "Mover filtro abajo">
-<!ENTITY context.movegroupup.label "Mover grupo arriba">
-<!ENTITY context.movegroupdown.label "Mover grupo abajo">
-<!ENTITY context.enable.label "Habilitar">
-<!ENTITY context.disable.label "Deshabilitar">
-<!ENTITY apply.label "Aplicar">
-<!ENTITY apply.accesskey "l">
-<!ENTITY fennec.subscription.label "Subscripción de filtros">
-<!ENTITY sync.accesskey "c">
-<!ENTITY sync.label "Sync Adblock Plus settings">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/sidebar.dtd b/chrome/adblockplus.jar!/locale/es-MX/sidebar.dtd
index 79b4587..afb09c7 100644
--- a/chrome/adblockplus.jar!/locale/es-MX/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/es-MX/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtro">
 <!ENTITY state.label "Estado">
 <!ENTITY size.label "Tamaño">
+<!ENTITY filterSource.label "Fuente de filtro">
 <!ENTITY docDomain.label "Fuente del documento">
 <!ENTITY docDomain.thirdParty "(terceros)">
 <!ENTITY docDomain.firstParty "(propietario)">
diff --git a/chrome/adblockplus.jar!/locale/es-MX/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/es-MX/subscriptionSelection.dtd
index 4ed4b98..8d59d0a 100644
--- a/chrome/adblockplus.jar!/locale/es-MX/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/es-MX/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Agregar subcripción de filtro de Adblock Plus">
-<!ENTITY dialog.title.edit "Editar subscripción de filtro">
-<!ENTITY description.newInstall "Adblock plus sera mas efecto si le agrega una suscripción de filtro. Las subscripciones de filtro son provistas gratis por otros usuarios de Adblock Plus. La opción mas adecuada para tu idioma se encuentra seleccionada.">
 <!ENTITY subscriptionSelector.label "Por favor seleccione una subscripción de filtro de la lista:">
 <!ENTITY viewList.label "Ver filtros">
 <!ENTITY visitHomepage.label "Visitar pagina principal">
 <!ENTITY addSubscription.label "Agregar subscripción">
-<!ENTITY saveSubscription.label "Salvar subscripción">
-<!ENTITY other.label "Agregar otra suscripción diferente">
-<!ENTITY other.accesskey "o">
 <!ENTITY list.download.failed "Adblock Plus ha fallado al recuperar la lista de subscripciones.">
 <!ENTITY list.download.retry "Intente de nuevo">
 <!ENTITY list.download.website "Ver sitio web">
 <!ENTITY fromWeb.description "Por favor confirme que desea agregar esta subscripción de filtro. Usted puede cambiar el titulo de la subscripción o la localización antes de agregarla.">
-<!ENTITY edit.description "Puede cambiar el titulo o la localización de la subscripción a su nececidad.">
-<!ENTITY external.description "Esta es una subscripción de filtro externa; La misma sera actualizada por la extensión que creó la misma.">
 <!ENTITY title.label "Titulo de la Suscripción:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Ubicación de la lista de filtros:">
 <!ENTITY location.accesskey "U">
-<!ENTITY autodownload.label "Actualizar filtros automáticamente">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Esta suscripción de filtros esta orientada a ser usada con la subscripcion de filtro "?1?" la cual aun no esta usando.">
 <!ENTITY addMain.label "Agregar suscripción de filtro "?1?" también">
 <!ENTITY addMain.accesskey "g">
diff --git a/chrome/adblockplus.jar!/locale/et/filters.dtd b/chrome/adblockplus.jar!/locale/et/filters.dtd
new file mode 100644
index 0000000..ab59c05
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/et/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Adblock Plus filtrite sätted">
+<!ENTITY subscriptions.tab.label "Filtrite tellimused">
+<!ENTITY filters.tab.label "Isetehtud filtrid">
+<!ENTITY addSubscription.label "Lisa filtrite tellimus">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Lisa">
+<!ENTITY addSubscriptionCancel.label "Loobu">
+<!ENTITY addSubscriptionOther.label "Lisa muu tellimus">
+<!ENTITY noSubscriptions.text "Sa ei ole veel lisanud ühtegi filtrite tellimust. Adblock Plus ei blokeeri midagi ilma filtriteta. Filtrite tellimiseks klõpsa nupul "Lisa filtrite tellimus".">
+<!ENTITY subscription.homepage.label "Koduleht">
+<!ENTITY subscription.external.label "Uuendatud mingi teise lisa poolt">
+<!ENTITY subscription.source.label "Filtrite loetelu">
+<!ENTITY subscription.enabled.label "Lubatud">
+<!ENTITY subscription.lastDownload.label "Viimati alla laaditud:">
+<!ENTITY subscription.lastDownload.inProgress "Laen alla...">
+<!ENTITY subscription.lastDownload.unknown "Pole teada">
+<!ENTITY subscription.lastDownload.invalidURL "Nurjus, vale aadress">
+<!ENTITY subscription.lastDownload.connectionError "Nurjus, allalaadimise viga">
+<!ENTITY subscription.lastDownload.invalidData "Nurjus, vale filtrite nimekiri">
+<!ENTITY subscription.lastDownload.checksumMismatch "Nurjus, kontrollsumma ei klapi">
+<!ENTITY subscription.lastDownload.success "Õnnestus">
+<!ENTITY subscription.minVersion.warning "See filtrite tellimus nõuab uuemat Adblock Plus versiooni. Sa peaksid uuendama Adblock Plus'i.">
+<!ENTITY subscription.disabledFilters.warning "Mõned selle tellimuse filtrid on keelatud.">
+<!ENTITY subscription.disabledFilters.enable "Luba keelatud filtrid">
+<!ENTITY subscription.actions.label "Tegevused">
+<!ENTITY subscription.update.label "Uuenda filtreid">
+<!ENTITY subscription.editTitle.label "Muuda pealkirja">
+<!ENTITY subscription.delete.label "Kustuta">
+<!ENTITY subscription.showHideFilters.label "Näita/peida filtreid">
+<!ENTITY subscription.moveUp.label "Liiguta üles">
+<!ENTITY subscription.moveDown.label "Liiguta alla">
+<!ENTITY acceptableAds.label "Luba mittepealetükkivad reklaamid">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Loe lisaks">
+<!ENTITY addGroup.label "Lisa filtrite grupp">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "Sul ei ole ühtegi isetehtud filtrit.">
+<!ENTITY addFilter.label "Lisa filter">
+<!ENTITY addFilter.accesskey "l">
+<!ENTITY filter.actions.label "Filtri tegevused">
+<!ENTITY filter.edit.label "Muuda">
+<!ENTITY filter.cut.label "Lõika">
+<!ENTITY filter.copy.label "Kopeeri">
+<!ENTITY filter.paste.label "Aseta">
+<!ENTITY filter.delete.label "Kustuta">
+<!ENTITY filter.selectAll.label "Vali kõik">
+<!ENTITY filter.resetHitCounts.label "Nullista tabamuste statistika">
+<!ENTITY filter.moveUp.label "Liiguta üles">
+<!ENTITY filter.moveDown.label "Liiguta alla">
+<!ENTITY viewMenu.label "Vaade">
+<!ENTITY filter.column "Filtri reegel">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Aeglased filtrid">
+<!ENTITY slow.accesskey "e">
+<!ENTITY enabled.column "Lubatud">
+<!ENTITY enabled.accesskey "u">
+<!ENTITY hitcount.column "Tabamusi">
+<!ENTITY hitcount.accesskey "T">
+<!ENTITY lasthit.column "Viimane tabamus">
+<!ENTITY lasthit.accesskey "V">
+<!ENTITY sort.label "Sortimine">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Sortimata">
+<!ENTITY sort.none.accesskey "o">
+<!ENTITY sort.ascending.label "A > Z sortimiskord">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A sortimiskord">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Enne kui filtreid saab näidata pead valima filtrite grupi.">
+<!ENTITY noFiltersInGroup.text "Valitud grupp on tühi">
+<!ENTITY filters.remove.warning "Kas soovid tõesti eemaldada kõik valitud filtrid?">
+<!ENTITY backupButton.label "Varundamine ja taastamine">
+<!ENTITY backupButton.accesskey "V">
+<!ENTITY backup.label "Loo uus varukoopia">
+<!ENTITY restore.default.label "Taasta andmed varukoopiast ?1?">
+<!ENTITY restore.own.label "Taasta andmed mujalt">
+<!ENTITY backup.complete.title "Kõik filtrid ja tellimused">
+<!ENTITY backup.custom.title "Ainult isetehtud filtrid">
+<!ENTITY backup.error "Viga filtrite faili kirjutamisel. Kontrolli, et fail ei oleks avatud mingi teise rakenduse poolt ja et fail ei oleks kirjutuskaitstud.">
+<!ENTITY restore.error "Faili andmeid ei õnnestu töödelda. Kas see on ikka Adblock Plus varundusfail?">
+<!ENTITY restore.complete.warning "Kõik filtrite sätted asendatakse valitud faili sisuga. Kas soovid jätkata?">
+<!ENTITY restore.custom.warning "Kõik su isetehtud filtrid asendatakse valitud faili sisuga. Kas soovid jätkata?">
+<!ENTITY restore.minVersion.warning "Hoiatus: see fail on loodud uuema Adblock Plus versiooniga. Enne selle taastamist peaksid sa Adblock Plus'i uuendama viimasele versioonile.">
+<!ENTITY find.label "Otsi">
+<!ENTITY find.accesskey "O">
+<!ENTITY close.label "Sulge">
diff --git a/chrome/adblockplus.jar!/locale/et/firstRun.dtd b/chrome/adblockplus.jar!/locale/et/firstRun.dtd
new file mode 100644
index 0000000..cd0fc87
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/et/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus install on lõpule jõudnud">
+<!ENTITY confirmation "
+ Täname, et installisid Adblock Plus'i. Nüüdsest on reklaamid blokeeritud.
+ Naudi seda!">
+<!ENTITY advancedSection "Lisavalikud">
+<!ENTITY listSelection1 "
+ Järgnev filtrite loetelu on häälestatud reklaame blokeerima:
+">
+<!ENTITY noList "Filtrite loetelu puudub">
+<!ENTITY visitHomepage.label "Külasta loetelu kodulehte">
+<!ENTITY acceptableAds "
+ Adblock Plus on lisaks seadistatud nõnda, et mittepealetükkivad reklaamid on lubatud.
+">
+<!ENTITY readMore.label "Loe lisaks selle kohta">
+<!ENTITY listSelection2 "
+ Sa võid seda valikut iga hetk muuta kohas [link]Filtrite sätted[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/et/global.properties b/chrome/adblockplus.jar!/locale/et/global.properties
index 03f59ce..f36c946 100644
--- a/chrome/adblockplus.jar!/locale/et/global.properties
+++ b/chrome/adblockplus.jar!/locale/et/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1?, elemente kokku ?2?
 blocked_count_addendum=(valges nimekirjas: ?1?, peidetud: ?2?)
 no_blocking_suggestions=Antud lehel ei leidu blokeeritavaid elemente
 whitelisted_page=Adblock Plus on antud lehel keelatud
-whitelist_description=Minu erandite reeglid
-filterlist_description=Minu blokeeringute reeglid
-invalid_description=Minu vigased reeglid
-elemhide_description=Minu elementide peitmise reeglid
-subscription_description=Filtrite tellimus:
-subscription_wrong_version=Mõned selle tellimuse filtritest vajavad korralikult töötamiseks Adblock Plus versiooni ?1?.
-subscription_source=Allikas:
-subscription_status=Olek:
-subscription_status_autodownload=Uuendatud automaatselt
-subscription_status_manualdownload=Uuendatud käsitsi
-subscription_status_externaldownload=Uuendatud väliselt (teise laienduse abil)
-subscription_status_lastdownload=Viimati alla laaditud:
-subscription_status_lastdownload_inprogress=Laen alla...
-subscription_status_lastdownload_unknown=Pole teada
+newGroup_title=Uus filtrite grupp
+whitelistGroup_title=Erandite reeglid
+blockingGroup_title=Blokeerivad reeglid
+elemhideGroup_title=Elemendi peitmise reeglid
 remove_subscription_warning=Kas oled kindel, et soovid selle tellimuse eemaldata?
-import_filters_wrong_version=Hoiatus: mõned nendest filtritest selles nimekirjas vajavad korralikult töötamiseks Adblock Plus versiooni ?1?. Enne selle nimekirja importimist peaksid uuendama Adblock Plusi viimasele versioonile.
-import_filters_warning=Kas soovid asendada olemasolevad filtrid või lisada uued filtrid nimekirja lõppu?
-import_filters_title=Filtrite import
-export_filters_title=Filtrite eksport
-invalid_filters_file=Ebaõige Adblock Plus filtrite fail.
-filters_write_error=Viga filtrite faili salvestamisel. Kontrolli, et fail ei oleks kirjutuskaitstud ega avatud mõne teise rakendusega.
-clearall_warning=Kas soovid tõesti kustutada nimekirjast kõik filtrid?
-resethitcounts_warning=Kas soovid tõesti nullida kõigi filtrite tabamused? NB! Seda tegevust ei saa tagasi võtta.
-resethitcounts_selected_warning=Kas soovid tõesti nullida valitud filtrite tabamused? NB! Seda tegevust ei saa tagasi võtta.
+clearStats_warning=See nullistab kõigi filtrite tabamuste statistika ja keelab filtrite tabamuste loendamise. Kas soovid jätkata?
 filter_regexp_tooltip=Antud filter on kas regulaaravaldis või optimeerimiseks liiga lühike. Selliste filtrite suur hulk võib muuta interneti lehitsemine aeglaseks.
 filter_elemhide_duplicate_id=Määratleda saab ainult ühe peidetava elemendi ID
 filter_elemhide_nocriteria=Pole antud ühtegi kriteeriumit peidetava elemendi äratundmiseks
-subscription_notAdded_warning=Sa ei lisanud filtrite tellimusi. Ilma filtrite tellimusteta pead sa lisama Adblock Plus filtrid käsitsi.
-subscription_notAdded_warning_addendum=Kas soovid jätkata?
 subscription_invalid_location=Filtrite nimekirja asukoht on kas vigane URL või failinimi.
-synchronize_invalid_url=Nurjus, vale aadress
-synchronize_connection_error=Nurjus, allalaadimise viga
-synchronize_invalid_data=Nurjus, vale filtrite nimekiri
-synchronize_checksum_mismatch=Nurjus, kontrollsumma ei klapi
-synchronize_ok=Õnnestus
-overwrite=Ülekirjutamine
-append=Lisamine
-new_filter_group_title=Uus filter
 type_label_other=muu
 type_label_script=skript
 type_label_image=pilt
@@ -56,15 +28,12 @@ type_label_object=objekt
 type_label_subdocument=raam
 type_label_document=dokument
 type_label_elemhide=peidetud
-type_label_xbl=XBL seos
-type_label_ping=link ping
+type_label_popup=hüpikaken
 type_label_xmlhttprequest=XML päring
 type_label_object_subrequest=objekti alampäring
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=font
 fennec_status_enabled=Adblock Plus on lubatud.
 fennec_status_disabled=Adblock Plus on keelatud.
 fennec_status_enabled_site=Adblock Plus on lubatud saidil ?1?.
 fennec_status_disabled_site=Adblock Plus on keelatud saidil ?1?.
-sync_engine_title=Adblock Plus andmed
diff --git a/chrome/adblockplus.jar!/locale/et/overlay.dtd b/chrome/adblockplus.jar!/locale/et/overlay.dtd
index 13c7da5..6053e4f 100644
--- a/chrome/adblockplus.jar!/locale/et/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/et/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plusi sätted">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokeeritavad elemendid">
 <!ENTITY context.image.label "Adblock Plus: Blokeeri pilt">
 <!ENTITY context.object.label "Adblock Plus: Blokeeri objekt">
 <!ENTITY context.frame.label "Adblock Plus: Blokeeri raam">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blokeeritavad elemendid antud lehel">
 <!ENTITY sendReport.label "Teata probleemist antud lehel">
 <!ENTITY sendReport.accesskey "T">
-<!ENTITY settings.label "Sätted">
-<!ENTITY settings.accesskey "S">
+<!ENTITY filters.label "Filtrite sätted">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Ava blokeeritavad elemendid">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Sulge blokeeritavad elemendid">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Keela domeenis ?1?">
 <!ENTITY whitelist.page.label "Keela ainult antud lehel">
 <!ENTITY disable.label "Keela kõikjal">
-<!ENTITY recommend.label "Soovita meid Facebookis">
+<!ENTITY options.label "Valikud">
+<!ENTITY options.accesskey "a">
+<!ENTITY contribute.label "Toeta Adblock Plus'i">
+<!ENTITY showintoolbar.label "Näita tööriistade menüüs">
+<!ENTITY showintoolbar.accesskey "i">
+<!ENTITY showinstatusbar.label "Näita olekuribal">
+<!ENTITY showinstatusbar.accesskey "o">
+<!ENTITY showinaddonbar.label "Näita lisade ribal">
+<!ENTITY showinaddonbar.accesskey "i">
+<!ENTITY objecttabs.label "Näita Flash ja Java objektidel sakke">
+<!ENTITY objecttabs.accesskey "t">
+<!ENTITY hideplaceholders.label "Peida blokeeritud elementide kohatäitjad">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Loenda filtrite tabamusi">
+<!ENTITY counthits.accesskey "f">
+<!ENTITY sync.label "Sünkroniseeri Adblock Plus sätted">
+<!ENTITY sync.accesskey "k">
 <!ENTITY objecttab.title "Blokeeri">
 <!ENTITY objecttab.tooltip "Klõpsa siia selle objekti blokeerimiseks Adblock Plusi abil">
diff --git a/chrome/adblockplus.jar!/locale/et/settings.dtd b/chrome/adblockplus.jar!/locale/et/settings.dtd
deleted file mode 100644
index cb6ab60..0000000
--- a/chrome/adblockplus.jar!/locale/et/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plusi sätted">
-<!ENTITY filters.label "Filtrid">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Lisa filter">
-<!ENTITY add.accesskey "i">
-<!ENTITY addsubscription.label "Lisa filtrite tellimus">
-<!ENTITY addsubscription.accesskey "s">
-<!ENTITY synchsubscriptions.label "Uuenda kõiki tellimusi">
-<!ENTITY synchsubscriptions.accesskey "d">
-<!ENTITY import.label "Impordi filtreid">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Ekspordi isetehtud filtrid">
-<!ENTITY export.accesskey "k">
-<!ENTITY clearall.label "Kustuta kõik isetehtud filtrid">
-<!ENTITY clearall.accesskey "u">
-<!ENTITY resethitcounts.label "Nulli tabamuste statistika">
-<!ENTITY resethitcounts.accesskey "N">
-<!ENTITY edit.label "Redigeerimine">
-<!ENTITY edit.accesskey "R">
-<!ENTITY cut.label "Lõika">
-<!ENTITY cut.accesskey "L">
-<!ENTITY copy.label "Kopeeri">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Aseta">
-<!ENTITY paste.accesskey "A">
-<!ENTITY remove.label "Kustuta">
-<!ENTITY remove.accesskey "u">
-<!ENTITY menu.find.label "Otsi">
-<!ENTITY menu.find.accesskey "O">
-<!ENTITY menu.findagain.label "Otsi uuesti">
-<!ENTITY menu.findagain.accesskey "e">
-<!ENTITY view.label "Vaade">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Sortimine">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Sortimata">
-<!ENTITY sort.none.accesskey "o">
-<!ENTITY sort.ascending.label "A > Z sortimiskord">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A sortimiskord">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Valikud">
-<!ENTITY options.accesskey "a">
-<!ENTITY enable.label "Luba Adblock Plus">
-<!ENTITY enable.accesskey "u">
-<!ENTITY showintoolbar.label "Näita tööriistade menüüs">
-<!ENTITY showintoolbar.accesskey "i">
-<!ENTITY showinstatusbar.label "Näita olekuribal">
-<!ENTITY showinstatusbar.accesskey "o">
-<!ENTITY objecttabs.label "Näita Flash ja Java objektidel sakke">
-<!ENTITY objecttabs.accesskey "t">
-<!ENTITY collapse.label "Ahenda blokeeritavad elemendid">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Sünkroniseeri Adblock Plus sätted">
-<!ENTITY sync.accesskey "k">
-<!ENTITY help.label "Abi">
-<!ENTITY help.accesskey "b">
-<!ENTITY gettingStarted.label "Alustamine">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "Korduma kippuvad küsimused">
-<!ENTITY faq.accesskey "o">
-<!ENTITY filterdoc.label "Adblock Plus filtrite kirjutamine">
-<!ENTITY filterdoc.accesskey "r">
-<!ENTITY about.label "Adblock Plusi teave">
-<!ENTITY about.accesskey "b">
-<!ENTITY description "Alljärgnevad filtrid määravad, millised aadressid tuleks blokeerida ja millised lubada:">
-<!ENTITY filter.column "Filtri reegel">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Aeglased filtrid">
-<!ENTITY slow.accesskey "e">
-<!ENTITY enabled.column "Lubatud">
-<!ENTITY enabled.accesskey "u">
-<!ENTITY hitcount.column "Tabamusi">
-<!ENTITY hitcount.accesskey "T">
-<!ENTITY lasthit.column "Viimane tabamus">
-<!ENTITY lasthit.accesskey "V">
-<!ENTITY context.edit.label "Muuda filtrit">
-<!ENTITY context.resethitcount.label "Nulli filtri tabamuste loendur">
-<!ENTITY context.synchsubscription.label "Uuenda tellimust">
-<!ENTITY context.editsubscription.label "Muuda tellimust">
-<!ENTITY context.moveup.label "Liiguta filter üles">
-<!ENTITY context.movedown.label "Liiguta filter alla">
-<!ENTITY context.movegroupup.label "Liiguta grupp üles">
-<!ENTITY context.movegroupdown.label "Liiguta grupp alla">
-<!ENTITY context.enable.label "Luba">
-<!ENTITY context.disable.label "Keela">
-<!ENTITY apply.label "Rakenda">
-<!ENTITY apply.accesskey "k">
-<!ENTITY fennec.subscription.label "Filtri tellimus">
diff --git a/chrome/adblockplus.jar!/locale/et/sidebar.dtd b/chrome/adblockplus.jar!/locale/et/sidebar.dtd
index f472c78..8b5e91c 100644
--- a/chrome/adblockplus.jar!/locale/et/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/et/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filter">
 <!ENTITY state.label "Olek">
 <!ENTITY size.label "Suurus">
+<!ENTITY filterSource.label "Filtri allikas">
 <!ENTITY docDomain.label "Dokumendi allikas">
 <!ENTITY docDomain.thirdParty "(väljaspoolt)">
 <!ENTITY docDomain.firstParty "(põhileht)">
diff --git a/chrome/adblockplus.jar!/locale/et/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/et/subscriptionSelection.dtd
index 22b3101..0a3160c 100644
--- a/chrome/adblockplus.jar!/locale/et/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/et/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Lisa Adblock Plus filtrite tellimus">
-<!ENTITY dialog.title.edit "Muuda filtrite tellimust">
-<!ENTITY description.newInstall "Adblock Plus toimib kõige efektiivsemalt, kui lisad talle filtrite tellimusi. Filtrite tellimusi pakuvad tasuta teised Adblock Plus kasutajad. Kõige sobivam tellimus sinu keele jaoks on juba eelnevalt valitud.">
 <!ENTITY subscriptionSelector.label "Vali nimekirjast sobiv filtrite tellimus:">
 <!ENTITY viewList.label "Vaata filtreid">
 <!ENTITY visitHomepage.label "Külasta kodulehte">
 <!ENTITY addSubscription.label "Lisa tellimus">
-<!ENTITY saveSubscription.label "Salvesta tellimus">
-<!ENTITY other.label "Lisa muu tellimus">
-<!ENTITY other.accesskey "m">
 <!ENTITY list.download.failed "Adblock Plusil ei õnnestunud alla laadida tellimuste nimekirja.">
 <!ENTITY list.download.retry "Proovi uuesti">
 <!ENTITY list.download.website "Külasta kodulehte">
 <!ENTITY fromWeb.description "Palun kinnita, et soovid lisada selle filtrite tellimuse. Enne lisamist saad muuta tellimuse pealkirja või asukohta.">
-<!ENTITY edit.description "Sa saad muuta tellimuse pealkirja või asukohta kui vaja.">
-<!ENTITY external.description "See on väline filtrite tellimus; seda uuendab laiendus, mis selle tellimuse lõi.">
 <!ENTITY title.label "Tellimuse pealkiri:">
 <!ENTITY title.accesskey "p">
 <!ENTITY location.label "Filtrite nimekirja asukoht:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "Filtrite automaatne uuendamine">
-<!ENTITY autodownload.accesskey "a">
 <!ENTITY supplementMessage "See filtrite tellimus on mõeldud kasutamiseks koos filtrite tellimusega "?1?" mida sa veel ei kasuta.">
 <!ENTITY addMain.label "Lisa ka filtrite tellimus "?1?"">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/fa/about.dtd b/chrome/adblockplus.jar!/locale/fa/about.dtd
index 34ca011..2dbe8d4 100644
--- a/chrome/adblockplus.jar!/locale/fa/about.dtd
+++ b/chrome/adblockplus.jar!/locale/fa/about.dtd
@@ -1,7 +1,6 @@
 <!ENTITY dialog.title "درباره تبلیغ شکن">
 <!ENTITY version.title "نسخه">
-<!ENTITY description "تبلیغ شکن امکان تصمیم گیری در مورد محتوایی که مایل هستید مشاهده کنید را فراهم می آورد.
-دیگر لازم نیست که تمام تصویرها و موارد تبلیغاتی را بر خلاف میل شما دریافت شوند؛ این امر را به تبلیغ شکن واگذار کنید!">
+<!ENTITY description "تبلیغ شکن امکان تصمیم گیری در مورد محتوایی که مایل هستید مشاهده کنید را فراهم می آورد.nnnدیگر لازم نیست که تمام تصویرها و موارد تبلیغاتی را بر خلاف میل شما دریافت شوند؛ این امر را به تبلیغ شکن واگذار کنید!">
 <!ENTITY homepage.label "صفحه خانگی تبلیغ شکن:">
 <!ENTITY author.label "تهیه کننده:">
 <!ENTITY contributors.label "همکاران:">
diff --git a/chrome/adblockplus.jar!/locale/fa/filters.dtd b/chrome/adblockplus.jar!/locale/fa/filters.dtd
new file mode 100644
index 0000000..85f2af0
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fa/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "اشتراک پالایه">
+<!ENTITY addSubscriptionOther.label "اشتراک ديگر">
+<!ENTITY subscription.lastDownload.label "آخرین دریافت:">
+<!ENTITY subscription.lastDownload.inProgress "در حال دریافت...">
+<!ENTITY subscription.lastDownload.unknown "ت.ن (تعریف نشده)">
+<!ENTITY subscription.lastDownload.invalidURL "نشانی نامعتبر بود">
+<!ENTITY subscription.lastDownload.connectionError "مشکل، فرآیند دریافت شکست خورد">
+<!ENTITY subscription.lastDownload.invalidData "مشکل، فهرست پالایه ها نامعتبر است">
+<!ENTITY subscription.lastDownload.checksumMismatch "مشکل, عدم تطابق کنترلی">
+<!ENTITY subscription.lastDownload.success "موفق">
+<!ENTITY addFilter.label "افزودن افزودن پالایه">
+<!ENTITY filter.cut.label "برش">
+<!ENTITY filter.copy.label "رونوشت">
+<!ENTITY filter.paste.label "جای گذاری">
+<!ENTITY filter.delete.label "حذف">
+<!ENTITY viewMenu.label "نما">
+<!ENTITY filter.column "قواعد پالایش">
+<!ENTITY filter.accesskey "ق">
+<!ENTITY slow.column "نمایش پالایه ها">
+<!ENTITY slow.accesskey "ن">
+<!ENTITY enabled.column "فعال‌">
+<!ENTITY enabled.accesskey "ع">
+<!ENTITY hitcount.column "برخورد ها">
+<!ENTITY hitcount.accesskey "خ">
+<!ENTITY lasthit.column "آخرین برخورد">
+<!ENTITY lasthit.accesskey "و">
+<!ENTITY sort.label "مرتب کردن بر اساس">
+<!ENTITY sort.accesskey "س">
+<!ENTITY sort.none.label "نا مرتب">
+<!ENTITY sort.none.accesskey "ر">
+<!ENTITY sort.ascending.label "ترتیب حروف الف با از ابتدا">
+<!ENTITY sort.ascending.accesskey "ا">
+<!ENTITY sort.descending.label "ترتیب حروف الف با از انتها">
+<!ENTITY sort.descending.accesskey "ت">
+<!ENTITY find.label "یافتن">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/fa/firstRun.dtd b/chrome/adblockplus.jar!/locale/fa/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fa/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/fa/global.properties b/chrome/adblockplus.jar!/locale/fa/global.properties
index fb513e1..d2294fd 100644
--- a/chrome/adblockplus.jar!/locale/fa/global.properties
+++ b/chrome/adblockplus.jar!/locale/fa/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? از میان ?2?
 blocked_count_addendum=(همچنین فهرست سفید: ?1?, پنهان: ?2?)
 no_blocking_suggestions=مورد مسدود شده ای در این صفحه موجود نیست
 whitelisted_page=فوق تبلیغ شکن برای صفحه جاری غیرفعال شده است.
-whitelist_description=قواعد استثنا من
-filterlist_description=قواعد مسدود کننده تبلیغ من
-invalid_description=پالایه های غیرمعتبر
-elemhide_description=قواعد پنهان‌کننده عنصر من
-subscription_description=اشتراک پالایه:
-subscription_wrong_version=بعضی از پالایه های این اشتراک برای کار کردن صحیح به فوق تبلیغ شکن ?1? احتیاج دارند!
-subscription_source=منبع:
-subscription_status=وضعیت:
-subscription_status_autodownload=بروز رسانی خودکار
-subscription_status_manualdownload=بروز رسانی دستی
-subscription_status_externaldownload=بروز رسانی خارجی (توسط پسوند دیگر)
-subscription_status_lastdownload=آخرین دریافت:
-subscription_status_lastdownload_inprogress=در حال دریافت...
-subscription_status_lastdownload_unknown=ت.ن (تعریف نشده)
 remove_subscription_warning=آیا برای حذف اشتراک مطمئن هستید؟
-import_filters_wrong_version=تذکر:بعضی از پالایه های این اشتراک برای کار کردن صحیح به فوق تبلیغ شکن ?1? احتیاج دارند! شما باید آخرین نسخه فوق تبلیغ شکن را نصب کنید.
-import_filters_warning=آیا شما مایل به جایگذاری فهرست پالایه هستید یا این فهرست به فهرست کنونی شما اضافه شود؟
-import_filters_title=وارد کردن پالایه ها
-export_filters_title=استخراج پالایه ها
-invalid_filters_file=پرونده مورد نظر برای فهرست پالایه های فوق تبلیغ شکن معتبر نیست.
-filters_write_error=در هنگام نوشتن پرونده پالایه ها اشکال بوجود آمد. اطمینان حاصل کنید که پرونده مورد نظر توسط برنامه دیگر استفاده نشده و قابل نوشتن باشد.
-clearall_warning=آیا برای حذف تمام پالایه ها در این فهرست مطمئن هستید؟
-resethitcounts_warning=آیا شما مایل به بازگشت آمار استفاده پالایه به صفر هستید؟ این عمل بازگشت‌پذیر نیست.
-resethitcounts_selected_warning=آیا شما مایل به بازگشت آمار استفاده از پالایه های انتخاب شده به صفر هستید؟ این عمل بازگشت‌پذیر نیست
 filter_regexp_tooltip=این پالایه یا نویسه مرتب است یا این که خیلی کوچکتر از آن است که یک پالایه مناسب باشد. تعداد زیادی از این نویسه ها می تواند سرعت مرورگر شما را کاهش دهد.
 filter_elemhide_duplicate_id=فقط یک شناسه از عنصری که قرار است پنهان شود را می توان مشخص کرد.
 filter_elemhide_nocriteria=هیچ ضابطه ای برای شناسایی عناصری که می بایست پنهان شوند مشخص نشد.
-subscription_notAdded_warning=شما یک اشتراک پالایه اضافه نکردید. بدون اشتراک پالایه شما مجبور هستید تمامی پالایه ها را به صورت دستی وارد کنید.
-subscription_notAdded_warning_addendum=آیا مایل به ادامه هستید؟
 subscription_invalid_location=مکان وارد شده برای فهرست پالایه ها نامعتبر است.
-synchronize_invalid_url=نشانی نامعتبر بود
-synchronize_connection_error=مشکل، فرآیند دریافت شکست خورد
-synchronize_invalid_data=مشکل، فهرست پالایه ها نامعتبر است
-synchronize_checksum_mismatch=مشکل, عدم تطابق کنترلی
-synchronize_ok=موفق
-overwrite=جای گذاری
-append=افزودن
-new_filter_group_title=پالایه جدید
 type_label_other=دیگر
 type_label_script=نویسه
 type_label_image=تصویر
@@ -56,15 +23,17 @@ type_label_object=شیء
 type_label_subdocument=قابک
 type_label_document=سند
 type_label_elemhide=پنهان
-type_label_xbl=XBL binding
-type_label_ping=ping به پیوند
 type_label_xmlhttprequest=XML خواسته شده
 type_label_object_subrequest=اشیاء زیرخواسته
-type_label_dtd=DTD
 type_label_media=چند رسانه ای
 type_label_font=قلم
 fennec_status_enabled=فوق تبلغ شکن فعال است
 fennec_status_disabled=فوق تبلیغ شکن غیر فعال است.
 fennec_status_enabled_site=فوق تبلغ شکن فعال است در ?1?.
 fennec_status_disabled_site=فوق تبلغ شکن غیر فعال است در ?1?.
-sync_engine_title=داده های فوق تبلیغ شکن
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/fa/overlay.dtd b/chrome/adblockplus.jar!/locale/fa/overlay.dtd
index 16097ed..76c8e58 100644
--- a/chrome/adblockplus.jar!/locale/fa/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/fa/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "ترجیحات فوق تبلیغ شکن">
 <!ENTITY menuitem.accesskey "ب">
 <!ENTITY toolbarbutton.label "فوق تبلیغ شکن">
-<!ENTITY view.blockableItems.label "فوق تبلیغ شکن: موارد قابل انسداد">
 <!ENTITY context.image.label "فوق تبلیغ شکن: سد تصاویر">
 <!ENTITY context.object.label "فوق تبلیغ شکن: سد شیء">
 <!ENTITY context.frame.label "فوق تبلیغ شکن:سد قابک">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "موارد قابل مسدود شدن در صفحه جاری">
 <!ENTITY sendReport.label "گزارش مشکل در این صفحه">
 <!ENTITY sendReport.accesskey "ص">
-<!ENTITY settings.label "ترجیحات">
-<!ENTITY settings.accesskey "ج">
 <!ENTITY opensidebar.label "باز کردن موارد قابل ردکردن">
 <!ENTITY opensidebar.accesskey "ق">
 <!ENTITY closesidebar.label "بستن موارد قابل ردکردن">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "غیرفعال در ?1?">
 <!ENTITY whitelist.page.label "غیرفعال فقط در این صفحه">
 <!ENTITY disable.label "غیر فعال کردن در همه جا">
-<!ENTITY recommend.label "ما را در فیس بوک پیشنهاد دهید.">
+<!ENTITY options.label "گزینه ها">
+<!ENTITY options.accesskey "گ">
+<!ENTITY showintoolbar.label "نمایش در نوار ابزار">
+<!ENTITY showintoolbar.accesskey "ب">
+<!ENTITY showinstatusbar.label "نمایش در نوار وضعیت">
+<!ENTITY showinstatusbar.accesskey "و">
+<!ENTITY objecttabs.label "نمایش زبانه در موارد فلش و جاوا">
+<!ENTITY objecttabs.accesskey "ج">
+<!ENTITY sync.label "همگام سازی تنظیمات فوق تبلیغ شکن">
+<!ENTITY sync.accesskey "ظ">
 <!ENTITY objecttab.title "مسدود کردن">
 <!ENTITY objecttab.tooltip "جهت مسدود کردن با فوق تبلیغ شکن اینجا کلیک کنید">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/fa/sendReport.dtd b/chrome/adblockplus.jar!/locale/fa/sendReport.dtd
index bcd9add..88ee90b 100644
--- a/chrome/adblockplus.jar!/locale/fa/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/fa/sendReport.dtd
@@ -23,39 +23,26 @@
 <!ENTITY issues.disabled.description "فوق تبلیغ شکن هم اکنون غیرفعال است. در این وضعیت هیچ موردی را مسدود نمی کند.">
 <!ENTITY issues.disabled.enable.label "فعال کردن فوق تبلیغ شکن">
 <!ENTITY issues.nofilters.description "فوق تبلیغ شکن هیچ موردی را در صفحه جاری مسدود نکرده. مشکلی که شما مشاهده کرده اید به احتمال زیاد به فوق تبلیغ شکن ربطی ندارد.">
-<!ENTITY issues.nosubscriptions.description "شما در هیچ فهرست پالایه پیش ساخته ای مشترک نشده اید که
-	به طور خود کار محتوای ناخواسته را پاک می کنند.">
+<!ENTITY issues.nosubscriptions.description "شما در هیچ فهرست پالایه پیش ساخته ای مشترک نشده اید کهnnn	به طور خود کار محتوای ناخواسته را پاک می کنند.">
 <!ENTITY issues.nosubscriptions.add.label "افزودن اشتراک پالایه">
 <!ENTITY issues.subscriptionCount.description "به نظر می رسد که شما در اشتراک های بسیار زیادی عضو هستید. این عمل توصیه نمی شود زیرا که اقبال ایجاد مشکل بیشتر شود. بنابرین ما نمی توانیم گزارش های شما را قبول کنیم چرا که معلوم نیست که کدام اشتراک پالایه نیاز به بررسی دارد. لطفا همه آنهارا حذف کنید به جز اشتراک های واقعا لازم و سپس امتحان کنید که آیا این مسئله هنوز هم پس از آن رخ می دهد.">
 <!ENTITY issues.openPreferences.label "باز کردن ترجیحات پالایه">
-<!ENTITY issues.ownfilters.description "بعضی از پالایه های اعمالی در صفحه توسط کاربر تعریف شده اند. لطفا پالایه های که ممکن است
-	باعث بروز مشکل شود را غیرفعال کنید:">
+<!ENTITY issues.ownfilters.description "بعضی از پالایه های اعمالی در صفحه توسط کاربر تعریف شده اند. لطفا پالایه های که ممکن استnnn	باعث بروز مشکل شود را غیرفعال کنید:">
 <!ENTITY issues.ownfilters.disable.label "غیر فعال کردن پالایه">
-<!ENTITY issues.disabledgroups.description "اشتراکات پالایه / دسته های پالایه ی روبرو غیر فعال هستند، آنها ممکن است هنوز
-	روی صفحه تاثیر داشته باشند:">
+<!ENTITY issues.disabledgroups.description "اشتراکات پالایه / دسته های پالایه ی روبرو غیر فعال هستند، آنها ممکن است هنوزnnn	روی صفحه تاثیر داشته باشند:">
 <!ENTITY issues.disabledgroups.enable.label "فعال سازی اشتراکات پالایه / دسته های پالایه">
 <!ENTITY issues.disabledfilters.description "پالایه های روبرو غیر فعال هستند، آنها ممکن است هنوز روی صفحه تاثیر داشته باشند:">
 <!ENTITY issues.disabledfilters.enable.label "فعال کردن پالایه">
 <!ENTITY issues.override.label "تنظیمات پیکربندی صحیح است، ادامه گزارش">
 <!ENTITY issues.override.accesskey "پ">
-<!ENTITY issues.change.description "پیکربندی شما تغییر یافت. لطفا صفحه را برای بررسی تغییرات تازه سازی کنید
-	و اگر هنوز با وجود تغییرات انجام شده مشکل پابرجا بود اقدام به ارسال گزارش کنید.">
-<!ENTITY typeWarning.description "شما می خواهید که مشکلی کلی در مورد فوق تبلیغ شکن را گزارش دهید به جای
-	اینکه مشکلی در رابطه با پالایه گزارش دهید. لطفا توجه داشته باشید که این طور مسائل بهتر است
-	در [link]تالار گفتمان فوق تبلیغ شکن[/link] بحث شوند. شما باید فقط در صورتی از گزارش گر مشکلات استفاده کنید که
-	مکمل بحث موجود باشد, چونکه هیچ کس به گزارش شما توجه نمی کند(در تالار گفتمان)
-	مگر این که برای آن یک پیوند ارائه کنید. وقتی که گزارش را ارسال می کنید
-	پیوند به طور خودکار ساخته و مهیا می شود.">
+<!ENTITY issues.change.description "پیکربندی شما تغییر یافت. لطفا صفحه را برای بررسی تغییرات تازه سازی کنیدnnn	و اگر هنوز با وجود تغییرات انجام شده مشکل پابرجا بود اقدام به ارسال گزارش کنید.">
+<!ENTITY typeWarning.description "شما می خواهید که مشکلی کلی در مورد فوق تبلیغ شکن را گزارش دهید به جایnnn	اینکه مشکلی در رابطه با پالایه گزارش دهید. لطفا توجه داشته باشید که این طور مسائل بهتر استnn	در [link]تالار گفتمان فوق تبلیغ شکن[/link] بحث شوند. شما باید فقط در صورتی از گزارش گر مشکلات استفاده کنید کهnn	مکمل بحث موجود باشد, چونکه هیچ کس به گزارش شما توجه نمی کند(در تالار گفتمان)nn	مگر این که برای آن یک پیوند ارائه کنید. وقتی که گزارش را ارسال می کنیدnn	پیوند به طور خودکار ساخته و مهیا می شود.">
 <!ENTITY typeWarning.override.label "من متوجه هستم و می خواهم که گزارش را در هر صورت ارسال کنم">
 <!ENTITY typeWarning.override.accesskey "ج">
 <!ENTITY reloadButton.label "تازه سازی صفحه">
 <!ENTITY reloadButton.accesskey "ز">
 <!ENTITY screenshot.heading "افزودن تصویر از صفحه">
-<!ENTITY screenshot.description "صفحات مشابه امکان دارد برای هر فرد به صورتی نامشابه نمایش داده شوند. ضمیمه کردن یک تصویر
-	می تواند کمک زیادی در فهم مشکل به ما بکند. شما می توانید بخش هایی
-	که حاوی اطلاعات حساس می باشد را پاک کنید و همچنین بخش هایی که مشکل در آنها نمودار شده
-	را علامت گزاری کنید. برای این کار کلید متناظر را کلیک کنید و بخشی از
-	تصویر را با موشواره انتخاب کنید.">
+<!ENTITY screenshot.description "صفحات مشابه امکان دارد برای هر فرد به صورتی نامشابه نمایش داده شوند. ضمیمه کردن یک تصویرnnn	می تواند کمک زیادی در فهم مشکل به ما بکند. شما می توانید بخش هاییnn	که حاوی اطلاعات حساس می باشد را پاک کنید و همچنین بخش هایی که مشکل در آنها نمودار شدهnn	را علامت گزاری کنید. برای این کار کلید متناظر را کلیک کنید و بخشی ازnn	تصویر را با موشواره انتخاب کنید.">
 <!ENTITY screenshot.attach.label "افزودن تصویر صفحه به گزارش">
 <!ENTITY screenshot.attach.accesskey "ص">
 <!ENTITY screenshot.mark.label "علامت گزاری مشکل">
@@ -65,9 +52,7 @@
 <!ENTITY screenshot.undo.label "واگرد">
 <!ENTITY screenshot.undo.accesskey "و">
 <!ENTITY commentPage.heading "وارد کردن نظر">
-<!ENTITY commentPage.description "جعبه متن زیر به شما اجازه می دهد که نظر خود را برای کمک به درک ما در مورد مشکل وارد کنید.
-	این مورد اختیاری می باشد ولی در صورتی که مشکل آشکار نیست توصیه می شود.
-	شما همچنین می توانید قبل از ارسال گزارش داده ها را بررسی کنید.">
+<!ENTITY commentPage.description "جعبه متن زیر به شما اجازه می دهد که نظر خود را برای کمک به درک ما در مورد مشکل وارد کنید.nnn	این مورد اختیاری می باشد ولی در صورتی که مشکل آشکار نیست توصیه می شود.nn	شما همچنین می توانید قبل از ارسال گزارش داده ها را بررسی کنید.">
 <!ENTITY comment.label "نظر (اختیاری):">
 <!ENTITY comment.accesskey "ظ">
 <!ENTITY comment.lengthWarning "حد اکثر طول نظر 1000 حرف می باشد. فقط 1000 حرف اولی فرستاده می شود.">
@@ -84,9 +69,7 @@
 <!ENTITY sendPage.waitMessage "لطفا صبر کنید تا فوق تبلیغ شکن گزارش شما را ارسال کند.">
 <!ENTITY sendPage.confirmation "گزارش شما ذخیره شد. شما می توانید در نشانی زیر  به آن دسترسی پیدا کنید:">
 <!ENTITY sendPage.knownIssue "گزارشی که شما ارسال کردید هم اکنون شناخته شده است. اطلاعات بیشتر:">
-<!ENTITY sendPage.errorMessage "تلاش برای ارسال گزارش شکست خورد، شماره خطا "?1?". لطفا مطمئن شوید که
-	به اینترنت متصل هستید و مجددا سعی کنید. اگر مشکل همچنان ادامه دارد می توانید
-	در [link]تالار گفتمان فوق تبلیغ شکن[/link] در خواست کمک کنید.">
+<!ENTITY sendPage.errorMessage "تلاش برای ارسال گزارش شکست خورد، شماره خطا "?1?". لطفا مطمئن شوید کهnnn	به اینترنت متصل هستید و مجددا سعی کنید. اگر مشکل همچنان ادامه دارد می توانیدnn	در [link]تالار گفتمان فوق تبلیغ شکن[/link] در خواست کمک کنید.">
 <!ENTITY sendPage.retry.label "ارسال مجدد">
 <!ENTITY copyLink.label "رونوشت از پیوند گزارش">
 <!ENTITY copyLink.accesskey "ن">
diff --git a/chrome/adblockplus.jar!/locale/fa/settings.dtd b/chrome/adblockplus.jar!/locale/fa/settings.dtd
deleted file mode 100644
index c940561..0000000
--- a/chrome/adblockplus.jar!/locale/fa/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "ترجبحات فوق تبلیغ شکن">
-<!ENTITY filters.label "پالایه ها">
-<!ENTITY filters.accesskey "پ">
-<!ENTITY add.label "افزودن افزودن پالایه">
-<!ENTITY add.accesskey "ز">
-<!ENTITY addsubscription.label "اشتراک پالایه">
-<!ENTITY addsubscription.accesskey "ش">
-<!ENTITY synchsubscriptions.label "بروز رساني اشتراک‌ها">
-<!ENTITY synchsubscriptions.accesskey "ک">
-<!ENTITY import.label "وارد کردن پالایه ها">
-<!ENTITY import.accesskey "د">
-<!ENTITY export.label "صادر کردن پالایه ها">
-<!ENTITY export.accesskey "ص">
-<!ENTITY clearall.label "حذف پالایه ها">
-<!ENTITY clearall.accesskey "ح">
-<!ENTITY resethitcounts.label "باز نشانی آمار برخورد">
-<!ENTITY resethitcounts.accesskey "ی">
-<!ENTITY edit.label "ویرایش">
-<!ENTITY edit.accesskey "ش">
-<!ENTITY cut.label "برش">
-<!ENTITY cut.accesskey "ر">
-<!ENTITY copy.label "رونوشت">
-<!ENTITY copy.accesskey "ش">
-<!ENTITY paste.label "جای گذاری">
-<!ENTITY paste.accesskey "گ">
-<!ENTITY remove.label "حذف">
-<!ENTITY remove.accesskey "ذ">
-<!ENTITY menu.find.label "یافتن">
-<!ENTITY menu.find.accesskey "ف">
-<!ENTITY menu.findagain.label "یافتن مجدد">
-<!ENTITY menu.findagain.accesskey "م">
-<!ENTITY view.label "نما">
-<!ENTITY view.accesskey "م">
-<!ENTITY sort.label "مرتب کردن بر اساس">
-<!ENTITY sort.accesskey "س">
-<!ENTITY sort.none.label "نا مرتب">
-<!ENTITY sort.none.accesskey "ر">
-<!ENTITY sort.ascending.label "ترتیب حروف الف با از ابتدا">
-<!ENTITY sort.ascending.accesskey "ا">
-<!ENTITY sort.descending.label "ترتیب حروف الف با از انتها">
-<!ENTITY sort.descending.accesskey "ت">
-<!ENTITY options.label "گزینه ها">
-<!ENTITY options.accesskey "گ">
-<!ENTITY enable.label "فعال‌کردن فوق تبلیغ شکن">
-<!ENTITY enable.accesskey "ع">
-<!ENTITY showintoolbar.label "نمایش در نوار ابزار">
-<!ENTITY showintoolbar.accesskey "ب">
-<!ENTITY showinstatusbar.label "نمایش در نوار وضعیت">
-<!ENTITY showinstatusbar.accesskey "و">
-<!ENTITY objecttabs.label "نمایش زبانه در موارد فلش و جاوا">
-<!ENTITY objecttabs.accesskey "ج">
-<!ENTITY collapse.label "نمایش موارد رد شده">
-<!ENTITY collapse.accesskey "م">
-<!ENTITY sync.label "همگام سازی تنظیمات فوق تبلیغ شکن">
-<!ENTITY sync.accesskey "ظ">
-<!ENTITY help.label "راهنما">
-<!ENTITY help.accesskey "ن">
-<!ENTITY gettingStarted.label "شروع">
-<!ENTITY gettingStarted.accesskey "ش">
-<!ENTITY faq.label "سوالات سوالات متداول">
-<!ENTITY faq.accesskey "ل">
-<!ENTITY filterdoc.label "نوشتن پالایه فوق تبلیغ شکن">
-<!ENTITY filterdoc.accesskey "پ">
-<!ENTITY about.label "درباره فوق تبلیغ شکن">
-<!ENTITY about.accesskey "د">
-<!ENTITY description "پالایه های جاری معین می کنند که کدام نشانی باید مسدود شود و کدام باید اجازه داده شود:">
-<!ENTITY filter.column "قواعد پالایش">
-<!ENTITY filter.accesskey "ق">
-<!ENTITY slow.column "نمایش پالایه ها">
-<!ENTITY slow.accesskey "ن">
-<!ENTITY enabled.column "فعال‌">
-<!ENTITY enabled.accesskey "ع">
-<!ENTITY hitcount.column "برخورد ها">
-<!ENTITY hitcount.accesskey "خ">
-<!ENTITY lasthit.column "آخرین برخورد">
-<!ENTITY lasthit.accesskey "و">
-<!ENTITY context.edit.label "ویرایش پالایه">
-<!ENTITY context.resethitcount.label "برگشت آمار استفاده">
-<!ENTITY context.synchsubscription.label "بروز رسانی اشتراک">
-<!ENTITY context.editsubscription.label "ویرایش اشتراک">
-<!ENTITY context.moveup.label "بالا‌بردن">
-<!ENTITY context.movedown.label "پایین‌بردن">
-<!ENTITY context.movegroupup.label "بالا‌بردن گروه">
-<!ENTITY context.movegroupdown.label "پایین‌بردن گروه">
-<!ENTITY context.enable.label "فعال">
-<!ENTITY context.disable.label "غیر فعال">
-<!ENTITY apply.label "انجام دادن">
-<!ENTITY apply.accesskey "ج">
-<!ENTITY fennec.subscription.label "اشتراک پالایه">
diff --git a/chrome/adblockplus.jar!/locale/fa/sidebar.dtd b/chrome/adblockplus.jar!/locale/fa/sidebar.dtd
index b5267fd..26103da 100644
--- a/chrome/adblockplus.jar!/locale/fa/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/fa/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "رونوشت نشانی مورد">
 <!ENTITY context.copyFilter.label "رونوشت پالایه">
 <!ENTITY context.selectAll.label "انتخاب همه">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/fa/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/fa/subscriptionSelection.dtd
index 693f058..9849ff6 100644
--- a/chrome/adblockplus.jar!/locale/fa/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/fa/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "افزودن اشتراک پالایه فوق تبلیغ شکن">
-<!ENTITY dialog.title.edit "ویرایش اشتراک پالایه">
-<!ENTITY description.newInstall "فوق تبلیغ شکن می تواند موثر تر باشد اگر یک اشتراک پالایه اضافه کنید. این اشتراکات توسط سایر کاربران فوق تبلیغ شکن به صورت رایگان مهیا شده اند. مناسب ترین پالایه برای زبان شما هم اکنون انتخاب شده است.">
 <!ENTITY subscriptionSelector.label "یک اشتراک پالایه از فهرست انتخاب کنید:">
 <!ENTITY viewList.label "دیدن پالایه ها">
 <!ENTITY visitHomepage.label "بازدید از صفحه خانگی">
 <!ENTITY addSubscription.label "افزودن اشتراک">
-<!ENTITY saveSubscription.label "ذخیره اشتراک">
-<!ENTITY other.label "اشتراک ديگر">
-<!ENTITY other.accesskey "گ">
 <!ENTITY list.download.failed "فوق تبلیغ شکن موفق نشد که فهرست اشتراکات را بازیابی کند.">
 <!ENTITY list.download.retry "تلاش مجدد">
 <!ENTITY list.download.website "دیدن پایگاه تحت شبکه">
 <!ENTITY fromWeb.description "لطفا تایید کنید که قصد افزودن این اشتراک پالایه را دارید. شما می توانید قبل از افزودن، نام و مسیر اشتراک را تغییر دهید.">
-<!ENTITY edit.description "شما می توانید در صورت نیاز نام و مسیر اشتراک را تغییر دهید.">
-<!ENTITY external.description "این یک اشتراک خارج از برنامه است; به وسیله افزونه ای که آن را ایجاد کرده بروز شده..">
 <!ENTITY title.label "عنوان اشتراک:">
 <!ENTITY title.accesskey "ش">
 <!ENTITY location.label "نشانی فهرست پالایه ها:">
 <!ENTITY location.accesskey "ف">
-<!ENTITY autodownload.label "بروز رسانی خودکار">
-<!ENTITY autodownload.accesskey "خ">
 <!ENTITY supplementMessage "این اشتراک پالایه به معنی آن است که با اشتراک پالایه "?1?" استفاده می شود که شما هنوز در آن مشترک نشده اید.">
 <!ENTITY addMain.label "افزودن اشتراک پالایه "?1?" همچنین">
 <!ENTITY addMain.accesskey "چ">
diff --git a/chrome/adblockplus.jar!/locale/fi/filters.dtd b/chrome/adblockplus.jar!/locale/fi/filters.dtd
new file mode 100644
index 0000000..e8b1094
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fi/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Adblock Plus -suodatinasetukset">
+<!ENTITY subscriptions.tab.label "Suodatintilaukset">
+<!ENTITY filters.tab.label "Omat suodattimet">
+<!ENTITY addSubscription.label "Lisää suodatintilaus">
+<!ENTITY addSubscription.accesskey "i">
+<!ENTITY addSubscriptionAdd.label "Lisää">
+<!ENTITY addSubscriptionCancel.label "Peruuta">
+<!ENTITY addSubscriptionOther.label "Lisää jokin muu tilaus">
+<!ENTITY noSubscriptions.text "
+ Suodatintilauksia ei ole vielä lisätty. Adblock Plus ei estä mitään
+ilman suodattimia. Käytä "Lisää suodatintilaus" -painiketta lisätäksesi 
+joitakin.
+">
+<!ENTITY subscription.homepage.label "Kotisivu">
+<!ENTITY subscription.external.label "Toisen laajennuksen päivättävä">
+<!ENTITY subscription.source.label "Suodatintilaus">
+<!ENTITY subscription.enabled.label "Käytössä">
+<!ENTITY subscription.lastDownload.label "Viimeisin lataus:">
+<!ENTITY subscription.lastDownload.inProgress "Lataa...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Epäonnistui, kelvoton osoite">
+<!ENTITY subscription.lastDownload.connectionError "Epäonnistui, latausvirhe">
+<!ENTITY subscription.lastDownload.invalidData "Epäonnistui, kelvoton suodatinlista">
+<!ENTITY subscription.lastDownload.checksumMismatch "Epäonnistui, tarkistussumma ei täsmää">
+<!ENTITY subscription.lastDownload.success "Onnistui">
+<!ENTITY subscription.minVersion.warning "Tämä suodatintilaus vaatii uudemman Adblock Plus -version, on suositeltavaa päivittää uusimpaan Adblock Plussan versioon.">
+<!ENTITY subscription.disabledFilters.warning "Jotkin tämän suodatintilauksen suodattimista on poistettu käytössä.">
+<!ENTITY subscription.disabledFilters.enable "Ota käytöstä poistetut suodattimet käyttöön">
+<!ENTITY subscription.actions.label "Toiminnot">
+<!ENTITY subscription.update.label "Päivitä suodattimet">
+<!ENTITY subscription.editTitle.label "Muokkaa otsikkoa">
+<!ENTITY subscription.delete.label "Poista">
+<!ENTITY subscription.showHideFilters.label "Näytä/piilota suodattimet">
+<!ENTITY subscription.moveUp.label "Siirrä ylös">
+<!ENTITY subscription.moveDown.label "Siirrä alas">
+<!ENTITY acceptableAds.label "Salli ei-tunkeileva mainonta">
+<!ENTITY acceptableAds.accesskey "a">
+<!ENTITY readMore.label "Lue lisää">
+<!ENTITY addGroup.label "Lisää suodatinryhmä">
+<!ENTITY addGroup.accesskey "s">
+<!ENTITY noFilters.text "
+ Omia suodattimia ei ole vielä.
+">
+<!ENTITY addFilter.label "Lisää suodatin">
+<!ENTITY addFilter.accesskey "L">
+<!ENTITY filter.actions.label "Suodatintoiminnot">
+<!ENTITY filter.edit.label "Muokkaa">
+<!ENTITY filter.cut.label "Leikkaa">
+<!ENTITY filter.copy.label "Kopioi">
+<!ENTITY filter.paste.label "Liitä">
+<!ENTITY filter.delete.label "Poista">
+<!ENTITY filter.selectAll.label "Valitse kaikki">
+<!ENTITY filter.resetHitCounts.label "Nollaa osumatilastot">
+<!ENTITY filter.moveUp.label "Siirrä ylös">
+<!ENTITY filter.moveDown.label "Siirrä alas">
+<!ENTITY viewMenu.label "Näytä">
+<!ENTITY filter.column "Suodatusehto">
+<!ENTITY filter.accesskey "S">
+<!ENTITY slow.column "Hitaat suodattimet">
+<!ENTITY slow.accesskey "H">
+<!ENTITY enabled.column "Käytössä">
+<!ENTITY enabled.accesskey "y">
+<!ENTITY hitcount.column "Osumat">
+<!ENTITY hitcount.accesskey "O">
+<!ENTITY lasthit.column "Viimeisin osuma">
+<!ENTITY lasthit.accesskey "V">
+<!ENTITY sort.label "Lajitteluperuste">
+<!ENTITY sort.accesskey "E">
+<!ENTITY sort.none.label "Ei lajiteltu">
+<!ENTITY sort.none.accesskey "L">
+<!ENTITY sort.ascending.label "A > Z lajittelu">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A lajittelu">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Suodatinryhmä on valittava, ennen kuin sen suodattimia voidaan näyttää.">
+<!ENTITY noFiltersInGroup.text "Valittu ryhmä on tyhjä">
+<!ENTITY filters.remove.warning "Haluatko varmasti poistaa kaikki valitut suodattimet?">
+<!ENTITY backupButton.label "Varmuuskopioi ja palauta">
+<!ENTITY backupButton.accesskey "V">
+<!ENTITY backup.label "Luo uusi varmuuskopio">
+<!ENTITY restore.default.label "Palauta varmuuskopio: ?1?">
+<!ENTITY restore.own.label "Palauta oma varmuuskopio">
+<!ENTITY backup.complete.title "Kaikki suodattimet ja tilaukset">
+<!ENTITY backup.custom.title "Vain omat suodattimet">
+<!ENTITY backup.error "Tapahtui virhe kirjoitettaessa suodattimia tiedostoon. Varmista että tiedosto ei ole kirjoitussuojattu tai jonkin muun ohjelman käytössä.">
+<!ENTITY restore.error "Tiedoston tietoja ei voida prosessoida. Ehkä tämä ei ole Adblock Plus -varmuuskopiotiedosto?">
+<!ENTITY restore.complete.warning "Kaikki suodatinasetukset korvataan valitun tiedoston sisällöllä. Haluatko varmasti jatkaa?">
+<!ENTITY restore.custom.warning "Kaikki omat suodattimet korvataan valitun tiedoston sisällöllä. Haluatko varmasti jatkaa?">
+<!ENTITY restore.minVersion.warning "Varoitus: tiedosto on luotu uudemmalla Adblock Plussan versiolla. Ennen kuin palautat tästä tiedostosta, on suositeltavaa päivittää uusimpaan Adblock Plussan versioon.">
+<!ENTITY find.label "Etsi">
+<!ENTITY find.accesskey "E">
+<!ENTITY close.label "Sulje">
diff --git a/chrome/adblockplus.jar!/locale/fi/firstRun.dtd b/chrome/adblockplus.jar!/locale/fi/firstRun.dtd
new file mode 100644
index 0000000..df50696
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fi/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plussan asennus on valmis">
+<!ENTITY confirmation "
+ Kiitos Adblock Plussan asentamisesta. Mainokset estetään tästä lähtien.
+Nauti!">
+<!ENTITY advancedSection "Lisäasetukset">
+<!ENTITY listSelection1 "
+ Seuraava suodatinlista on asetettu estämään mainoksia:
+">
+<!ENTITY noList "Ei suodatinlistaa">
+<!ENTITY visitHomepage.label "Vieraile kotisivuilla">
+<!ENTITY acceptableAds "
+ Adblock Plus on asetettu sallimaan myös ei-tunkeileva mainonta.
+">
+<!ENTITY readMore.label "Lue tästä lisää">
+<!ENTITY listSelection2 "
+ Voit muuttaa näitä asetuksia milloin tahansa [link]Suodatinaseuksista[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/fi/global.properties b/chrome/adblockplus.jar!/locale/fi/global.properties
index b97d33b..5476cc6 100644
--- a/chrome/adblockplus.jar!/locale/fi/global.properties
+++ b/chrome/adblockplus.jar!/locale/fi/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? / ?2?
 blocked_count_addendum=(sallituja: ?1?, piilotettuja: ?2?)
 no_blocking_suggestions=Ei estettäviä elementtejä avoimella sivulla
 whitelisted_page=Adblock Plus on poistettu käytöstä avoimella sivulla
-whitelist_description=Sallivat suodattimet
-filterlist_description=Estävät suodattimet
-invalid_description=Virheelliset suodattimet
-elemhide_description=Elementtien piilottamisehdot
-subscription_description=Tilatut suodattimet:
-subscription_wrong_version=Jotkin tämän tilauksen suodattimista vaativat Adblock Plus ?1?:n toimiakseen oikein!
-subscription_source=Osoite:
-subscription_status=Tila:
-subscription_status_autodownload=Automaattisesti päivittyvä
-subscription_status_manualdownload=Päivitettävä käsin
-subscription_status_externaldownload=Päivittyy ulkoisesti (toinen laajennus)
-subscription_status_lastdownload=Viimeisin lataus:
-subscription_status_lastdownload_inprogress=Lataa...
-subscription_status_lastdownload_unknown=N/A
+newGroup_title=Uusi suodatinryhmä
+whitelistGroup_title=Poikkeusehdot
+blockingGroup_title=Estoehdot
+elemhideGroup_title=Elementtien piilotusehdot
 remove_subscription_warning=Haluatko varmasti poistaa tämän tilauksen?
-import_filters_wrong_version=Varoitus: jotkin tämän tilauksen suodattimista vaativat Adblock Plussan  ?1? toimiakseen oikein. Sinun tulisi luultavasti päivittää Adblock Plussan viimeisimpään versioon ennen tämän listan tuomista.
-import_filters_warning=Haluatko korvata nykyiset suodattimet vai lisätä uudet listan loppuun?
-import_filters_title=Tuo suodattimia
-export_filters_title=Vie suodattimia
-invalid_filters_file=Virheellinen Adblock Plus -suodatintiedosto.
-filters_write_error=Tapahtui virhe kirjoitettaessa suodattimia tiedostoon. Varmista, ettei tiedosto ole kirjoitussuojattu tai ei ole jonkin muun ohjelman käytössä.
-clearall_warning=Haluatko varmasti poistaa kaikki listan suodattimet?
-resethitcounts_warning=Haluatko varmasti nollata kaikkien suodattimien osumamäärät? Tätä toimintoa ei voida peruuttaa jälkikäteen!
-resethitcounts_selected_warning=Haluatko varmasti nollata valittujen suodattimien osumamäärät? Tätä toimintoa ei voida peruuttaa jälkikäteen!
+clearStats_warning=Tämä nollaa kaikki osumatilastot ja poistaa osumien laskemisen käytöstä. Haluatko jatkaa?
 filter_regexp_tooltip=Tämä suodatin on joko säännöllinen lauseke tai liian lyhyt optimoitavaksi. Liian monta tällaista suodatinta saattaa hidastaa selailuasi.
 filter_elemhide_duplicate_id=Piilotettavalle elementille voidaan määritellä vain yksi tunniste (ID)
 filter_elemhide_nocriteria=Piilotettavaa elementtiä määrittelevää tunnistetta ei annettu
-subscription_notAdded_warning=Et lisännyt suodatintilausta. Ilman sauodatintilausta joudut lisäämään Adblock Plussan suodattimet käsin.
-subscription_notAdded_warning_addendum=Jatketaanko?
 subscription_invalid_location=Suodatinlistan sijainti on joko kelvoton osoite tai tiedoston nimi.
-synchronize_invalid_url=Epäonnistui, kelvoton osoite
-synchronize_connection_error=Epäonnistui, latausvirhe
-synchronize_invalid_data=Epäonnistui, kelvoton suodatinlista
-synchronize_checksum_mismatch=Epäonnistui, tarkistussumma ei täsmää
-synchronize_ok=Onnistui
-overwrite=Korvaa
-append=Lisää loppuun
-new_filter_group_title=Uusi suodatin
 type_label_other=muu
 type_label_script=komento
 type_label_image=kuva
@@ -56,15 +28,12 @@ type_label_object=objekti
 type_label_subdocument=kehys
 type_label_document=dokumentti
 type_label_elemhide=piilotettu
-type_label_xbl=XBL-liitos
-type_label_ping=ping-link
+type_label_popup=ponnahdusikkuna
 type_label_xmlhttprequest=XML-pyyntö
 type_label_object_subrequest=objektin alipyyntö
-type_label_dtd=DTD
 type_label_media=ääni/video
 type_label_font=kirjaisin
 fennec_status_enabled=Adblock Plus on käytössä.
 fennec_status_disabled=Adblock Plus ei ole käytössä.
 fennec_status_enabled_site=Adblock Plus on käytössä sivustolla ?1?.
 fennec_status_disabled_site=Adblock Plus poistettu käytöstä sivustolla ?1?.
-sync_engine_title=Adblock Plus tiedosto
diff --git a/chrome/adblockplus.jar!/locale/fi/overlay.dtd b/chrome/adblockplus.jar!/locale/fi/overlay.dtd
index 61eaeaa..b26a836 100644
--- a/chrome/adblockplus.jar!/locale/fi/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/fi/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus - Asetukset">
 <!ENTITY menuitem.accesskey "d">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Estettävät elementit">
 <!ENTITY context.image.label "Adblock Plus: Estä kuva">
 <!ENTITY context.object.label "Adblock Plus: Estä kohde">
 <!ENTITY context.frame.label "Adblock Plus: Estä kehys">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Estettävät elementit avoimella sivulla">
 <!ENTITY sendReport.label "Raportoi ongelma tällä sivulla">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Asetukset">
-<!ENTITY settings.accesskey "A">
+<!ENTITY filters.label "Suodatinasetukset">
+<!ENTITY filters.accesskey "S">
 <!ENTITY opensidebar.label "Näytä elementit">
 <!ENTITY opensidebar.accesskey "e">
 <!ENTITY closesidebar.label "Sulje elementit">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Ei käytössä osoitteessa ?1?">
 <!ENTITY whitelist.page.label "Ei käytössä tällä sivulla">
 <!ENTITY disable.label "Poista käytöstä kaikkialla">
-<!ENTITY recommend.label "Suosittele Facebookissa">
+<!ENTITY options.label "Valinnat">
+<!ENTITY options.accesskey "V">
+<!ENTITY contribute.label "Avusta Adblock Plussaa">
+<!ENTITY showintoolbar.label "Näytä työkalupalkilla">
+<!ENTITY showintoolbar.accesskey "y">
+<!ENTITY showinstatusbar.label "Näytä tilarivillä">
+<!ENTITY showinstatusbar.accesskey "N">
+<!ENTITY showinaddonbar.label "Näytä lisäosapalkilla">
+<!ENTITY showinaddonbar.accesskey "y">
+<!ENTITY objecttabs.label "Korvake Flashin ja Javan yhteydessä">
+<!ENTITY objecttabs.accesskey "K">
+<!ENTITY hideplaceholders.label "Piilota elementit, jotka sisältävät estettyjä elementtejä">
+<!ENTITY hideplaceholders.accesskey "i">
+<!ENTITY counthits.label "Laske suodattimen osumat">
+<!ENTITY counthits.accesskey "L">
+<!ENTITY sync.label "Synkronoi Adblock Plussan asetukset">
+<!ENTITY sync.accesskey "S">
 <!ENTITY objecttab.title "Estä">
 <!ENTITY objecttab.tooltip "Estä tämä objekti Adblock Plussalla">
diff --git a/chrome/adblockplus.jar!/locale/fi/settings.dtd b/chrome/adblockplus.jar!/locale/fi/settings.dtd
deleted file mode 100644
index 56e4871..0000000
--- a/chrome/adblockplus.jar!/locale/fi/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus - Asetukset">
-<!ENTITY filters.label "Suodattimet">
-<!ENTITY filters.accesskey "S">
-<!ENTITY add.label "Lisää suodatin">
-<!ENTITY add.accesskey "L">
-<!ENTITY addsubscription.label "Lisää suodatintilaus">
-<!ENTITY addsubscription.accesskey "i">
-<!ENTITY synchsubscriptions.label "Päivitä kaikki tilaukset">
-<!ENTITY synchsubscriptions.accesskey "k">
-<!ENTITY import.label "Tuo suodattimia">
-<!ENTITY import.accesskey "T">
-<!ENTITY export.label "Vie omia suodattimia">
-<!ENTITY export.accesskey "V">
-<!ENTITY clearall.label "Poista kaikki omat suodattimet">
-<!ENTITY clearall.accesskey "P">
-<!ENTITY resethitcounts.label "Nollaa osumatilastot">
-<!ENTITY resethitcounts.accesskey "N">
-<!ENTITY edit.label "Muokkaa">
-<!ENTITY edit.accesskey "M">
-<!ENTITY cut.label "Leikkaa">
-<!ENTITY cut.accesskey "L">
-<!ENTITY copy.label "Kopioi">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Liitä">
-<!ENTITY paste.accesskey "i">
-<!ENTITY remove.label "Poista">
-<!ENTITY remove.accesskey "P">
-<!ENTITY menu.find.label "Etsi">
-<!ENTITY menu.find.accesskey "E">
-<!ENTITY menu.findagain.label "Etsi seuraava">
-<!ENTITY menu.findagain.accesskey "t">
-<!ENTITY view.label "Näytä">
-<!ENTITY view.accesskey "N">
-<!ENTITY sort.label "Lajitteluperuste">
-<!ENTITY sort.accesskey "E">
-<!ENTITY sort.none.label "Ei lajiteltu">
-<!ENTITY sort.none.accesskey "L">
-<!ENTITY sort.ascending.label "A > Z lajittelu">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A lajittelu">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Valinnat">
-<!ENTITY options.accesskey "V">
-<!ENTITY enable.label "Adblock Plus käytössä">
-<!ENTITY enable.accesskey "d">
-<!ENTITY showintoolbar.label "Näytä työkalupalkilla">
-<!ENTITY showintoolbar.accesskey "y">
-<!ENTITY showinstatusbar.label "Näytä tilarivillä">
-<!ENTITY showinstatusbar.accesskey "N">
-<!ENTITY objecttabs.label "Korvake Flashin ja Javan yhteydessä">
-<!ENTITY objecttabs.accesskey "K">
-<!ENTITY collapse.label "Romahduta estetyt elementit">
-<!ENTITY collapse.accesskey "R">
-<!ENTITY sync.label "Synkronoi Adblock Plussan asetukset">
-<!ENTITY sync.accesskey "S">
-<!ENTITY help.label "Ohje">
-<!ENTITY help.accesskey "O">
-<!ENTITY gettingStarted.label "Alkuun pääseminen">
-<!ENTITY gettingStarted.accesskey "l">
-<!ENTITY faq.label "Usein kysytyt kysymykset (FAQ)">
-<!ENTITY faq.accesskey "U">
-<!ENTITY filterdoc.label "Adblock Plus -suodattimien kirjoittamisesta">
-<!ENTITY filterdoc.accesskey "A">
-<!ENTITY about.label "Tietoja Adblock Plussasta">
-<!ENTITY about.accesskey "T">
-<!ENTITY description "Seuraavat suodattimet määrittelevät sen, mitkä osoitteet estetään ja mitkä sallitaan:">
-<!ENTITY filter.column "Suodatusehto">
-<!ENTITY filter.accesskey "S">
-<!ENTITY slow.column "Hitaat suodattimet">
-<!ENTITY slow.accesskey "H">
-<!ENTITY enabled.column "Käytössä">
-<!ENTITY enabled.accesskey "y">
-<!ENTITY hitcount.column "Osumat">
-<!ENTITY hitcount.accesskey "O">
-<!ENTITY lasthit.column "Viimeisin osuma">
-<!ENTITY lasthit.accesskey "V">
-<!ENTITY context.edit.label "Muokkaa suodatinta">
-<!ENTITY context.resethitcount.label "Nollaa suodattimen osumatilastot">
-<!ENTITY context.synchsubscription.label "Päivitä tilaus nyt">
-<!ENTITY context.editsubscription.label "Muokkaa tilausta">
-<!ENTITY context.moveup.label "Siirrä suodatin ylöspäin">
-<!ENTITY context.movedown.label "Siirrä suodatin alaspäin">
-<!ENTITY context.movegroupup.label "Siirrä ryhmä ylöspäin">
-<!ENTITY context.movegroupdown.label "Siirrä ryhmä alaspäin">
-<!ENTITY context.enable.label "Ota käyttöön">
-<!ENTITY context.disable.label "Poista käytöstä">
-<!ENTITY apply.label "Käytä">
-<!ENTITY apply.accesskey "K">
-<!ENTITY fennec.subscription.label "Suodatintilaus">
diff --git a/chrome/adblockplus.jar!/locale/fi/sidebar.dtd b/chrome/adblockplus.jar!/locale/fi/sidebar.dtd
index c4f98c2..4a8571b 100644
--- a/chrome/adblockplus.jar!/locale/fi/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/fi/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Suodatin">
 <!ENTITY state.label "Tila">
 <!ENTITY size.label "Koko">
+<!ENTITY filterSource.label "Suodattimen lähde">
 <!ENTITY docDomain.label "Dokumentin lähde">
 <!ENTITY docDomain.thirdParty "(kolmas osapuoli)">
 <!ENTITY docDomain.firstParty "(ensimmäinen osapuoli)">
diff --git a/chrome/adblockplus.jar!/locale/fi/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/fi/subscriptionSelection.dtd
index 849e0a1..1c8f188 100644
--- a/chrome/adblockplus.jar!/locale/fi/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/fi/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Lisää Adblock Plus -suodatintilaus">
-<!ENTITY dialog.title.edit "Muokkaa suodatintilausta">
-<!ENTITY description.newInstall "Adblock Plus on tehokkaimmillan, jos lisäät suodatintilauksen. Muut Adblock Plussan käyttäjät tarjoavat suodatintilaukset ilmaiseksi. Kielellesi kaikkein sopivin tilaus on jo valittu.">
 <!ENTITY subscriptionSelector.label "Valitse suodatintilaus listasta:">
 <!ENTITY viewList.label "Näytä suodattimet">
 <!ENTITY visitHomepage.label "Vieraile kotisivulla">
 <!ENTITY addSubscription.label "Lisää suodatintilaus">
-<!ENTITY saveSubscription.label "Tallenna suodatintilaus">
-<!ENTITY other.label "Lisää jokin muu tilaus">
-<!ENTITY other.accesskey "L">
 <!ENTITY list.download.failed "Adblock Plus ei kyennyt hakemaan suodatinlistaa.">
 <!ENTITY list.download.retry "Kokeile uudestaan">
 <!ENTITY list.download.website "Näytä verkkosivu">
 <!ENTITY fromWeb.description "Varmista tämän suodatintilauksen lisääminen. Ennnen tilauksen lisäämistä voit muuttaa tilauksen nimen ja sijainnin.">
-<!ENTITY edit.description "Voit muuttaa tilauksen nimen ja sijainnin, jos tarpeellista.">
-<!ENTITY external.description "Tämä on ulkoinen suodatintilaus; sitä päivittää tilauksen tekijän laajennus.">
 <!ENTITY title.label "Tilauksen nimi:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Listan sijainti:">
 <!ENTITY location.accesskey "i">
-<!ENTITY autodownload.label "Päivitä automaattisesti">
-<!ENTITY autodownload.accesskey "a">
 <!ENTITY supplementMessage "Tätä suodatintilausta on tarkoitus käyttää suodatintilauksen "?1?" kanssa, jota et vielä käytä.">
 <!ENTITY addMain.label "Lisää myös suodatintilaus "?1?"">
 <!ENTITY addMain.accesskey "m">
diff --git a/chrome/adblockplus.jar!/locale/fr/filters.dtd b/chrome/adblockplus.jar!/locale/fr/filters.dtd
new file mode 100644
index 0000000..0ec9a92
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fr/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Préférences Adblock Plus">
+<!ENTITY subscriptions.tab.label "Abonnements à des filtres">
+<!ENTITY filters.tab.label "Filtres personnalisés">
+<!ENTITY addSubscription.label "S'abonner à la liste de filtres">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Ajouter">
+<!ENTITY addSubscriptionCancel.label "Annuler">
+<!ENTITY addSubscriptionOther.label "Ajouter un autre abonnement">
+<!ENTITY noSubscriptions.text "
+ Vous n'avez pas encore ajouté d'abonnement à des filtres. Adblock Plus ne bloquera
+rien sans filtres, veuillez utiliser « Ajouter un abonnement » pour
+ en ajouter.
+">
+<!ENTITY subscription.homepage.label "Page Web">
+<!ENTITY subscription.external.label "Mise à jour par une autre extension">
+<!ENTITY subscription.source.label "Liste de filtres">
+<!ENTITY subscription.enabled.label "Activé">
+<!ENTITY subscription.lastDownload.label "Dernière mise à jour :">
+<!ENTITY subscription.lastDownload.inProgress "Téléchargement en cours…">
+<!ENTITY subscription.lastDownload.unknown "Inconnu">
+<!ENTITY subscription.lastDownload.invalidURL "Échec, ceci n'est pas une adresse valide !">
+<!ENTITY subscription.lastDownload.connectionError "Échec, erreur lors du téléchargement !">
+<!ENTITY subscription.lastDownload.invalidData "Échec, ceci n'est pas une liste de filtres valide !">
+<!ENTITY subscription.lastDownload.checksumMismatch "Échec, le checksum ne correspond pas !">
+<!ENTITY subscription.lastDownload.success "Réussie">
+<!ENTITY subscription.minVersion.warning "Cet abonnement nécessite une version plus récente d'Adblock Plus, vous devriez installer la drenière version d'Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Certains filtres de cet abonnement sont désactivés.">
+<!ENTITY subscription.disabledFilters.enable "Activer les filtres désactivés">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY subscription.update.label "Mettre à jour les filtres">
+<!ENTITY subscription.editTitle.label "Modifier le titre">
+<!ENTITY subscription.delete.label "Supprimer">
+<!ENTITY subscription.showHideFilters.label "Afficher/masquer les filtres">
+<!ENTITY subscription.moveUp.label "Monter">
+<!ENTITY subscription.moveDown.label "Descendre">
+<!ENTITY acceptableAds.label "Autoriser les publicités non-intrusives">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Apprendre davantage">
+<!ENTITY addGroup.label "Ajouter un groupe de filtres">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+ Vous n'avez pas encore de filtres personnalisés.
+">
+<!ENTITY addFilter.label "Ajouter un filtre">
+<!ENTITY addFilter.accesskey "n">
+<!ENTITY filter.actions.label "Actions sur filtre">
+<!ENTITY filter.edit.label "Modifier">
+<!ENTITY filter.cut.label "Couper">
+<!ENTITY filter.copy.label "Copier">
+<!ENTITY filter.paste.label "Coller">
+<!ENTITY filter.delete.label "Supprimer">
+<!ENTITY filter.selectAll.label "Tout sélectionner">
+<!ENTITY filter.resetHitCounts.label "Mettre le compteur à zéro">
+<!ENTITY filter.moveUp.label "Monter">
+<!ENTITY filter.moveDown.label "Descendre">
+<!ENTITY viewMenu.label "Affichage">
+<!ENTITY filter.column "Règle de filtrage">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Afficher les filtres">
+<!ENTITY slow.accesskey "h">
+<!ENTITY enabled.column "Activé">
+<!ENTITY enabled.accesskey "c">
+<!ENTITY hitcount.column "Compteur">
+<!ENTITY hitcount.accesskey "m">
+<!ENTITY lasthit.column "Dernière utilisation">
+<!ENTITY lasthit.accesskey "D">
+<!ENTITY sort.label "Trier par">
+<!ENTITY sort.accesskey "T">
+<!ENTITY sort.none.label "Non trié">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "Ordre de A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordre de Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Vous devez choisir un groupe de filtres avant de pouvoir les afficher.">
+<!ENTITY noFiltersInGroup.text "Le groupe sélectionné est vide">
+<!ENTITY filters.remove.warning "Souhaitez-vous vraiment supprimer tous les filtres sélectionnés ?">
+<!ENTITY backupButton.label "Sauvegarde et restauration">
+<!ENTITY backupButton.accesskey "S">
+<!ENTITY backup.label "Créer une nouvelle sauvegarde">
+<!ENTITY restore.default.label "Restaurer la sauvegarde du ?1?">
+<!ENTITY restore.own.label "Restaurer une sauvegarde personnelle">
+<!ENTITY backup.complete.title "Tous les filtres et abonnements">
+<!ENTITY backup.custom.title "Uniquement les filtres personnalisés">
+<!ENTITY backup.error "Une erreur s'est produite lors de l'écriture des filtres dans le fichier. Assurez-vous que ce fichier n'est pas protégé en écriture ou utilisé par une autre application.">
+<!ENTITY restore.error "Les données de ce fichier ne peuvent être traitées, il est possible qu'il ne s'agisse pas d'un fichier de données d'Adblock Plus.">
+<!ENTITY restore.complete.warning "Toutes vos préférences pour les filtres seront remplacées par le contenu du fichier sélectionné. Voulez-vous continuer ?">
+<!ENTITY restore.custom.warning "Tous vos filtres personnalisés seront remplacés par le contenu du fichier sélectionné. Voulez-vous continuer ?">
+<!ENTITY restore.minVersion.warning "Attention : le fichier a été créé avec une nouvelle version d'Adblock Plus. Vous devriez mettre à jour et passer à la dernière version avant de restaurer vos données avec ce fichier.">
+<!ENTITY find.label "Rechercher">
+<!ENTITY find.accesskey "c">
+<!ENTITY close.label "Fermer">
diff --git a/chrome/adblockplus.jar!/locale/fr/firstRun.dtd b/chrome/adblockplus.jar!/locale/fr/firstRun.dtd
new file mode 100644
index 0000000..74fd326
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fr/firstRun.dtd
@@ -0,0 +1,9 @@
+<!ENTITY dialog.title "Installation terminée de Adblock Plus">
+<!ENTITY confirmation "Merci d'avoir installé Adblock Plus. Les publicités seront bloquées désormais. Profitez de l'aubaine !">
+<!ENTITY advancedSection "Options avancées">
+<!ENTITY listSelection1 "La liste de filtres suivante a été configurée pour bloquer de la publicité :">
+<!ENTITY noList "Pas de liste de filtres">
+<!ENTITY visitHomepage.label "Se rendre au site Web de la liste">
+<!ENTITY acceptableAds "Adblock Plus a été également configurée pour autoriser de la publicité non-intrusive.">
+<!ENTITY readMore.label "Lire davantage à ce propos">
+<!ENTITY listSelection2 "Vous pouvez modifier cette sélection à tout moment dans les [link]Préférences de filtre[/link].">
diff --git a/chrome/adblockplus.jar!/locale/fr/global.properties b/chrome/adblockplus.jar!/locale/fr/global.properties
index 2d5b082..5616f9a 100644
--- a/chrome/adblockplus.jar!/locale/fr/global.properties
+++ b/chrome/adblockplus.jar!/locale/fr/global.properties
@@ -10,61 +10,30 @@ blocked_count_tooltip=?1? bloqués sur ?2?
 blocked_count_addendum=(également en liste blanche : ?1?, masqué(s) : ?2?)
 no_blocking_suggestions=Aucun élément filtrable sur cette page
 whitelisted_page=Adblock Plus a été désactivée pour cette page
-whitelist_description=Mes règles d'exceptions (liste blanche)
-filterlist_description=Mes filtres de publicités
-invalid_description=Mes filtres invalides
-elemhide_description=Mes filtres masquant les éléments
-subscription_description=Abonnement :
-subscription_wrong_version=Quelques filtres de cet abonnement requièrent Adblock Plus ?1? pour fonctionner correctement !
-subscription_source=Source :
-subscription_status=État :
-subscription_status_autodownload=Mise à jour automatiquement
-subscription_status_manualdownload=Mise à jour manuellement
-subscription_status_externaldownload=Mise à jour externe (par une autre extension)
-subscription_status_lastdownload=Dernière mise à jour :
-subscription_status_lastdownload_inprogress=Téléchargement en cours…
-subscription_status_lastdownload_unknown=Inconnu
+newGroup_title=Nouveau groupe de filtres
+whitelistGroup_title=Règles d'exception
+blockingGroup_title=Règles de blocage de publicités
+elemhideGroup_title=Règles de masquage d'élément
 remove_subscription_warning=Souhaitez-vous vraiment vous désabonner ?
-import_filters_wrong_version=Avertissement : Quelques filtres dans cette liste requièrent Adblock Plus ?1? pour fonctionner correctement. Vous devriez mettre à jour Adblock Plus avant d'importer cette liste.
-import_filters_warning=Souhaitez-vous remplacer vos filtres actuels ou ajouter les nouveaux filtres à la fin de la liste ?
-import_filters_title=Importation de filtres
-export_filters_title=Exportation de filtres
-invalid_filters_file=Ceci n'est pas un fichier de filtres Adblock Plus valide.
-filters_write_error=Une erreur s'est produite lors de l'enregistrement des filtres dans le fichier. Assurez-vous que le fichier n'est pas protégé en écriture ou utilisé par un autre programme.
-clearall_warning=Souhaitez-vous vraiment supprimer tous les filtres de la liste ?
-resethitcounts_warning=Souhaitez-vous vraiment remettre le compteur de fréquence d'utilisation à zéro pour tous les filtres ? Cette opération est irréversible !
-resethitcounts_selected_warning=Souhaitez-vous vraiment remettre le compteur de fréquence d'utilisation à zéro pour les filtres sélectionnés ? Cette opération est irréversible !
+clearStats_warning=Cela va remettre à zéro le compteur d'utilisation et désactiver le comptage d'utilisation de filtre. Souhaitez-vous vraiment poursuivre ?
 filter_regexp_tooltip=Ce filtre est soit une expression régulière soit trop court pour être optimisé. Un excès de ce genre de filtres pourra ralentir votre navigation.
 filter_elemhide_duplicate_id=Il n'est possible de spécifier qu'une ID de l'élément à masquer
 filter_elemhide_nocriteria=Aucun critère spécifié pour reconnaître l'élément à masquer
-subscription_notAdded_warning=Vous n'avez pas ajouté d'abonnement à une liste de filtres. Sans abonnement, vous devrez ajouter des filtres Adblock Plus manuellement.
-subscription_notAdded_warning_addendum=Voulez-vous continuer ?
 subscription_invalid_location=L'adresse indiquant l'emplacement de la liste de filtres n'est ni une URL valide, ni un nom de fichier valide.
-synchronize_invalid_url=Échec, ceci n'est pas une adresse valide !
-synchronize_connection_error=Échec, erreur lors du téléchargement !
-synchronize_invalid_data=Échec, ceci n'est pas une liste de filtres valide !
-synchronize_checksum_mismatch=Échec, le checksum ne correspond pas !
-synchronize_ok=Réussie
-overwrite=Remplacer
-append=Ajouter
-new_filter_group_title=Nouveau filtre
 type_label_other=autre
 type_label_script=script
 type_label_image=image
-type_label_stylesheet=feuille de style
+type_label_stylesheet=feuille de styles
 type_label_object=objet
 type_label_subdocument=cadre
 type_label_document=document
 type_label_elemhide=masqué
-type_label_xbl=liaison XBL
-type_label_ping=ping de lien
+type_label_popup=Fenêtre popup
 type_label_xmlhttprequest=requête XML
 type_label_object_subrequest=sous-requête objet
-type_label_dtd=DTD
 type_label_media=audio/vidéo
 type_label_font=police
-fennec_status_enabled=Adblock Plus est activé.
-fennec_status_disabled=Adblock Plus est désactivé.
-fennec_status_enabled_site=Adblock Plus est activé pour ?1?.
-fennec_status_disabled_site=Adblock Plus est désactivé pour ?1?.
-sync_engine_title=Données d'Adblock Plus
+fennec_status_enabled=Adblock Plus est activée.
+fennec_status_disabled=Adblock Plus est désactivée.
+fennec_status_enabled_site=Adblock Plus est activée pour ?1?.
+fennec_status_disabled_site=Adblock Plus est désactivée pour ?1?.
diff --git a/chrome/adblockplus.jar!/locale/fr/overlay.dtd b/chrome/adblockplus.jar!/locale/fr/overlay.dtd
index a721904..b5bbc30 100644
--- a/chrome/adblockplus.jar!/locale/fr/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/fr/overlay.dtd
@@ -4,17 +4,16 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus : éléments filtrables">
 <!ENTITY context.image.label "Bloquer l'image avec Adblock">
 <!ENTITY context.object.label "Bloquer l'objet avec Adblock">
 <!ENTITY context.frame.label "Bloquer le cadre avec Adblock">
-<!ENTITY context.media.label "Bloquer les vidéo/audio avec Adblock">
+<!ENTITY context.media.label "Bloquer les vidéos/audios avec Adblock">
 <!ENTITY context.removeWhitelist.label "Adblock Plus : activer à nouveau pour cette page">
 <!ENTITY sidebar.title "Éléments filtrables dans la page courante">
 <!ENTITY sendReport.label "Rapporter un problème sur cette page">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Préférences">
-<!ENTITY settings.accesskey "P">
+<!ENTITY filters.label "Préférences de filtre">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Ouvrir la liste des éléments filtrables">
 <!ENTITY opensidebar.accesskey "m">
 <!ENTITY closesidebar.label "Fermer la liste des éléments filtrables">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Désactiver pour ?1?">
 <!ENTITY whitelist.page.label "Désactiver pour cette page uniquement">
 <!ENTITY disable.label "Désactiver partout">
-<!ENTITY recommend.label "Nous recommander sur Facebook">
+<!ENTITY options.label "Options">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Contribuer à Adblock Plus">
+<!ENTITY showintoolbar.label "Afficher dans la barre d'outils">
+<!ENTITY showintoolbar.accesskey "o">
+<!ENTITY showinstatusbar.label "Afficher dans la barre d'état">
+<!ENTITY showinstatusbar.accesskey "n">
+<!ENTITY showinaddonbar.label "Afficher dans la barre des modules">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Afficher une étiquette pour Flash et Java">
+<!ENTITY objecttabs.accesskey "J">
+<!ENTITY hideplaceholders.label "Masquer les conteneurs des éléments bloqués">
+<!ENTITY hideplaceholders.accesskey "q">
+<!ENTITY counthits.label "Compter la fréquence d'utilisation de filtre">
+<!ENTITY counthits.accesskey "m">
+<!ENTITY sync.label "Synchroniser les paramètres d'Adblock Plus">
+<!ENTITY sync.accesskey "y">
 <!ENTITY objecttab.title "Bloquer">
 <!ENTITY objecttab.tooltip "Cliquer ici afin qu'Adblock Plus bloque cet objet">
diff --git a/chrome/adblockplus.jar!/locale/fr/settings.dtd b/chrome/adblockplus.jar!/locale/fr/settings.dtd
deleted file mode 100644
index 08e35af..0000000
--- a/chrome/adblockplus.jar!/locale/fr/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Préférences d'Adblock Plus">
-<!ENTITY filters.label "Filtres">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Ajouter un filtre">
-<!ENTITY add.accesskey "j">
-<!ENTITY addsubscription.label "S'abonner à la liste de filtres">
-<!ENTITY addsubscription.accesskey "l">
-<!ENTITY synchsubscriptions.label "Mettre à jour tous les abonnements">
-<!ENTITY synchsubscriptions.accesskey "t">
-<!ENTITY import.label "Importer des filtres">
-<!ENTITY import.accesskey "I">
-<!ENTITY export.label "Exporter les filtres personnalisés">
-<!ENTITY export.accesskey "E">
-<!ENTITY clearall.label "Supprimer tous les filtres personnalisés">
-<!ENTITY clearall.accesskey "S">
-<!ENTITY resethitcounts.label "Remettre le compteur à zéro">
-<!ENTITY resethitcounts.accesskey "z">
-<!ENTITY edit.label "Édition">
-<!ENTITY edit.accesskey "d">
-<!ENTITY cut.label "Couper">
-<!ENTITY cut.accesskey "u">
-<!ENTITY copy.label "Copier">
-<!ENTITY copy.accesskey "p">
-<!ENTITY paste.label "Coller">
-<!ENTITY paste.accesskey "o">
-<!ENTITY remove.label "Supprimer">
-<!ENTITY remove.accesskey "m">
-<!ENTITY menu.find.label "Rechercher">
-<!ENTITY menu.find.accesskey "h">
-<!ENTITY menu.findagain.label "Rechercher à nouveau">
-<!ENTITY menu.findagain.accesskey "v">
-<!ENTITY view.label "Affichage">
-<!ENTITY view.accesskey "h">
-<!ENTITY sort.label "Trier par">
-<!ENTITY sort.accesskey "T">
-<!ENTITY sort.none.label "Non trié">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "Ordre de A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ordre de Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Options">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Activer Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Afficher dans la barre d'outils">
-<!ENTITY showintoolbar.accesskey "o">
-<!ENTITY showinstatusbar.label "Afficher dans la barre d'état">
-<!ENTITY showinstatusbar.accesskey "n">
-<!ENTITY objecttabs.label "Afficher une étiquette pour Flash et Java">
-<!ENTITY objecttabs.accesskey "J">
-<!ENTITY collapse.label "Utiliser l'espace libéré par les éléments bloqués">
-<!ENTITY collapse.accesskey "u">
-<!ENTITY sync.label "Synchroniser les paramètres d'Adblock Plus">
-<!ENTITY sync.accesskey "y">
-<!ENTITY help.label "Aide">
-<!ENTITY help.accesskey "A">
-<!ENTITY gettingStarted.label "Pour commencer">
-<!ENTITY gettingStarted.accesskey "m">
-<!ENTITY faq.label "Foire Aux Questions">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Créer des filtres Adblock Plus">
-<!ENTITY filterdoc.accesskey "C">
-<!ENTITY about.label "À propos d'Adblock Plus">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Les filtres suivants indiquent les adresses qui devront être bloquées et celles qui devront être autorisées :">
-<!ENTITY filter.column "Règle de filtrage">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Afficher les filtres">
-<!ENTITY slow.accesskey "h">
-<!ENTITY enabled.column "Activé">
-<!ENTITY enabled.accesskey "c">
-<!ENTITY hitcount.column "Compteur">
-<!ENTITY hitcount.accesskey "m">
-<!ENTITY lasthit.column "Dernière utilisation">
-<!ENTITY lasthit.accesskey "D">
-<!ENTITY context.edit.label "Modifier le filtre">
-<!ENTITY context.resethitcount.label "Remettre le compteur à zéro">
-<!ENTITY context.synchsubscription.label "Mettre à jour maintenant">
-<!ENTITY context.editsubscription.label "Éditer l'abonnement">
-<!ENTITY context.moveup.label "Monter">
-<!ENTITY context.movedown.label "Descendre">
-<!ENTITY context.movegroupup.label "Monter la sélection">
-<!ENTITY context.movegroupdown.label "Descendre la sélection">
-<!ENTITY context.enable.label "Activer">
-<!ENTITY context.disable.label "Désactiver">
-<!ENTITY apply.label "Appliquer">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "Abonnement">
diff --git a/chrome/adblockplus.jar!/locale/fr/sidebar.dtd b/chrome/adblockplus.jar!/locale/fr/sidebar.dtd
index 06c5bec..f1f0857 100644
--- a/chrome/adblockplus.jar!/locale/fr/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/fr/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtre">
 <!ENTITY state.label "État">
 <!ENTITY size.label "Taille">
+<!ENTITY filterSource.label "Source du filtre">
 <!ENTITY docDomain.label "Source du document">
 <!ENTITY docDomain.thirdParty "(troisième partie)">
 <!ENTITY docDomain.firstParty "(première partie)">
diff --git a/chrome/adblockplus.jar!/locale/fr/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/fr/subscriptionSelection.dtd
index 5f826a8..6cdfe4a 100644
--- a/chrome/adblockplus.jar!/locale/fr/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/fr/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Ajouter un abonnement à une liste de filtres Adblock Plus">
-<!ENTITY dialog.title.edit "Modifier l'abonnement">
-<!ENTITY description.newInstall "Adblock Plus sera plus efficace si vous vous souscrivez à une liste de filtres. Les abonnements sont fournis gracieusement par d'autres utilisateurs d'Adblock Plus. L'abonnement le plus adapté à votre langue est d'ores et déjà sélectionné.">
 <!ENTITY subscriptionSelector.label "Veuillez choisir un abonnement dans la liste suivante :">
 <!ENTITY viewList.label "Afficher les filtres">
 <!ENTITY visitHomepage.label "Se rendre au site Web">
 <!ENTITY addSubscription.label "Ajouter l'abonnement">
-<!ENTITY saveSubscription.label "Enregistrer l'abonnement">
-<!ENTITY other.label "Ajouter un autre abonnement">
-<!ENTITY other.accesskey "t">
 <!ENTITY list.download.failed "Adblock Plus n'a pu récupérer la liste des abonnements.">
 <!ENTITY list.download.retry "Essayer à nouveau">
 <!ENTITY list.download.website "Afficher le site Web">
 <!ENTITY fromWeb.description "Veuillez confirmer que vous souhaitez ajouter cet abonnement. Vous pouvez modifier le titre et l'emplacement de l'abonnement avant de l'ajouter.">
-<!ENTITY edit.description "Vous pouvez modifier le titre et l'emplacement à votre convenance.">
-<!ENTITY external.description "Ceci est un abonnement externe ; il sera mis à jour par l'extension qui a créé cet abonnement.">
 <!ENTITY title.label "Nom de l'abonnement :">
 <!ENTITY title.accesskey "N">
 <!ENTITY location.label "Emplacement de la liste :">
 <!ENTITY location.accesskey "E">
-<!ENTITY autodownload.label "Mettre à jour automatiquement">
-<!ENTITY autodownload.accesskey "M">
 <!ENTITY supplementMessage "Cet abonnement est prévu pour être utilisé avec l'abonnement "?1?" que vous n'utilisez pas encore.">
 <!ENTITY addMain.label "Ajouter également l'abonnement "?1?"">
 <!ENTITY addMain.accesskey "a">
diff --git a/chrome/adblockplus.jar!/locale/fy-NL/filters.dtd b/chrome/adblockplus.jar!/locale/fy-NL/filters.dtd
new file mode 100644
index 0000000..50b89a8
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fy-NL/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Filterabonnemint tafoegje">
+<!ENTITY addSubscriptionOther.label "In oar abonnemint tafoegje">
+<!ENTITY subscription.lastDownload.label "Lêste ynlaad:">
+<!ENTITY subscription.lastDownload.inProgress "Ynlade...">
+<!ENTITY subscription.lastDownload.unknown "n.f.t.">
+<!ENTITY subscription.lastDownload.invalidURL "Mislearre, gjin jildich adres">
+<!ENTITY subscription.lastDownload.connectionError "Mislearre, ynlaadprobleem">
+<!ENTITY subscription.lastDownload.invalidData "Mislearre, gjin jildige filterlist">
+<!ENTITY subscription.lastDownload.checksumMismatch "Mislearre, checksum komt net oerien">
+<!ENTITY subscription.lastDownload.success "Slagge">
+<!ENTITY addFilter.label "Tafoegje">
+<!ENTITY filter.cut.label "Knippe">
+<!ENTITY filter.copy.label "Kopiearje">
+<!ENTITY filter.paste.label "Plakke">
+<!ENTITY filter.delete.label "Fuortsmite">
+<!ENTITY viewMenu.label "Byld">
+<!ENTITY filter.column "Filterrigel">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Langsame filters">
+<!ENTITY slow.accesskey "g">
+<!ENTITY enabled.column "Ynskeakele">
+<!ENTITY enabled.accesskey "k">
+<!ENTITY hitcount.column "Hits">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Lêste hit">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Sortearje op">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Net sortearre">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "A > Z sortearoarder">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A sortearoarder">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Sykje">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/fy-NL/firstRun.dtd b/chrome/adblockplus.jar!/locale/fy-NL/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/fy-NL/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/fy-NL/global.properties b/chrome/adblockplus.jar!/locale/fy-NL/global.properties
index 0391722..676070a 100644
--- a/chrome/adblockplus.jar!/locale/fy-NL/global.properties
+++ b/chrome/adblockplus.jar!/locale/fy-NL/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? fan de ?2?
 blocked_count_addendum=(ek wytliste: ?1?, ferstoppe: ?2?)
 no_blocking_suggestions=Gjin blokkearbere ûnderdielen op dizze side
 whitelisted_page=Adblock Plus is útskeakele foar dizze side
-whitelist_description=Utsûnderingsrigels
-filterlist_description=Reklamefilters
-invalid_description=Unjildige filters
-elemhide_description=Ferstoprigels
-subscription_description=Filterabonnemint:
-subscription_wrong_version=Sommige filters yn dit abonnemint fereaskje Adblock Plus ?1? om goed te wurkjen!
-subscription_source=Boarne:
-subscription_status=Steat:
-subscription_status_autodownload=Automatysk bywurke
-subscription_status_manualdownload=Hânmjittich bywurke
-subscription_status_externaldownload=Ekstern bywurke (troch in oare útwreiding)
-subscription_status_lastdownload=Lêste ynlaad:
-subscription_status_lastdownload_inprogress=Ynlade...
-subscription_status_lastdownload_unknown=n.f.t.
 remove_subscription_warning=Witte jo seker dat jo dit abonnemint fuortsmite wolle?
-import_filters_wrong_version=Warskôging: sommige filters yn dit abonnemint fereaskje Adblock Plus ?1? om goed te wurkjen! Jo kinne it bêste in nije ferzje fan Adblock Plus ynstallearje eardat jo dizze list ymportearje.
-import_filters_warning=Wolle jo jo aktuele filters ferfange of de nije filters oan it ein fan de list tafoegje?
-import_filters_title=Filters ymportearje
-export_filters_title=Filters eksportearje
-invalid_filters_file=Gjin jildich bestân mei Adblock Plus filters.
-filters_write_error=Der wie in flater by it skriuwen fan filters nei it bestân. Kontrolearje oft it bestân net tsjin skriuwen befeilige is of brûkt wurdt troch in oar programma.
-clearall_warning=Witte jo seker dat jo alle filters fan de list fuortsmite wolle?
-resethitcounts_warning=Witte jo seker dat jo it oantal hits foar alle filters wer op nul sette wolle? Dizze binne achterôf net mear werom te setten!
-resethitcounts_selected_warning=Witte jo seker dat jo it oantal hits foar de selektearre filters wer op nul sette wolle? Dizze binne achterôf net mear werom te setten!
 filter_regexp_tooltip=Dit filter is of in reguliere ekspresje of te koart om optimalisearre te wurden. Te folle fan dizze filters kinne it sneupjen fertrage.
 filter_elemhide_duplicate_id=Der kin allinnich ien ID fan it te ferstoppen elemint spesifisearre wurde
 filter_elemhide_nocriteria=Gjin kritearia spesifisearre om it te ferstoppen elemint te ûntdekken
-subscription_notAdded_warning=Jo hawwe net in filterabonnemint tafoege. Sûnder in filterabonnemint moatte jo sels Adblock Plus filters tafoegje.
-subscription_notAdded_warning_addendum=Wolle jo trochgean?
 subscription_invalid_location=Dizze lokaasje foar in filterlist is gjin jildige URL of gjin jildige bestânsnamme.
-synchronize_invalid_url=Mislearre, gjin jildich adres
-synchronize_connection_error=Mislearre, ynlaadprobleem
-synchronize_invalid_data=Mislearre, gjin jildige filterlist
-synchronize_checksum_mismatch=Mislearre, checksum komt net oerien
-synchronize_ok=Slagge
-overwrite=Oerskriuwe
-append=Tafoegje
-new_filter_group_title=Nij filter
 type_label_other=oars
 type_label_script=skript
 type_label_image=ôfbylding
@@ -56,15 +23,17 @@ type_label_object=objekt
 type_label_subdocument=dielfinster
 type_label_document=dokumint
 type_label_elemhide=ferstoppe
-type_label_xbl=XBL bining
-type_label_ping=keppeling ping
 type_label_xmlhttprequest=XML fersyk
 type_label_object_subrequest=objekt subfersyk
-type_label_dtd=DTD
 type_label_media=audio/fideo
 type_label_font=lettertype
 fennec_status_enabled=Adblock Plus is ynskeakele.
 fennec_status_disabled=Adblock Plus is útskeakele.
 fennec_status_enabled_site=Adblock Plus is ynskeakele op ?1?.
 fennec_status_disabled_site=Adblock Plus is ynskeakele op ?1?.
-sync_engine_title=Adblock Plus gegevens
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/fy-NL/overlay.dtd b/chrome/adblockplus.jar!/locale/fy-NL/overlay.dtd
index ccc082e..f5e1c69 100644
--- a/chrome/adblockplus.jar!/locale/fy-NL/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/fy-NL/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokkearbere items">
 <!ENTITY context.image.label "Ofbylding blokkearje">
 <!ENTITY context.object.label "Objekt blokkearje">
 <!ENTITY context.frame.label "Dielfinster blokkearje">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Blokkearbere ûnderdelen op dizze side">
 <!ENTITY sendReport.label "Rapportearje probleem op dizze side">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Foarkarren">
-<!ENTITY settings.accesskey "F">
 <!ENTITY opensidebar.label "Blokkearbere ûnderdielen iepenje">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Blokkearbere ûnderdielen slute">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Utskeakelje op ?1?">
 <!ENTITY whitelist.page.label "Allinnich op dizze side útskeakelje">
 <!ENTITY disable.label "Oeral útskeakelje">
-<!ENTITY recommend.label "Rekommandearje ús oan op Facebook">
+<!ENTITY options.label "Opsjes">
+<!ENTITY options.accesskey "O">
+<!ENTITY showintoolbar.label "Toane yn arkbalke">
+<!ENTITY showintoolbar.accesskey "a">
+<!ENTITY showinstatusbar.label "Toane yn steatbalke">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY objecttabs.label "Ljepblêden sjen litte op Flash en Java">
+<!ENTITY objecttabs.accesskey "T">
+<!ENTITY sync.label "Sync Adblock Plus opsjes">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Blokkearje">
 <!ENTITY objecttab.tooltip "Klik hjir om dit objekt te blokkearjen mei Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/fy-NL/settings.dtd b/chrome/adblockplus.jar!/locale/fy-NL/settings.dtd
deleted file mode 100644
index 8998836..0000000
--- a/chrome/adblockplus.jar!/locale/fy-NL/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus foarkarren">
-<!ENTITY filters.label "Filters">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Tafoegje">
-<!ENTITY add.accesskey "g">
-<!ENTITY addsubscription.label "Filterabonnemint tafoegje">
-<!ENTITY addsubscription.accesskey "A">
-<!ENTITY synchsubscriptions.label "Alle abonneminten bywurkje">
-<!ENTITY synchsubscriptions.accesskey "l">
-<!ENTITY import.label "Filters ymportearje">
-<!ENTITY import.accesskey "Y">
-<!ENTITY export.label "Filters eksportearje">
-<!ENTITY export.accesskey "E">
-<!ENTITY clearall.label "Alle filters fuortsmite">
-<!ENTITY clearall.accesskey "f">
-<!ENTITY resethitcounts.label "Tebeksette trefstatistiken">
-<!ENTITY resethitcounts.accesskey "T">
-<!ENTITY edit.label "Bewurkje">
-<!ENTITY edit.accesskey "W">
-<!ENTITY cut.label "Knippe">
-<!ENTITY cut.accesskey "n">
-<!ENTITY copy.label "Kopiearje">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Plakke">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Fuortsmite">
-<!ENTITY remove.accesskey "F">
-<!ENTITY menu.find.label "Sykje">
-<!ENTITY menu.find.accesskey "S">
-<!ENTITY menu.findagain.label "Op 'e nij sykje">
-<!ENTITY menu.findagain.accesskey "O">
-<!ENTITY view.label "Byld">
-<!ENTITY view.accesskey "B">
-<!ENTITY sort.label "Sortearje op">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Net sortearre">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "A > Z sortearoarder">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A sortearoarder">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opsjes">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Adblock Plus ynskeakelje">
-<!ENTITY enable.accesskey "y">
-<!ENTITY showintoolbar.label "Toane yn arkbalke">
-<!ENTITY showintoolbar.accesskey "a">
-<!ENTITY showinstatusbar.label "Toane yn steatbalke">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Ljepblêden sjen litte op Flash en Java">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "Blokkearre eleminten ynklappe">
-<!ENTITY collapse.accesskey "B">
-<!ENTITY sync.label "Sync Adblock Plus opsjes">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Help">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "Starte mei Adblock Plus">
-<!ENTITY gettingStarted.accesskey "S">
-<!ENTITY faq.label "Meaststelde fragen">
-<!ENTITY faq.accesskey "f">
-<!ENTITY filterdoc.label "It skriuwen fan Adblock Plus filters">
-<!ENTITY filterdoc.accesskey "I">
-<!ENTITY about.label "Oer Adblock Plus">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Foech it adres ta dat jo blokkearje wolle, sjoch de karlist foar foarstellen. Jo kinne in * as jokerteken brûke foar mear algemiene filters. Betûfte brûkers kinne reguliere ekspresjes brûke, lykas /banner\d+\.gif$/.">
-<!ENTITY filter.column "Filterrigel">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Langsame filters">
-<!ENTITY slow.accesskey "g">
-<!ENTITY enabled.column "Ynskeakele">
-<!ENTITY enabled.accesskey "k">
-<!ENTITY hitcount.column "Hits">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "Lêste hit">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Filter wizigje">
-<!ENTITY context.resethitcount.label "Trefstatistiken tebeksette foar filter">
-<!ENTITY context.synchsubscription.label "Abonnemint no bywurkje">
-<!ENTITY context.editsubscription.label "Abonnemint wizigje">
-<!ENTITY context.moveup.label "Omheech ferpleatse">
-<!ENTITY context.movedown.label "Omleech ferpleatse">
-<!ENTITY context.movegroupup.label "Groep omheech ferpleatse">
-<!ENTITY context.movegroupdown.label "Groep omleech ferpleatse">
-<!ENTITY context.enable.label "Ynskeakelje">
-<!ENTITY context.disable.label "Utskeakelje">
-<!ENTITY apply.label "Tapasse">
-<!ENTITY apply.accesskey "T">
-<!ENTITY fennec.subscription.label "Filterabonnemint">
diff --git a/chrome/adblockplus.jar!/locale/fy-NL/sidebar.dtd b/chrome/adblockplus.jar!/locale/fy-NL/sidebar.dtd
index 6cf980f..9cea8e8 100644
--- a/chrome/adblockplus.jar!/locale/fy-NL/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/fy-NL/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Kopiearje">
 <!ENTITY context.copyFilter.label "Filter kopiearje">
 <!ENTITY context.selectAll.label "Selektearje alles">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/fy-NL/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/fy-NL/subscriptionSelection.dtd
index f9e2495..1166922 100644
--- a/chrome/adblockplus.jar!/locale/fy-NL/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/fy-NL/subscriptionSelection.dtd
@@ -1,27 +1,16 @@
 <!ENTITY dialog.title "Foegje Adblock Plus filterabonnemint ta">
-<!ENTITY dialog.title.edit "Filter abonnemint wizigje">
-<!ENTITY description.newInstall "Adblock Plus sil it meast effektyf wêze as jo in filterabonnemint tafoegje.
-	Filterabonneminten wurde oanlevere troch oare Adblock Plus brûkers hielendal fergees.
-	It meast fan tapassing achte abonnnemint foar jo taal is al selektearre.">
 <!ENTITY subscriptionSelector.label "Kies in filterabonnemint út de list:">
 <!ENTITY viewList.label "Toan filters">
 <!ENTITY visitHomepage.label "Besykje thússide">
 <!ENTITY addSubscription.label "Abonnemint tafoegje">
-<!ENTITY saveSubscription.label "Abonnemint bewarje">
-<!ENTITY other.label "In oar abonnemint tafoegje">
-<!ENTITY other.accesskey "T">
 <!ENTITY list.download.failed "It is Adblock Plus net slagge om de list mei abonneminten te krijen.">
 <!ENTITY list.download.retry "Op 'e nij besykje">
 <!ENTITY list.download.website "Toan webstee">
 <!ENTITY fromWeb.description "Befestigje asjobleaft dat jo dit filterabonnemint tafoegje wolle. Jo kinne de abonneminttitel of lokaasje wizigje foardat jo it tafoegje.">
-<!ENTITY edit.description "Jo kinne de abonneminttitel of lokaasje wizigje as jo wolle.">
-<!ENTITY external.description "Dit is een ekstern filterabonnemint; it sil fernijd wurde by de útwreiding dy't dit abonnemint makke hat.">
 <!ENTITY title.label "Abonnemintnamme:">
 <!ENTITY title.accesskey "B">
 <!ENTITY location.label "Filterlist lokaasje:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Automatysk bywurkje">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Dit filterabonnemint is bedoeld om brûkt te wurden mei it filterabonnemint "?1?" dy't jo no noch net brûke.">
 <!ENTITY addMain.label "Filterabonnemint "?1?" ek tafoegje">
 <!ENTITY addMain.accesskey "F">
diff --git a/chrome/adblockplus.jar!/locale/gl/filters.dtd b/chrome/adblockplus.jar!/locale/gl/filters.dtd
new file mode 100644
index 0000000..0234895
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/gl/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Engadir subscrición de filtros">
+<!ENTITY addSubscriptionOther.label "Engadir outra subscrición">
+<!ENTITY subscription.lastDownload.label "Última descarga:">
+<!ENTITY subscription.lastDownload.inProgress "Descargando...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Fallou, non é unha dirección válida">
+<!ENTITY subscription.lastDownload.connectionError "Fallou, fracasou a descarga">
+<!ENTITY subscription.lastDownload.invalidData "Fallou, non é unha lista de filtros válida">
+<!ENTITY subscription.lastDownload.checksumMismatch "Fallou, a proba 'checksum' non cadrou">
+<!ENTITY subscription.lastDownload.success "Valeu">
+<!ENTITY addFilter.label "Engadir filtro">
+<!ENTITY filter.cut.label "Cortar">
+<!ENTITY filter.copy.label "Copiar">
+<!ENTITY filter.paste.label "Pegar">
+<!ENTITY filter.delete.label "Borrar">
+<!ENTITY viewMenu.label "Ver">
+<!ENTITY filter.column "Regra de filtro">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Filtros lentos">
+<!ENTITY slow.accesskey "n">
+<!ENTITY enabled.column "Activada">
+<!ENTITY enabled.accesskey "c">
+<!ENTITY hitcount.column "Impactos">
+<!ENTITY hitcount.accesskey "I">
+<!ENTITY lasthit.column "Último impacto">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Ordenar por">
+<!ENTITY sort.accesskey "o">
+<!ENTITY sort.none.label "Sen clasificar">
+<!ENTITY sort.none.accesskey "s">
+<!ENTITY sort.ascending.label "Ordenar A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordenar Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Atopar">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/gl/firstRun.dtd b/chrome/adblockplus.jar!/locale/gl/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/gl/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/gl/global.properties b/chrome/adblockplus.jar!/locale/gl/global.properties
index 69e76a1..7ed24e1 100644
--- a/chrome/adblockplus.jar!/locale/gl/global.properties
+++ b/chrome/adblockplus.jar!/locale/gl/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? de ?2?
 blocked_count_addendum=(tamén na Lista Branca: ?1?, escondidos: ?2?)
 no_blocking_suggestions=Non hai elementos bloqueables nesta páxina
 whitelisted_page=Adblock Plus foi inhabilitado nesta páxina
-whitelist_description=Regras de excepción
-filterlist_description=Regras de Bloqueo de Publicidade
-invalid_description=Filtros non válidos
-elemhide_description=Regras de ocultación de elementos
-subscription_description=Subscrición de filtro:
-subscription_wrong_version=Algúns filtros nesta subscrición requiren Adblock Plus ?1? para funcionar correctamente!
-subscription_source=Fonte:
-subscription_status=Estado:
-subscription_status_autodownload=Actualizado automaticamente
-subscription_status_manualdownload=Actualizado manualmente
-subscription_status_externaldownload=Actualizado externamente (outra extensión)
-subscription_status_lastdownload=Última descarga:
-subscription_status_lastdownload_inprogress=Descargando...
-subscription_status_lastdownload_unknown=N/A
 remove_subscription_warning=Está seguro de que desexa eliminar esta subscrición?
-import_filters_wrong_version=Advertencia: algúns filtros da lista requiren Adblock Plus ?1? para funcionar correctamente. Probablemente deba actualizar á última versión liberada de Adblock Plus antes de importar esta lista.
-import_filters_warning=Desexa substituír os seus filtros actuais ou engadir novos filtros ao final da lista?
-import_filters_title=Importar filtros
-export_filters_title=Exportar filtros
-invalid_filters_file=Non é un arquivo de filtros de Adblock Plus válido.
-filters_write_error=Produciuse un erro ao escribir os filtros no arquivo. Asegúrese de que o arquivo non estea protexido contra escritura ou retido por outro programa.
-clearall_warning=Está seguro de que desexa eliminar todos os filtros da lista?
-resethitcounts_warning=Está seguro de que desexa reiniciar en cero os contadores de todos os filtros? Esta operación non se pode desfacer!
-resethitcounts_selected_warning=Está seguro de que desexa reiniciar en cero os contadores dos filtros escollidos? Esta operación non se pode desfacer!
 filter_regexp_tooltip=Este filtro é unha expresión regular ou é demasiado curto para ser optimizado. Moitos filtros así poderían retardar a navegación.
 filter_elemhide_duplicate_id=Só pode especificarse un ID do elemento que se vai ocultar
 filter_elemhide_nocriteria=Non se especificaron criterios para recoñecer o elemento que se vai ocultar
-subscription_notAdded_warning=Vostede non engadiu unha subscrición de filtros. Sen ela terá que engadir manualmente os filtros de Adblock Plus.
-subscription_notAdded_warning_addendum=Quere continuar?
 subscription_invalid_location=Esa localización da lista de filtros non é nin unha URL válida nin un nome de arquivo válido.
-synchronize_invalid_url=Fallou, non é unha dirección válida
-synchronize_connection_error=Fallou, fracasou a descarga
-synchronize_invalid_data=Fallou, non é unha lista de filtros válida
-synchronize_checksum_mismatch=Fallou, a proba 'checksum' non cadrou
-synchronize_ok=Valeu
-overwrite=Sobreescribir
-append=Anexar
-new_filter_group_title=Filtro novo
 type_label_other=outro
 type_label_script=secuencia de comandos
 type_label_image=imaxe
@@ -56,15 +23,17 @@ type_label_object=obxecto
 type_label_subdocument=marco
 type_label_document=documento
 type_label_elemhide=oculto
-type_label_xbl=XBL vinculante
-type_label_ping=ping ao enlace
 type_label_xmlhttprequest=solicitude XML
 type_label_object_subrequest=sub-solicitude de obxecto
-type_label_dtd=DTD
 type_label_media=audio/vídeo
 type_label_font=fonte
 fennec_status_enabled=Adblock Plus está activo.
 fennec_status_disabled=Adblock Plus está desactivado.
 fennec_status_enabled_site=Adblock Plus está activo en ?1?.
 fennec_status_disabled_site=Adblock Plus está desactivado en ?1?.
-sync_engine_title=Datos do Adblock Plus
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/gl/overlay.dtd b/chrome/adblockplus.jar!/locale/gl/overlay.dtd
index db4c27e..ef6f086 100644
--- a/chrome/adblockplus.jar!/locale/gl/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/gl/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Preferencias Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Temas bloqueables">
 <!ENTITY context.image.label "Imaxe Adblock">
 <!ENTITY context.object.label "Obxecto Adblock">
 <!ENTITY context.frame.label "Marco Adblock">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Temas bloqueables da páxina actual">
 <!ENTITY sendReport.label "Informe dun asunto nesta páxina">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Preferencias">
-<!ENTITY settings.accesskey "F">
 <!ENTITY opensidebar.label "Abrir temas bloqueables">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Pechar temas bloqueables">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Desactivar en ?1?">
 <!ENTITY whitelist.page.label "Desactivar só nesta páxina">
 <!ENTITY disable.label "Desactivar en todos os lugares">
-<!ENTITY recommend.label "Recomendenos no Facebook">
+<!ENTITY options.label "Opcións">
+<!ENTITY options.accesskey "O">
+<!ENTITY showintoolbar.label "Mostrar na barra de ferramentas">
+<!ENTITY showintoolbar.accesskey "f">
+<!ENTITY showinstatusbar.label "Mostrar na barra de estado">
+<!ENTITY showinstatusbar.accesskey "e">
+<!ENTITY objecttabs.label "Mostrar separadores en Flash e Java">
+<!ENTITY objecttabs.accesskey "s">
+<!ENTITY sync.label "Sincronizar as opcións do Adblock Plus">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Bloquear">
 <!ENTITY objecttab.tooltip "Prema aquí para bloquear este obxecto con Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/gl/settings.dtd b/chrome/adblockplus.jar!/locale/gl/settings.dtd
deleted file mode 100644
index 1d6b264..0000000
--- a/chrome/adblockplus.jar!/locale/gl/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Preferencias Adblock Plus">
-<!ENTITY filters.label "Filtros">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Engadir filtro">
-<!ENTITY add.accesskey "n">
-<!ENTITY addsubscription.label "Engadir subscrición de filtros">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "Actualizar todas as subscricións">
-<!ENTITY synchsubscriptions.accesskey "A">
-<!ENTITY import.label "Importar filtros">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Exportar filtros personalizados">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "Eliminar todos os filtros personalizados">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "Reiniciar as estatísticas">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Editar">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Cortar">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "Copiar">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Pegar">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Borrar">
-<!ENTITY remove.accesskey "B">
-<!ENTITY menu.find.label "Atopar">
-<!ENTITY menu.find.accesskey "O">
-<!ENTITY menu.findagain.label "Atopar de novo">
-<!ENTITY menu.findagain.accesskey "N">
-<!ENTITY view.label "Ver">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Ordenar por">
-<!ENTITY sort.accesskey "o">
-<!ENTITY sort.none.label "Sen clasificar">
-<!ENTITY sort.none.accesskey "s">
-<!ENTITY sort.ascending.label "Ordenar A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ordenar Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opcións">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Activar Adblock Plus">
-<!ENTITY enable.accesskey "a">
-<!ENTITY showintoolbar.label "Mostrar na barra de ferramentas">
-<!ENTITY showintoolbar.accesskey "f">
-<!ENTITY showinstatusbar.label "Mostrar na barra de estado">
-<!ENTITY showinstatusbar.accesskey "e">
-<!ENTITY objecttabs.label "Mostrar separadores en Flash e Java">
-<!ENTITY objecttabs.accesskey "s">
-<!ENTITY collapse.label "Encartar elementos bloqueados">
-<!ENTITY collapse.accesskey "L">
-<!ENTITY sync.label "Sincronizar as opcións do Adblock Plus">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Axuda">
-<!ENTITY help.accesskey "X">
-<!ENTITY gettingStarted.label "Primeiros pasos">
-<!ENTITY gettingStarted.accesskey "p">
-<!ENTITY faq.label "Preguntas frecuentes (FAQ)">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Escribir filtros de Adblock Plus">
-<!ENTITY filterdoc.accesskey "R">
-<!ENTITY about.label "Verbo do Adblock Plus">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "Os seguintes filtros determinan que enderezos débense bloquear e cales débense permitir:">
-<!ENTITY filter.column "Regra de filtro">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Filtros lentos">
-<!ENTITY slow.accesskey "n">
-<!ENTITY enabled.column "Activada">
-<!ENTITY enabled.accesskey "c">
-<!ENTITY hitcount.column "Impactos">
-<!ENTITY hitcount.accesskey "I">
-<!ENTITY lasthit.column "Último impacto">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Editar filtro">
-<!ENTITY context.resethitcount.label "Reiniciar a estatística de impactos do filtro">
-<!ENTITY context.synchsubscription.label "Actualizar subscrición">
-<!ENTITY context.editsubscription.label "Editar subscrición">
-<!ENTITY context.moveup.label "Mover filtro arriba">
-<!ENTITY context.movedown.label "Mover filtro abaixo">
-<!ENTITY context.movegroupup.label "Mover grupo arriba">
-<!ENTITY context.movegroupdown.label "Mover grupo abaixo">
-<!ENTITY context.enable.label "Activar">
-<!ENTITY context.disable.label "Desactivar">
-<!ENTITY apply.label "Aplicar">
-<!ENTITY apply.accesskey "P">
-<!ENTITY fennec.subscription.label "Subscrición de Filtros">
diff --git a/chrome/adblockplus.jar!/locale/gl/sidebar.dtd b/chrome/adblockplus.jar!/locale/gl/sidebar.dtd
index 69983f2..f13e0a1 100644
--- a/chrome/adblockplus.jar!/locale/gl/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/gl/sidebar.dtd
@@ -32,4 +32,5 @@
 <!ENTITY context.copyFilter.label "Copiar o filtro">
 <!ENTITY context.selectAll.label "Seleccionar todo">
 <!ENTITY docDomain.thirdParty "(third party)">
+<!ENTITY filterSource.label "Filter source">
 <!ENTITY docDomain.firstParty "(first party)">
diff --git a/chrome/adblockplus.jar!/locale/gl/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/gl/subscriptionSelection.dtd
index e3b5636..8747702 100644
--- a/chrome/adblockplus.jar!/locale/gl/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/gl/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Engadir subscrición de filtros Adblock Plus">
-<!ENTITY dialog.title.edit "Editar filtro de subscrición">
-<!ENTITY description.newInstall "Para que Adblock Plus sexa máis eficaz ten que engadir unha subscrición de filtro. Estas subscricións de filtro son proporcionadas gratis por outros usuarios de Adblock Plus. As subscricións de filtro máis axeitadas para o seu idioma xa están seleccionadas.">
 <!ENTITY subscriptionSelector.label "Por favor, escolla unha subscrición de filtro da lista:">
 <!ENTITY viewList.label "Ver filtros">
 <!ENTITY visitHomepage.label "Visite a páxina de inicio">
 <!ENTITY addSubscription.label "Engadir subscrición">
-<!ENTITY saveSubscription.label "Engadir subscrición">
-<!ENTITY other.label "Engadir outra subscrición">
-<!ENTITY other.accesskey "O">
 <!ENTITY list.download.failed "Fallo na recuperación da lista de subscricións.">
 <!ENTITY list.download.retry "Ténteo de novo">
 <!ENTITY list.download.website "Ver sitio web">
 <!ENTITY fromWeb.description "Por favor, confirme que quere engadir esa subscrición de filtro. Pode cambiar o título ou a situación da subscrición antes de engadila.">
-<!ENTITY edit.description "Pode cambiar o título ou a situación da subscrición se fose necesario.">
-<!ENTITY external.description "Esta é unha subscrición de filtro externa, a lista de filtros será actualizada pola extensión que creou esta subscrición.">
 <!ENTITY title.label "Título da subscrición:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Localización da lista de Filtros:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Posta ao día automática">
-<!ENTITY autodownload.accesskey "P">
 <!ENTITY supplementMessage "Esta subscrición de filtro está feita para ser usada en conxunto coa subscrición de filtro "?1?" que non engadiu aínda.">
 <!ENTITY addMain.label "Engadir tamén subscrición de filtro "?1?"">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/he/about.dtd b/chrome/adblockplus.jar!/locale/he/about.dtd
index fe1b071..a154f97 100644
--- a/chrome/adblockplus.jar!/locale/he/about.dtd
+++ b/chrome/adblockplus.jar!/locale/he/about.dtd
@@ -1,7 +1,6 @@
 <!ENTITY dialog.title "Adblock Plus אודות">
 <!ENTITY version.title "גרסה">
-<!ENTITY description "Adblock Plus מאפשר להחליט מה רוצים לראות ברשת.
-אין עוד צורך להוריד את כל הפרסומות והודעות הפרסום, אם לא רוצים אותם - הסירו אותם בעזרת-Adblock Plus!">
+<!ENTITY description "Adblock Plus מאפשר להחליט מה רוצים לראות ברשת.nnnאין עוד צורך להוריד את כל הפרסומות והודעות הפרסום, אם לא רוצים אותם - הסירו אותם בעזרת Adblock Plus!">
 <!ENTITY homepage.label "עמוד הבית של Adblock Plus">
 <!ENTITY author.label "מחבר:">
 <!ENTITY contributors.label "תורמים:">
diff --git a/chrome/adblockplus.jar!/locale/he/composer.dtd b/chrome/adblockplus.jar!/locale/he/composer.dtd
index 797c928..b9c7a8f 100644
--- a/chrome/adblockplus.jar!/locale/he/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/he/composer.dtd
@@ -1,9 +1,9 @@
-<!ENTITY dialog.title "הוספת חוק מסנן Adblock Plus">
+<!ENTITY dialog.title "הוספת חוק סינון Adblock Plus">
 <!ENTITY accept.label "הוספת מסנן">
 <!ENTITY advanced.label "תצוגה מתקדמת">
 <!ENTITY basic.label "תצוגה בסיסית">
-<!ENTITY disabled.warning "Adblock Plus מנוטרל. ניתן לערוך את כל המסננים ברשימה, אבל זה לא יהיה מעשי עד שיאופשר מחדש. [link]מאפשר את Adblock Plus[/link].">
-<!ENTITY groupDisabled.warning "מסנן זה אשר אמור להיות מצורף לקבוצת הסינון "?1?" מנוטרל כרגע. עדיין ניתן להוסיף מסנן זה אך הוא לא ייושם אלא אם [link]קבוצת הסינון תאפשר[/link].">
+<!ENTITY disabled.warning "Adblock Plus מנוטרל כרגע. ניתן עדיין להוסיף מסננים לרשימה, אבל הם לא יחולו אלא אם [link]Adblock Plus מאפשר [/link].">
+<!ENTITY groupDisabled.warning "מסנן זה אשר אמור להיות מצורף לקבוצת הסינון "?1?" מנוטרל כרגע. ניתן עדיין להוסיף מסנן זה אך הוא לא ייושם אלא אם [link]קבוצת הסינון תאפשר[/link].">
 <!ENTITY filter.label "מסנן חדש:">
 <!ENTITY filter.accesskey "מ">
 <!ENTITY preferences.label "הצגת המסננים הקיימים...">
diff --git a/chrome/adblockplus.jar!/locale/he/filters.dtd b/chrome/adblockplus.jar!/locale/he/filters.dtd
new file mode 100644
index 0000000..ff6e3ce
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/he/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "העדפות סינון Adblock Plus">
+<!ENTITY subscriptions.tab.label "הרשמות מסננים">
+<!ENTITY filters.tab.label "מסננים מותאמים">
+<!ENTITY addSubscription.label "הוספת הרשמת מסננים">
+<!ENTITY addSubscription.accesskey "ה">
+<!ENTITY addSubscriptionAdd.label "הוספה">
+<!ENTITY addSubscriptionCancel.label "ביטול">
+<!ENTITY addSubscriptionOther.label "הוספת הרשמה אחרת">
+<!ENTITY noSubscriptions.text "עדיין לא הוספת הרשמות למסננים. Adblock Plus לא יחסום דבר ללא מסננים, אנא השתמשו ב-"הוספת הרשמה למסננים" להוספת מסננים.">
+<!ENTITY subscription.homepage.label "עמוד בית">
+<!ENTITY subscription.external.label "התעדכן על ידי הרחבה אחרת">
+<!ENTITY subscription.source.label "רשימת מסננים">
+<!ENTITY subscription.enabled.label "מאפשר">
+<!ENTITY subscription.lastDownload.label "הורדה אחרונה:">
+<!ENTITY subscription.lastDownload.inProgress "מוריד...">
+<!ENTITY subscription.lastDownload.unknown "לא זמין">
+<!ENTITY subscription.lastDownload.invalidURL "כשל, הכתובת שגויה">
+<!ENTITY subscription.lastDownload.connectionError "כשל, ההורדה נכשלה">
+<!ENTITY subscription.lastDownload.invalidData "כשל, רשימת המסננים לא חוקית">
+<!ENTITY subscription.lastDownload.checksumMismatch "כשל, ביקורת הסיכום לתקינות לא התאימה בצורה טובה">
+<!ENTITY subscription.lastDownload.success "הצליח">
+<!ENTITY subscription.minVersion.warning "הרשמת מסננים זאת דורשת גרסה חדשה יותר של Adblock Plus, צריך לשדרג לגרסה האחרונה של Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "כמה מהמסננים בהרשמה זאת מנוטרלים.">
+<!ENTITY subscription.disabledFilters.enable "אפשר מסננים מנוטרלים">
+<!ENTITY subscription.actions.label "פעולות">
+<!ENTITY subscription.update.label "עדכון מסננים">
+<!ENTITY subscription.editTitle.label "עריכת הכותרת">
+<!ENTITY subscription.delete.label "מחיקה">
+<!ENTITY subscription.showHideFilters.label "הצגת/הסתרת מסננים">
+<!ENTITY subscription.moveUp.label "הזזה מעלה">
+<!ENTITY subscription.moveDown.label "הזזה מטה">
+<!ENTITY acceptableAds.label "אפשר פרסום שלא מפריע">
+<!ENTITY acceptableAds.accesskey "פ">
+<!ENTITY readMore.label "לקרוא עוד">
+<!ENTITY addGroup.label "הוספת קבוצת סינון">
+<!ENTITY addGroup.accesskey "צ">
+<!ENTITY noFilters.text "עדיין לא הוספו מסננים אישיים.">
+<!ENTITY addFilter.label "הוספת מסנן">
+<!ENTITY addFilter.accesskey "נ">
+<!ENTITY filter.actions.label "פעולות מסנן">
+<!ENTITY filter.edit.label "עריכה">
+<!ENTITY filter.cut.label "גזירה">
+<!ENTITY filter.copy.label "העתקה">
+<!ENTITY filter.paste.label "הדבקה">
+<!ENTITY filter.delete.label "מחיקה">
+<!ENTITY filter.selectAll.label "בחירת הכל">
+<!ENTITY filter.resetHitCounts.label "איפוס סטטיסטיקות לחיצה">
+<!ENTITY filter.moveUp.label "הזזה מעלה">
+<!ENTITY filter.moveDown.label "הזזה מטה">
+<!ENTITY viewMenu.label "תצוגה">
+<!ENTITY filter.column "חוק סינון">
+<!ENTITY filter.accesskey "נ">
+<!ENTITY slow.column "מסננים אטיים">
+<!ENTITY slow.accesskey "ס">
+<!ENTITY enabled.column "מאפשר">
+<!ENTITY enabled.accesskey "ר">
+<!ENTITY hitcount.column "לחיצות">
+<!ENTITY hitcount.accesskey "ל">
+<!ENTITY lasthit.column "לחיצה אחרונה">
+<!ENTITY lasthit.accesskey "ח">
+<!ENTITY sort.label "מיון לפי">
+<!ENTITY sort.accesskey "מ">
+<!ENTITY sort.none.label "לא ממוין">
+<!ENTITY sort.none.accesskey "ן">
+<!ENTITY sort.ascending.label "מיון מ- א > עד ת">
+<!ENTITY sort.ascending.accesskey "מ">
+<!ENTITY sort.descending.label "מיון מ- ת > עד א">
+<!ENTITY sort.descending.accesskey "י">
+<!ENTITY noGroupSelected.text "צריך לבחור קבוצת סינון לפני שהמסננים שלה יוצגו.">
+<!ENTITY noFiltersInGroup.text "הקבוצה הנבחרת ריקה">
+<!ENTITY filters.remove.warning "האם להסיר את כל המסננים הנבחרים?">
+<!ENTITY backupButton.label "גיבוי ושחזור">
+<!ENTITY backupButton.accesskey "ג">
+<!ENTITY backup.label "יצירת גיבוי חדש">
+<!ENTITY restore.default.label "שחזור הגיבוי מ- ?1?">
+<!ENTITY restore.own.label "שחזור גיבוי משלי">
+<!ENTITY backup.complete.title "כל המסננים וההרשמות">
+<!ENTITY backup.custom.title "מסננים מותאמים בלבד">
+<!ENTITY backup.error "אירעה שגיאה ברשימת המסננים לקובץ. יש לוודא כי הקובץ לא מוגן לכתיבה או בשימוש על-ידי יישום אחר.">
+<!ENTITY restore.error "לא ניתן לעבד המידע בקובץ. אולי זה לא קובץ גיבוי של Adblock Plus?">
+<!ENTITY restore.complete.warning "כל הגדרות המסננים שלך יוחלפו בקובץ הנבחר. האם להמשיך?">
+<!ENTITY restore.custom.warning "כל המסננים האישיים שלך יוחלפו בקובץ. האם להמשיך?">
+<!ENTITY restore.minVersion.warning "אזהרה: הקובץ נוצר על-ידי גרסה חדשה יותר של Adblock Plus. כדי לשדרג לגרסה האחרונה של Adblock Plus לפני שחזור מקובץ זה.">
+<!ENTITY find.label "חיפוש">
+<!ENTITY find.accesskey "ח">
+<!ENTITY close.label "סגירה">
diff --git a/chrome/adblockplus.jar!/locale/he/firstRun.dtd b/chrome/adblockplus.jar!/locale/he/firstRun.dtd
new file mode 100644
index 0000000..f45b6a3
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/he/firstRun.dtd
@@ -0,0 +1,9 @@
+<!ENTITY dialog.title "התקנת Adblock Plus הסתיימה">
+<!ENTITY confirmation "תודה לכם על התקנת Adblock Plus. מודעות ייחסמו מעתה והלאה. תהנו!">
+<!ENTITY advancedSection "אפשרויות מתקדמות">
+<!ENTITY listSelection1 "רשימת מסננים זאת הוגדרה לחסום פרסום:">
+<!ENTITY noList "אין רשימת מסננים">
+<!ENTITY visitHomepage.label "ביקור באתר בית הרשימות">
+<!ENTITY acceptableAds "Adblock Plus הוגדר לאפשר פרסום שלא מפריע.">
+<!ENTITY readMore.label "לקרוא עוד אודות זה">
+<!ENTITY listSelection2 "ניתן לשנות בחירה זו בכל עת על-ידי [link]הגדרות מסנן[/link].">
diff --git a/chrome/adblockplus.jar!/locale/he/global.properties b/chrome/adblockplus.jar!/locale/he/global.properties
index 6e99533..5fea28c 100644
--- a/chrome/adblockplus.jar!/locale/he/global.properties
+++ b/chrome/adblockplus.jar!/locale/he/global.properties
@@ -4,50 +4,22 @@ action1_tooltip=לחיצה כדי לפתוח/לסגור את רשימת הפרי
 action2_tooltip=לחיצה כדי לפתוח את המאפיינים, לחיצה אמצעית כדי לאפשר/לנטרל.
 action3_tooltip=לחיצה כדי לאפשר/לנטרל את Adblock Plus.
 disabled_tooltip=Adblock Plus מנוטרל.
-active_tooltip=Adblock Plus מאופשר, ?1? הרשמת(ות) מסננים ו ?2? מסנן(ים) מותאמים בשימוש.
+active_tooltip=Adblock Plus מאפשר, ?1? הרשמת(ות) מסננים ו ?2? מסנן(ים) מותאמים בשימוש.
 whitelisted_tooltip=Adblock Plus עובד אבל הוא מנוטרל בעמוד הנוכחי.
 blocked_count_tooltip=?1? מתוך ?2?
 blocked_count_addendum=(גם כן ברשימה הלבנה: ?1?, מוסתר: ?2?)
 no_blocking_suggestions=אין פריטים לחסימה בעמוד הנוכחי
 whitelisted_page=Adblock Plus מנוטרל עבור העמוד הנוכחי
-whitelist_description=החוקים החריגים שלי
-filterlist_description=חוקי החסימה שלי
-invalid_description=החוקים הפגומים שלי
-elemhide_description=החוקים להסתרת האלמנטים שלי
-subscription_description=הרשמת מסננים:
-subscription_wrong_version=לכמה מהמסננים בהרשמה הזאת דרוש Adblock Plus ?1? כדי לעבוד היטב.
-subscription_source=מקור:
-subscription_status=מצב:
-subscription_status_autodownload=עדכון אוטומטי
-subscription_status_manualdownload=עדכון ידני
-subscription_status_externaldownload=עדכון חיצוני (בעזרת הרחבה אחרת)
-subscription_status_lastdownload=הורדה אחרונה:
-subscription_status_lastdownload_inprogress=מוריד...
-subscription_status_lastdownload_unknown=לא זמין
+newGroup_title=קבוצת מסננים חדשה
+whitelistGroup_title=כללים חריגים
+blockingGroup_title=כללי חסימת מודעות
+elemhideGroup_title=כללי הסתרת אלמנטים
 remove_subscription_warning=האם להסיר את ההרשמה הזאת?
-import_filters_wrong_version=אזהרה: לכמה מהמסננים ברשימה דרוש Adblock Plus ?1? כדי לעבוד כיאות. כנראה שצריך לשדרג לגרסה האחרונה של Adblock Plus לפני שתיובא הרשימה הזאת.
-import_filters_warning=האם להחליף את המסננים הנוכחיים או להוסיף מסננים חדשים בסוף הרשימה?
-import_filters_title=ייבוא מסננים
-export_filters_title=ייצוא מסננים
-invalid_filters_file=הקובץ אינו קובץ מסננים חוקי.
-filters_write_error=חלה שגיאה בכתיבת מסננים לקובץ. יש לבדוק שהקובץ אינו מוגן מפני כתיבה ואינו בשימוש על ידי יישום אחר.
-clearall_warning=האם להסיר את כל המסננים מהרשימה?
-resethitcounts_warning=האם לאפס את המונים של כל המסננים? פעולה זו איננה ניתנת לביטול!
-resethitcounts_selected_warning=האם לאפס את המונים של המסננים שנבחרו? פעולה זו איננה ניתנת לביטול!
-filter_regexp_tooltip=מסנן זה הוא או ביטוי רגיל או קצר מדי מכדי להיות מיטבי. יותר מדי מסננים מסוג זה יכולים להאט את הגלישה.
-filter_elemhide_duplicate_id=רק זהות אחת של האלמנט שיהיה מוסתר ניתנת לציון
-filter_elemhide_nocriteria=לא צוין קריטריון לזיהוי האלמנט שיהיה מוסתר
-subscription_notAdded_warning=לא הוספה הרשמת מסנן. ללא הרשמת מסנן יהיה צריך להוסיף ידנית מסנני Adblock Plus.
-subscription_notAdded_warning_addendum=האם להמשיך?
-subscription_invalid_location=המיקום שגוי או ששם הקובץ שגוי.
-synchronize_invalid_url=כשל, הכתובת שגויה
-synchronize_connection_error=כשל, ההורדה נכשלה
-synchronize_invalid_data=כשל, רשימת המסננים לא חוקית
-synchronize_checksum_mismatch=כשל, ביקורת הסיכום לתקינות לא התאימה בצורה טובה
-synchronize_ok=הצליח
-overwrite=כתיבה על כתוב
-append=הוספת
-new_filter_group_title=מסנן חדש
+clearStats_warning=זה יאפס את כל סטטיסטיקות הלחיצה של המסננים וינטרל את מניית הלחיצה של המסנן. האם להמשיך?
+filter_regexp_tooltip=מסנן זה הוא ביטוי רגיל או קצר מדי מכדי להיות מיטבי. יותר מדי מסננים מסוג זה יכולים להאט את הגלישה.
+filter_elemhide_duplicate_id=רק זהות אחת של האלמנט שיוסתר ניתנת לציון
+filter_elemhide_nocriteria=לא צוין קריטריון לזיהוי האלמנט שיוסתר
+subscription_invalid_location=מיקום רשימת הסינון איננו כתובת אתר חוקית ולא שם קובץ חוקי.
 type_label_other=אחר
 type_label_script=תסריט
 type_label_image=תמונה
@@ -56,15 +28,12 @@ type_label_object=אובייקט
 type_label_subdocument=מסגרת
 type_label_document=מסמך
 type_label_elemhide=מוסתר
-type_label_xbl=הגבלת XBL
-type_label_ping=פינג לקישור
+type_label_popup=חלון קופץ
 type_label_xmlhttprequest=בקשת XML
 type_label_object_subrequest=תת-דרישת אובייקט
-type_label_dtd=DTD
 type_label_media=אודיו/וידאו
 type_label_font=גופן
-fennec_status_enabled=Adblock Plus מאופשר.
+fennec_status_enabled=Adblock Plus מאפשר.
 fennec_status_disabled=Adblock Plus מנוטרל.
-fennec_status_enabled_site=Adblock Plus מאופשר על ?1?.
+fennec_status_enabled_site=Adblock Plus מאפשר על ?1?.
 fennec_status_disabled_site=Adblock Plus מנוטרל על ?1?.
-sync_engine_title=מידע של Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/he/overlay.dtd b/chrome/adblockplus.jar!/locale/he/overlay.dtd
index 386f877..aa059ec 100644
--- a/chrome/adblockplus.jar!/locale/he/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/he/overlay.dtd
@@ -2,26 +2,41 @@
 <!ENTITY blocked.tooltip "הפריטים החסומים בעמוד זה:">
 <!ENTITY filters.tooltip "המסננים הפעילים ביותר:">
 <!ENTITY menuitem.label "העדפות Adblock Plus">
-<!ENTITY menuitem.accesskey "b">
+<!ENTITY menuitem.accesskey "ה">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: פריטים לחסימה">
 <!ENTITY context.image.label "Adblock Plus: חסימת תמונה">
 <!ENTITY context.object.label "Adblock Plus: חסימת פריט">
 <!ENTITY context.frame.label "Adblock Plus: חסימת מסגרת (פריים)">
 <!ENTITY context.media.label "Adblock Plus: חסימת ווידאו/אודיו">
-<!ENTITY context.removeWhitelist.label "Adblock Plus: מאופשר מחדש בעמוד זה">
+<!ENTITY context.removeWhitelist.label "Adblock Plus: מאפשר מחדש בעמוד זה">
 <!ENTITY sidebar.title "פריטים לחסימה בעמוד הנוכחי">
 <!ENTITY sendReport.label "דיווח בעיות בעמוד זה">
 <!ENTITY sendReport.accesskey "ד">
-<!ENTITY settings.label "העדפות">
-<!ENTITY settings.accesskey "ע">
+<!ENTITY filters.label "הגדרות מסנן מתקדמות">
+<!ENTITY filters.accesskey "מ">
 <!ENTITY opensidebar.label "פתיחת רשימת הפריטים לחסימה">
-<!ENTITY opensidebar.accesskey "ר">
+<!ENTITY opensidebar.accesskey "פ">
 <!ENTITY closesidebar.label "סגירת הרשימה של הפריטים לחסימה">
-<!ENTITY closesidebar.accesskey "ר">
+<!ENTITY closesidebar.accesskey "פ">
 <!ENTITY whitelist.site.label "נטרול ב ?1?">
 <!ENTITY whitelist.page.label "נטרול בעמוד הזה בלבד">
 <!ENTITY disable.label "נטרול בכל מקום">
-<!ENTITY recommend.label "המלץ עלינו ב-Facebook">
+<!ENTITY options.label "אפשרויות">
+<!ENTITY options.accesskey "ש">
+<!ENTITY contribute.label "תרום ל-Adblock Plus">
+<!ENTITY showintoolbar.label "הצגה בסרגל הכלים">
+<!ENTITY showintoolbar.accesskey "ג">
+<!ENTITY showinstatusbar.label "הצגה בשורת המצב">
+<!ENTITY showinstatusbar.accesskey "צ">
+<!ENTITY showinaddonbar.label "הצגת סרגל ההרחבות">
+<!ENTITY showinaddonbar.accesskey "ג">
+<!ENTITY objecttabs.label "הצגת לשוניות על פלאש וג'אווה">
+<!ENTITY objecttabs.accesskey "ש">
+<!ENTITY hideplaceholders.label "הסתרת מצייני מקום של אלמנט חסום">
+<!ENTITY hideplaceholders.accesskey "ח">
+<!ENTITY counthits.label "מנה לחיצות מסנן">
+<!ENTITY counthits.accesskey "ל">
+<!ENTITY sync.label "סנכרון הגדרות Adblock Plus">
+<!ENTITY sync.accesskey "נ">
 <!ENTITY objecttab.title "חסימה">
 <!ENTITY objecttab.tooltip "לחיצה כאן לחסימת פריט זה עם Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/he/sendReport.dtd b/chrome/adblockplus.jar!/locale/he/sendReport.dtd
index af43416..2d98b44 100644
--- a/chrome/adblockplus.jar!/locale/he/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/he/sendReport.dtd
@@ -1,12 +1,12 @@
 <!ENTITY wizard.title "מדווח הבעיות">
 <!ENTITY privacyPolicy.label "הצהרת פרטיות">
-<!ENTITY dataCollector.heading "ברוכה הבאה למדווח הבעיות">
-<!ENTITY dataCollector.description "המתן בבקשה כמה רגעים עד ש־Adblock Plus יאסוף את המידע הדרוש.">
+<!ENTITY dataCollector.heading "ברוכים הבאים למדווח הבעיות">
+<!ENTITY dataCollector.description "המתינו בבקשה כמה רגעים עד ש־Adblock Plus יאסוף את המידע הדרוש.">
 <!ENTITY typeSelector.heading "בחירת סוג הבעיה">
 <!ENTITY typeSelector.description "חלון זה ידריך אתכם דרך הצעדים הדרושים להזנת דיווח בעיה עבור Adblock Plus. ראשית, יש לבחור בבקשה את סוג הבעיה אשר אתם חווים בעמוד זה:">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus חוסם יותר מדי">
 <!ENTITY typeSelector.falsePositive.accesskey "מ">
-<!ENTITY typeSelector.falsePositive.description "בחירת אפשרות זו אם חסר בעמוד תוכן חשוב או שמוצג בצורה לא נכונה או כושל לתפקד כראוי. ניתן לקבוע האם Adblock Plus הוא הגורם לבעיה על ידי נטרולו זמנית.">
+<!ENTITY typeSelector.falsePositive.description "בחר באפשרות זו אם חסר בעמוד תוכן חשוב או שמוצג בצורה לא נכונה או כושל לתפקד כראוי. ניתן לקבוע האם Adblock Plus הוא הגורם לבעיה על ידי נטרולו זמנית.">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus לא חוסם פרסומות">
 <!ENTITY typeSelector.falseNegative.accesskey "ל">
 <!ENTITY typeSelector.falseNegative.description "בחירת אפשרות זו אם מוצגת פרסומת למרות ש Adblock Plus מאפשר.">
@@ -58,7 +58,7 @@
 <!ENTITY comment.lengthWarning "אורך ההודעה חרג מ-1000 תווים. רק 1000 התווים הראשונים ישלחו.">
 <!ENTITY email.label "דוא"ל לבירורים נוספים (לא חובה):">
 <!ENTITY email.accesskey "ל">
-<!ENTITY attachExtensions.label "סיפוח רשימת ההרחבות הפעילות לדיווח במקרה וניגוד תוספות הוא הגורם לבעיה">
+<!ENTITY attachExtensions.label "סיפוח רשימת ההרחבות הפעילות אל הדיווח במקרה וניגוד תוספות הוא הגורם לבעיה">
 <!ENTITY attachExtensions.accesskey "ג">
 <!ENTITY sendButton.label "שליחת דיווח">
 <!ENTITY sendButton.accesskey "ש">
diff --git a/chrome/adblockplus.jar!/locale/he/settings.dtd b/chrome/adblockplus.jar!/locale/he/settings.dtd
deleted file mode 100644
index 9a56357..0000000
--- a/chrome/adblockplus.jar!/locale/he/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus העדפות">
-<!ENTITY filters.label "מסננים">
-<!ENTITY filters.accesskey "מ">
-<!ENTITY add.label "הוספת מסנן">
-<!ENTITY add.accesskey "ס">
-<!ENTITY addsubscription.label "הוספת הרשמה למסננים">
-<!ENTITY addsubscription.accesskey "פ">
-<!ENTITY synchsubscriptions.label "עדכון כל ההרשמות">
-<!ENTITY synchsubscriptions.accesskey "ע">
-<!ENTITY import.label "ייבוא מסננים">
-<!ENTITY import.accesskey "ב">
-<!ENTITY export.label "ייצוא מסננים מותאמים אישית">
-<!ENTITY export.accesskey "צ">
-<!ENTITY clearall.label "הסרת כל המסננים המותאמים אישית">
-<!ENTITY clearall.accesskey "ה">
-<!ENTITY resethitcounts.label "איפוס כל מוני הלחיצות">
-<!ENTITY resethitcounts.accesskey "א">
-<!ENTITY edit.label "עריכה">
-<!ENTITY edit.accesskey "כ">
-<!ENTITY cut.label "גזירה">
-<!ENTITY cut.accesskey "ג">
-<!ENTITY copy.label "העתקה">
-<!ENTITY copy.accesskey "ק">
-<!ENTITY paste.label "הדבקה">
-<!ENTITY paste.accesskey "ה">
-<!ENTITY remove.label "מחיקה">
-<!ENTITY remove.accesskey "ח">
-<!ENTITY menu.find.label "מצא">
-<!ENTITY menu.find.accesskey "מ">
-<!ENTITY menu.findagain.label "מצא שוב">
-<!ENTITY menu.findagain.accesskey "צ">
-<!ENTITY view.label "תצוגה">
-<!ENTITY view.accesskey "ת">
-<!ENTITY sort.label "מיון לפי">
-<!ENTITY sort.accesskey "מ">
-<!ENTITY sort.none.label "לא ממוין">
-<!ENTITY sort.none.accesskey "ן">
-<!ENTITY sort.ascending.label "מיון מ- א > עד ת">
-<!ENTITY sort.ascending.accesskey "מ">
-<!ENTITY sort.descending.label "מיון מ- ת > עד א">
-<!ENTITY sort.descending.accesskey "י">
-<!ENTITY options.label "אפשרויות">
-<!ENTITY options.accesskey "פ">
-<!ENTITY enable.label "אפשור  Adblock Plus">
-<!ENTITY enable.accesskey "א">
-<!ENTITY showintoolbar.label "הצגה בסרגל הכלים">
-<!ENTITY showintoolbar.accesskey "ל">
-<!ENTITY showinstatusbar.label "הצגה בשורת המצב">
-<!ENTITY showinstatusbar.accesskey "צ">
-<!ENTITY objecttabs.label "הצגת לשוניות על פלאש וג'אווה">
-<!ENTITY objecttabs.accesskey "ג">
-<!ENTITY collapse.label "צמצום הפריטים החסומים">
-<!ENTITY collapse.accesskey "ה">
-<!ENTITY sync.label "סנכרון הגדרות Adblock Plus">
-<!ENTITY sync.accesskey "כ">
-<!ENTITY help.label "עזרה">
-<!ENTITY help.accesskey "ע">
-<!ENTITY gettingStarted.label "התחלה">
-<!ENTITY gettingStarted.accesskey "ת">
-<!ENTITY faq.label "שאלות נפוצות (אנגלית)">
-<!ENTITY faq.accesskey "ש">
-<!ENTITY filterdoc.label "כתיבת מסננים ל-Adblock Plus (אנגלית)">
-<!ENTITY filterdoc.accesskey "מ">
-<!ENTITY about.label "אודות Adblock Plus">
-<!ENTITY about.accesskey "א">
-<!ENTITY description "המסננים הבאים קובעים איזה כתובות אמורות להיחסם ואיזה להיות מאפשרות:">
-<!ENTITY filter.column "חוק סינון">
-<!ENTITY filter.accesskey "נ">
-<!ENTITY slow.column "מסננים אטיים">
-<!ENTITY slow.accesskey "ס">
-<!ENTITY enabled.column "מאופשר">
-<!ENTITY enabled.accesskey "ר">
-<!ENTITY hitcount.column "לחיצות">
-<!ENTITY hitcount.accesskey "ל">
-<!ENTITY lasthit.column "לחיצה אחרונה">
-<!ENTITY lasthit.accesskey "ח">
-<!ENTITY context.edit.label "עריכת מסנן">
-<!ENTITY context.resethitcount.label "איפוס את כל מוני הלחיצות עבור מסנן">
-<!ENTITY context.synchsubscription.label "עדכון ההרשמה כעת">
-<!ENTITY context.editsubscription.label "עריכת ההרשמה">
-<!ENTITY context.moveup.label "הזזת המסנן מעלה">
-<!ENTITY context.movedown.label "הזזת המסנן מטה">
-<!ENTITY context.movegroupup.label "הזזת הקבוצה מעלה">
-<!ENTITY context.movegroupdown.label "הזזת הקבוצה מטה">
-<!ENTITY context.enable.label "אפשור">
-<!ENTITY context.disable.label "נטרול">
-<!ENTITY apply.label "החלה">
-<!ENTITY apply.accesskey "ח">
-<!ENTITY fennec.subscription.label "הרשמת מסננים">
diff --git a/chrome/adblockplus.jar!/locale/he/sidebar.dtd b/chrome/adblockplus.jar!/locale/he/sidebar.dtd
index 9f43c97..35ee289 100644
--- a/chrome/adblockplus.jar!/locale/he/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/he/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "מסנן">
 <!ENTITY state.label "מצב">
 <!ENTITY size.label "גודל">
+<!ENTITY filterSource.label "מקור המסנן">
 <!ENTITY docDomain.label "מקור המסמך">
 <!ENTITY docDomain.thirdParty "(צד שלישי)">
 <!ENTITY docDomain.firstParty "(צד ראשון)">
diff --git a/chrome/adblockplus.jar!/locale/he/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/he/subscriptionSelection.dtd
index e30b2e8..46644a5 100644
--- a/chrome/adblockplus.jar!/locale/he/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/he/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "הוספת הרשמות מסננים לAdblock Plus">
-<!ENTITY dialog.title.edit "עריכת הרשמה למסננים">
-<!ENTITY description.newInstall "Adblock Plus יהיה הכי יעיל אם יתווספו לו הרשמות מסננים. הרשמות המסננים מסופקים על ידי משתמשי Adblock Plus אחרים ללא שכר. ההרשמה ההולמת ביותר לשפתך נבחרה כבר.">
 <!ENTITY subscriptionSelector.label "יש לבחור הרשמת מסנן מהרשימה:">
 <!ENTITY viewList.label "הצגת מסננים">
 <!ENTITY visitHomepage.label "ביקור באתר הבית">
 <!ENTITY addSubscription.label "הוספת הרשמה">
-<!ENTITY saveSubscription.label "שמירת הרשמה">
-<!ENTITY other.label "הוספת הרשמה אחרת">
-<!ENTITY other.accesskey "ס">
 <!ENTITY list.download.failed "Adblock Plus נכשל באיחזור רשימת ההרשמות.">
 <!ENTITY list.download.retry "נסה שנית">
 <!ENTITY list.download.website "הצגת האתר">
 <!ENTITY fromWeb.description "יש לוודא הוספת מסנן הרשמה זה. ניתן לשנות את כותרת או מיקום ההרשמה לפני הוספתה.">
-<!ENTITY edit.description "ניתן לשנות את הכותרת או מיקום ההרשמה כנדרש.">
-<!ENTITY external.description "זה הוא מסנן הרשמה חיצוני; הוא יתעדכן בעזרת ההרחבה אשר ייצרה את ההרשמה.">
 <!ENTITY title.label "כותרת ההרשמה:">
 <!ENTITY title.accesskey "כ">
 <!ENTITY location.label "מיקום רשימת המסננים:">
 <!ENTITY location.accesskey "מ">
-<!ENTITY autodownload.label "עדכון מסננים אוטומטי">
-<!ENTITY autodownload.accesskey "ע">
 <!ENTITY supplementMessage "מסנן הרשמה זה נועד לשימוש עם מסנן ההרשמה ?1? אשר לא נעשה בו שימוש עדיין.">
-<!ENTITY addMain.label "הוספת מסנן ההרשמה ?1? גם כן">
+<!ENTITY addMain.label "הוסף את הרשמת המסננים ?1? גם כן">
 <!ENTITY addMain.accesskey "ש">
diff --git a/chrome/adblockplus.jar!/locale/hr/about.dtd b/chrome/adblockplus.jar!/locale/hr/about.dtd
index df1311a..c1f2c25 100644
--- a/chrome/adblockplus.jar!/locale/hr/about.dtd
+++ b/chrome/adblockplus.jar!/locale/hr/about.dtd
@@ -1,7 +1,6 @@
 <!ENTITY dialog.title "O Adblock Plus">
 <!ENTITY version.title "Inačica">
-<!ENTITY description "Adblock Plus Vam dozvoljava da odlučite što ne želite vidjeti na webu.
-Više ne morate preuzeti sve oglase i banere, ako ih ne želite - recite Adblock Plus-u!">
+<!ENTITY description "Adblock Plus Vam dozvoljava da odlučite što ne želite vidjeti na webu.nnnViše ne morate preuzeti sve oglase i banere, ako ih ne želite - recite Adblock Plus-u!">
 <!ENTITY homepage.label "Adblock Plus početna stranica:">
 <!ENTITY author.label "Autor:">
 <!ENTITY contributors.label "Oni koji su pridonijeli:">
diff --git a/chrome/adblockplus.jar!/locale/hr/filters.dtd b/chrome/adblockplus.jar!/locale/hr/filters.dtd
new file mode 100644
index 0000000..23a5ec8
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hr/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Dodaj pretplatu na filter">
+<!ENTITY addSubscriptionOther.label "Dodajte drugu pretplatu">
+<!ENTITY subscription.lastDownload.label "Zadnje preuzimanje:">
+<!ENTITY subscription.lastDownload.inProgress "Preuzimanje...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Neuspjeh, neispravna adresa">
+<!ENTITY subscription.lastDownload.connectionError "Neuspjeh, neuspjelo preuzimanje">
+<!ENTITY subscription.lastDownload.invalidData "Neuspjeh, neispravan popis filtera">
+<!ENTITY subscription.lastDownload.checksumMismatch "Neuspješno, neusklađenost checksum-a.">
+<!ENTITY subscription.lastDownload.success "Uspjeh">
+<!ENTITY addFilter.label "Dodaj filter">
+<!ENTITY filter.cut.label "Izreži">
+<!ENTITY filter.copy.label "Kopiraj">
+<!ENTITY filter.paste.label "Zalijepi">
+<!ENTITY filter.delete.label "Obriši">
+<!ENTITY viewMenu.label "Pogledati">
+<!ENTITY filter.column "Pravilo filtera">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Spori filteri">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "Omogućeno">
+<!ENTITY enabled.accesskey "m">
+<!ENTITY hitcount.column "Pogoci">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Posljednji pogodak">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Posložiti po">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Neposloženo">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "A > Z red slaganja">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A red slaganja">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Traži">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/hr/firstRun.dtd b/chrome/adblockplus.jar!/locale/hr/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hr/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/hr/global.properties b/chrome/adblockplus.jar!/locale/hr/global.properties
index 32b6b91..a0baa1a 100644
--- a/chrome/adblockplus.jar!/locale/hr/global.properties
+++ b/chrome/adblockplus.jar!/locale/hr/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? od ?2?
 blocked_count_addendum=dopušteni: ?1?, skriveni: ?2?)
 no_blocking_suggestions=Na trenutnoj stranici nema stavki koje se mogu blokirati
 whitelisted_page=Adblock Plus je onemogućen za trenutnu stranicu
-whitelist_description=Pravila izuzimanja
-filterlist_description=Filteri oglašavanja
-invalid_description=Nevažeći filteri
-elemhide_description=Temeljna pravila skrivanja
-subscription_description=Pretplata na filter:
-subscription_wrong_version=Neki filteri u ovoj pretplati zahtijevaju Adblock Plus ?1? da bi ispravno radili!
-subscription_source=Izvor:
-subscription_status=Status:
-subscription_status_autodownload=Automatsko ažuriranje
-subscription_status_manualdownload=Ručno ažuriranje
-subscription_status_externaldownload=Vanjsko ažuriranje (drugo proširenje)
-subscription_status_lastdownload=Zadnje preuzimanje:
-subscription_status_lastdownload_inprogress=Preuzimanje...
-subscription_status_lastdownload_unknown=N/A
 remove_subscription_warning=Želite li zbilja ukloniti ovu pretplatu?
-import_filters_wrong_version=Upozorenje: neki od filtera u ovom popisu zahtjevaju Adblock Plus ?1? da bi ispravno radili. Vjerojatno biste trebali nadograditi na zadnju inačicu Adblock Plus prije uvoza ovog popisa.
-import_filters_warning=Želite li zamijeniti Vaše trenutne filtere ili nove filtere želite dodati na kraj popisa?
-import_filters_title=Uvezi filtere
-export_filters_title=Izvezi filtere
-invalid_filters_file=Nevažeća Adblock Plus datoteka filtera.
-filters_write_error=Greška prilikom zapisivanja filtera u datoteku. Provjerite da datoteka nije zaštićena protiv pisanja ili u upotrebi od strane nekog drugog programa.
-clearall_warning=Želite li stvarno ukloniti sve filtere s popisa?
-resethitcounts_warning=Želite li doista ponovno postaviti brojanje pogodaka za sve filtere natrag na nulu? Ova operacija ne može biti opozvana!
-resethitcounts_selected_warning=Želite li doista ponovno postaviti brojanje pogodaka za odabrani filter natrag na nulu? Ova operacija ne može biti opozvana!
 filter_regexp_tooltip=Ovaj filter je ili regularan izraz ili je prekatak za optimizacju. Previše ovakvih filtera vam može usporiti surfanje.
 filter_elemhide_duplicate_id=Samo jedan ID elementa za skrivanje može biti odabran.
 filter_elemhide_nocriteria=Nijedan kriterij za prepoznavanje elementa koji će biti skriven
-subscription_notAdded_warning=Niste dodali pretplatu za filter. Bez pretplate za filter morate dodavati filtere za Adblock Plus ručno.
-subscription_notAdded_warning_addendum=Želite li nastaviti?
 subscription_invalid_location=Mjesto popisa filtera nije niti valjana web adresa niti naziv datoteke.
-synchronize_invalid_url=Neuspjeh, neispravna adresa
-synchronize_connection_error=Neuspjeh, neuspjelo preuzimanje
-synchronize_invalid_data=Neuspjeh, neispravan popis filtera
-synchronize_checksum_mismatch=Neuspješno, neusklađenost checksum-a.
-synchronize_ok=Uspjeh
-overwrite=Prepiši
-append=Dodaj na kraj
-new_filter_group_title=Novi filter
 type_label_other=drugi
 type_label_script=skripta
 type_label_image=slika
@@ -56,15 +23,17 @@ type_label_object=objekt
 type_label_subdocument=okvir
 type_label_document=dokument
 type_label_elemhide=skriveno
-type_label_xbl=XBL vezanje
-type_label_ping=ping linka
 type_label_xmlhttprequest=XML zahtjev
 type_label_object_subrequest=podzahtjev objekta
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=font
 fennec_status_enabled=Adblock Plus je omogućen.
 fennec_status_disabled=Adblock Plus je onemogućen.
 fennec_status_enabled_site=Adblock Plus je omogućen na ?1?.
 fennec_status_disabled_site=Adblock Plus je onemogućen na ?1?.
-sync_engine_title=Adblock Plus data
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/hr/overlay.dtd b/chrome/adblockplus.jar!/locale/hr/overlay.dtd
index 658a1bc..090d56f 100644
--- a/chrome/adblockplus.jar!/locale/hr/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/hr/overlay.dtd
@@ -4,24 +4,39 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Stavke koje se mogu blokirati">
 <!ENTITY context.image.label "Blokiraj sliku s Adblock">
 <!ENTITY context.object.label "Blokiraj objekt s Adblock">
 <!ENTITY context.frame.label "Blokiraj okvir s Adblock">
 <!ENTITY context.media.label "Adblock Plus: Blokirati audio/video">
 <!ENTITY context.removeWhitelist.label "Adblock Plus: Ponovno omogućiti na ovoj stranici">
 <!ENTITY sidebar.title "Stavke koje se mogu blokirati na trenutnoj stranici">
-<!ENTITY settings.label "Postavke">
-<!ENTITY settings.accesskey "t">
 <!ENTITY opensidebar.label "Otvori stavke koje se mogu blokirati">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Zatvori stavke koje se mogu blokirati">
 <!ENTITY closesidebar.accesskey "b">
 <!ENTITY whitelist.site.label "Onemogući na ?1?">
 <!ENTITY whitelist.page.label "Onemogući samo na ovoj stranici">
+<!ENTITY options.label "Opcije">
+<!ENTITY options.accesskey "O">
+<!ENTITY showintoolbar.label "Prikaži u alatnoj traci">
+<!ENTITY showintoolbar.accesskey "a">
+<!ENTITY showinstatusbar.label "Prikaži u statusnoj traci">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY objecttabs.label "Prikaži kartice s Flashom i Javom">
+<!ENTITY objecttabs.accesskey "k">
 <!ENTITY objecttab.title "Blokiraj">
 <!ENTITY objecttab.tooltip "Kliknite ovdje da biste ovaj objekt blokirali s Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
 <!ENTITY disable.label "Disable everywhere">
-<!ENTITY recommend.label "Recommend us on Facebook">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY sync.accesskey "c">
 <!ENTITY sendReport.accesskey "R">
 <!ENTITY sendReport.label "Report issue on this page">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY sync.label "Sync Adblock Plus settings">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/hr/settings.dtd b/chrome/adblockplus.jar!/locale/hr/settings.dtd
deleted file mode 100644
index 1188dc3..0000000
--- a/chrome/adblockplus.jar!/locale/hr/settings.dtd
+++ /dev/null
@@ -1,90 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus Postavke">
-<!ENTITY filters.label "Filteri">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Dodaj filter">
-<!ENTITY add.accesskey "j">
-<!ENTITY addsubscription.label "Dodaj pretplatu na filter">
-<!ENTITY addsubscription.accesskey "D">
-<!ENTITY synchsubscriptions.label "Ažuriraj sve pretplate">
-<!ENTITY synchsubscriptions.accesskey "ž">
-<!ENTITY import.label "Uvezi filtere">
-<!ENTITY import.accesskey "v">
-<!ENTITY export.label "Izvezi filtere">
-<!ENTITY export.accesskey "z">
-<!ENTITY clearall.label "Ukloni sve filtere">
-<!ENTITY clearall.accesskey "k">
-<!ENTITY resethitcounts.label "Vrati izvornu statistiku pogodaka">
-<!ENTITY resethitcounts.accesskey "r">
-<!ENTITY edit.label "Uredi">
-<!ENTITY edit.accesskey "r">
-<!ENTITY cut.label "Izreži">
-<!ENTITY cut.accesskey "z">
-<!ENTITY copy.label "Kopiraj">
-<!ENTITY copy.accesskey "o">
-<!ENTITY paste.label "Zalijepi">
-<!ENTITY paste.accesskey "l">
-<!ENTITY remove.label "Obriši">
-<!ENTITY remove.accesskey "b">
-<!ENTITY menu.find.label "Traži">
-<!ENTITY menu.find.accesskey "T">
-<!ENTITY menu.findagain.label "Ponovno traži">
-<!ENTITY menu.findagain.accesskey "n">
-<!ENTITY view.label "Pogledati">
-<!ENTITY view.accesskey "g">
-<!ENTITY sort.label "Posložiti po">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Neposloženo">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "A > Z red slaganja">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A red slaganja">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opcije">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Omogući Adblock Plus">
-<!ENTITY enable.accesskey "m">
-<!ENTITY showintoolbar.label "Prikaži u alatnoj traci">
-<!ENTITY showintoolbar.accesskey "a">
-<!ENTITY showinstatusbar.label "Prikaži u statusnoj traci">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Prikaži kartice s Flashom i Javom">
-<!ENTITY objecttabs.accesskey "k">
-<!ENTITY collapse.label "Sažmi blokirane elemente">
-<!ENTITY collapse.accesskey "e">
-<!ENTITY help.label "Pomoć">
-<!ENTITY help.accesskey "ć">
-<!ENTITY gettingStarted.label "Kako početi">
-<!ENTITY gettingStarted.accesskey "p">
-<!ENTITY faq.label "Često postavljana pitanja">
-<!ENTITY faq.accesskey "t">
-<!ENTITY filterdoc.label "Pisanje Adblock Plus filtera">
-<!ENTITY filterdoc.accesskey "i">
-<!ENTITY about.label "O Adblock Plus">
-<!ENTITY about.accesskey "O">
-<!ENTITY description "Dodajte adrese koje želite blokirati, za prijedloge provjerite padajući popis.
-Možete koristiti * kao joker da bi kreirali još općenitije filtere. Napredni korisnici mogu koristiti regularne izraze kao /banner\d+\.gif$/.">
-<!ENTITY filter.column "Pravilo filtera">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Spori filteri">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "Omogućeno">
-<!ENTITY enabled.accesskey "m">
-<!ENTITY hitcount.column "Pogoci">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "Posljednji pogodak">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Uredi filter">
-<!ENTITY context.resethitcount.label "Vrati izvornu statistiku pogodaka za filter">
-<!ENTITY context.synchsubscription.label "Ažuriraj pretplatu sada">
-<!ENTITY context.editsubscription.label "Uredi pretplatu">
-<!ENTITY context.moveup.label "Pomakni prema gore">
-<!ENTITY context.movedown.label "Pomakni prema dolje">
-<!ENTITY context.movegroupup.label "Pomakni grupu prema gore">
-<!ENTITY context.movegroupdown.label "Pomakni grupu prema dolje">
-<!ENTITY context.enable.label "Omogućiti">
-<!ENTITY context.disable.label "Onemogućiti">
-<!ENTITY apply.label "Primijeni">
-<!ENTITY apply.accesskey "P">
-<!ENTITY fennec.subscription.label "Pretplate na filtere">
-<!ENTITY sync.accesskey "c">
-<!ENTITY sync.label "Sync Adblock Plus settings">
diff --git a/chrome/adblockplus.jar!/locale/hr/sidebar.dtd b/chrome/adblockplus.jar!/locale/hr/sidebar.dtd
index d034159..fa886cf 100644
--- a/chrome/adblockplus.jar!/locale/hr/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/hr/sidebar.dtd
@@ -31,5 +31,6 @@
 <!ENTITY context.copyFilter.label "Kopirati filter">
 <!ENTITY context.selectAll.label "Odabrati sve">
 <!ENTITY docDomain.thirdParty "(third party)">
+<!ENTITY filterSource.label "Filter source">
 <!ENTITY docDomain.firstParty "(first party)">
 <!ENTITY tooltip.filter.disabled "(disabled)">
diff --git a/chrome/adblockplus.jar!/locale/hr/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/hr/subscriptionSelection.dtd
index 190a9cd..37ad596 100644
--- a/chrome/adblockplus.jar!/locale/hr/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/hr/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Add Adblock Plus pretplate na filtere">
-<!ENTITY dialog.title.edit "Uredi pretplatu na filter">
-<!ENTITY description.newInstall "Adblock Plus će biti najučinkovitiji ako dodate pretplate na filtere. Pretplate na filtere su osigurane od strane drugih korisnika Adblock Plusa, potpuno besplatno. Najprikladnija pretplata za vaš jezik je već odabrana.">
 <!ENTITY subscriptionSelector.label "Molimo odaberite pretplatu na filter sa popisa:">
 <!ENTITY viewList.label "Pogledati filtere">
 <!ENTITY visitHomepage.label "Posjetite početnu stranicu">
 <!ENTITY addSubscription.label "Dodati pretplatu">
-<!ENTITY saveSubscription.label "Spremiti pretplatu">
-<!ENTITY other.label "Dodajte drugu pretplatu">
-<!ENTITY other.accesskey "g">
 <!ENTITY list.download.failed "Adblock Plus nij uspio vratiti popis pretplata">
 <!ENTITY list.download.retry "Pokušajte ponovno">
 <!ENTITY list.download.website "Pogledati stranicu">
 <!ENTITY fromWeb.description "Molimo potvrdite da želite dodati ovu pretlatu na filter. Možete promijeniti naziv ili lokaciju pretplate prije nego što je dodate.">
-<!ENTITY edit.description "Možete promijeniti naziv ili lokaciju pretplate po potrebi.">
-<!ENTITY external.description "Ovo je vanjska pretplata na filter; biti će osvježena od strane dodatka koji je stvorio pretplatu.">
 <!ENTITY title.label "Naslov pretplate:">
 <!ENTITY title.accesskey "p">
 <!ENTITY location.label "Mjesto popisa filtera:">
 <!ENTITY location.accesskey "j">
-<!ENTITY autodownload.label "Automatski ažuriraj">
-<!ENTITY autodownload.accesskey "m">
 <!ENTITY supplementMessage "Ova pretplata na filter je namjenjena korištenju sa pretplatom na filter "?1?" koju još ne koristite.">
 <!ENTITY addMain.label "Također dodajte pretplatu na filter "?1?&quot">
 <!ENTITY addMain.accesskey "d">
diff --git a/chrome/adblockplus.jar!/locale/hsb-DE/filters.dtd b/chrome/adblockplus.jar!/locale/hsb-DE/filters.dtd
new file mode 100644
index 0000000..0bcb298
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hsb-DE/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Adblock Plus - filtrowe nastajenja">
+<!ENTITY subscriptions.tab.label "Filtrowe abonementy">
+<!ENTITY filters.tab.label "Swójske filtry">
+<!ENTITY addSubscription.label "Filtrowy abonement přidać">
+<!ENTITY addSubscription.accesskey "F">
+<!ENTITY addSubscriptionAdd.label "Přidać">
+<!ENTITY addSubscriptionCancel.label "Přetorhnyć">
+<!ENTITY addSubscriptionOther.label "Druhi abonement přidać">
+<!ENTITY noSubscriptions.text "
+Njejsće hišće žane filtrowe abonementy přidał. Adblock Plus njebudźe
+ bjez filtrow ničo blokować, prošu wužijće "Filtrowy abonement přidać", zo byšće
+ filter přidać.
+">
+<!ENTITY subscription.homepage.label "Startowa strona">
+<!ENTITY subscription.external.label "Přez druhe rozšěrjenje zaktualizowany">
+<!ENTITY subscription.source.label "Filtrowa lisćina">
+<!ENTITY subscription.enabled.label "Zmóžnjeny">
+<!ENTITY subscription.lastDownload.label "Poslednje sćehnjenje:">
+<!ENTITY subscription.lastDownload.inProgress "Sćahuje so…">
+<!ENTITY subscription.lastDownload.unknown "Ničo k dispoziciji">
+<!ENTITY subscription.lastDownload.invalidURL "Njeporadźiło, žana płaćiwa adresa">
+<!ENTITY subscription.lastDownload.connectionError "Njeporadźiło, sćahowanski zmylk">
+<!ENTITY subscription.lastDownload.invalidData "Njeporadźiło, žana płaćiwa filtrowa lisćina">
+<!ENTITY subscription.lastDownload.checksumMismatch "Njeporadźiło, wopačna kontrolna suma">
+<!ENTITY subscription.lastDownload.success "Wuspěch">
+<!ENTITY subscription.minVersion.warning "Tutón filtrowy abonement wužaduje sej nowšu wersiju Adblock Plus, wy měł na najnowšu wersiju Adblock Plus aktualizować.">
+<!ENTITY subscription.disabledFilters.warning "Někotre filtry w tutym abonemenće su znjemóžnjene.">
+<!ENTITY subscription.disabledFilters.enable "Znjemóžnjene filtry zmóžnić">
+<!ENTITY subscription.actions.label "Akcije">
+<!ENTITY subscription.update.label "Filtry aktualizować">
+<!ENTITY subscription.editTitle.label "Titul wobdźěłać">
+<!ENTITY subscription.delete.label "Zhašeć">
+<!ENTITY subscription.showHideFilters.label "Filtry pokazać/schować">
+<!ENTITY subscription.moveUp.label "Horje">
+<!ENTITY subscription.moveDown.label "Dele">
+<!ENTITY acceptableAds.label "Njenadběhawe wabjenje dowolić">
+<!ENTITY acceptableAds.accesskey "N">
+<!ENTITY readMore.label "Wjace čitać">
+<!ENTITY addGroup.label "Filtrowu skupinu přidać">
+<!ENTITY addGroup.accesskey "s">
+<!ENTITY noFilters.text "
+Nimaće hišće žane swójske filtry.
+">
+<!ENTITY addFilter.label "Filter přidać">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "Filtrowe akcije">
+<!ENTITY filter.edit.label "Wobdźěłać">
+<!ENTITY filter.cut.label "Wutřihać">
+<!ENTITY filter.copy.label "Kopěrować">
+<!ENTITY filter.paste.label "Zasunyć">
+<!ENTITY filter.delete.label "Zhašeć">
+<!ENTITY filter.selectAll.label "Wšo wubrać">
+<!ENTITY filter.resetHitCounts.label "Statistiku wróćo stajić">
+<!ENTITY filter.moveUp.label "Horje">
+<!ENTITY filter.moveDown.label "Dele">
+<!ENTITY viewMenu.label "Napohlad">
+<!ENTITY filter.column "Filtrowe prawidło">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Pomałe filtry">
+<!ENTITY slow.accesskey "o">
+<!ENTITY enabled.column "Zmóžnjeny">
+<!ENTITY enabled.accesskey "m">
+<!ENTITY hitcount.column "Wotpowědniki">
+<!ENTITY hitcount.accesskey "W">
+<!ENTITY lasthit.column "Posledni wotpowědnik">
+<!ENTITY lasthit.accesskey "P">
+<!ENTITY sort.label "Sortěrować po">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Njesortěrowany">
+<!ENTITY sort.none.accesskey "R">
+<!ENTITY sort.ascending.label "Porjad A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Porjad Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Dyrbiće filtrowu skupinu wubrać, prjedy hač filtry dadźa so zwobraznić.">
+<!ENTITY noFiltersInGroup.text "Wubrana skupina je prózdna">
+<!ENTITY filters.remove.warning "Chceće woprawdźe wšě wubrane filtry wotstronić?">
+<!ENTITY backupButton.label "Zawěsćić a wobnowić">
+<!ENTITY backupButton.accesskey "Z">
+<!ENTITY backup.label "Nowu zawěsćensku kopiju wutworić">
+<!ENTITY restore.default.label "Zawěsćensku kopiju wot ?1? wobnowić">
+<!ENTITY restore.own.label "Swójsku zawěsćensku kopiju wobnowić">
+<!ENTITY backup.complete.title "Wšě filtry a abonementy">
+<!ENTITY backup.custom.title "Jenož swójske filtry">
+<!ENTITY backup.error "Při pisanju filtrow do dataje je zmylk wustupił. Zawěsćće, zo dataja njeje přećiwo pisanju škitana abo so přez druhi program njewužiwa.">
+<!ENTITY restore.error "Daty dataje njedadźa so předźěłać, je móžno, zo wona zawěsćenska dataja Adblock Plus njeje?">
+<!ENTITY restore.complete.warning "Wšě waše filtrowe nastajenja budu so přez wobsah wubraneje dataje narunować. Chceće pokročować?">
+<!ENTITY restore.custom.warning "Wšě waše swójske filtry budu so přez wobsah wubraneje dataje narunować. Chceće pokročować?">
+<!ENTITY restore.minVersion.warning "Warnowanje: Dataja je so přez nowšu wersiju Adblock Plus wutworiła. Wy měł na najnowšu wersiju Adblock Plus aktualizować, prjedy hač tutu dataju wobnowiće.">
+<!ENTITY find.label "Pytać">
+<!ENTITY find.accesskey "P">
+<!ENTITY close.label "Začinić">
diff --git a/chrome/adblockplus.jar!/locale/hsb-DE/firstRun.dtd b/chrome/adblockplus.jar!/locale/hsb-DE/firstRun.dtd
new file mode 100644
index 0000000..cd801e9
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hsb-DE/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus je dospołnje instalowany">
+<!ENTITY confirmation "
+Dźakujemy so, zo sće Adblock Plus instalował. Wabjenje budźe so wot nětka blokować.
+Wjele wjesela!">
+<!ENTITY advancedSection "Rozšěrjene nastajenja">
+<!ENTITY listSelection1 "
+Slědowaca filtrowa lisćina je so konfigurowała, zo by wabjenje blokowała:
+">
+<!ENTITY noList "Žana filtrowa lisćina">
+<!ENTITY visitHomepage.label "Startowu stronu lisćiny wopytać">
+<!ENTITY acceptableAds "
+Adblock Plus je so tež konfigurował, zo by njenadběhawe wabjenje dowolił.
+">
+<!ENTITY readMore.label "Wjace wo tym čitać">
+<!ENTITY listSelection2 "
+Móžeće tutón wuběr kóždy čs w [link]filtrowych nastajenjach[/link] změnić.
+">
diff --git a/chrome/adblockplus.jar!/locale/hsb-DE/global.properties b/chrome/adblockplus.jar!/locale/hsb-DE/global.properties
index 14b5b74..ac47f05 100644
--- a/chrome/adblockplus.jar!/locale/hsb-DE/global.properties
+++ b/chrome/adblockplus.jar!/locale/hsb-DE/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? z ?2?
 blocked_count_addendum=(tež w běłej lisćinje: ?1?, schowane: ?2?)
 no_blocking_suggestions=Žane blokujomne zapiski na tutej stronje
 whitelisted_page=Adblock Plus je so za tutu stronu znjemóžnił
-whitelist_description=Moje wuwzaćne prawidła
-filterlist_description=Moje blokowanske prawidła
-invalid_description=Moje njepłaćiwe prawidła
-elemhide_description=Moje prawidła za chowanje elementow
-subscription_description=Filtrowy abonement:
-subscription_wrong_version=Někotre filtry w tutym abonemenće trjebaja Adblock Plus ?1?, zo bychu korektnje fungowali.
-subscription_source=Žórło:
-subscription_status=Status:
-subscription_status_autodownload=Awtomatisce zaktualizowany
-subscription_status_manualdownload=Manuelnje zaktualizowany
-subscription_status_externaldownload=Eksternje zaktualizowany (druhe rozšěrjenje)
-subscription_status_lastdownload=Poslednje sćehnjenje:
-subscription_status_lastdownload_inprogress=Sćahuje so…
-subscription_status_lastdownload_unknown=Ničo k dispoziciji
+newGroup_title=Nowa filtrowa skupina
+whitelistGroup_title=Wuwzaćne prawidła
+blockingGroup_title=Prawidła za blokowanje reklamy
+elemhideGroup_title=Prawidł za schowanje elementow
 remove_subscription_warning=Chceće woprawdźe tutón abonement wotstronić?
-import_filters_wrong_version=Warnowanje: Někotre filtry w tutej lisćinje trjebaja Adblock Plus ?1?, zo bychu korektnje fungowali. Wy měł najnowšu wersiju Adblock Plus instalować, prjedy hač tutu lisćinu importujeće.
-import_filters_warning=Chceće swoje aktuelne filtry narunać abo nowe filtry ke kóncej lisćiny připowěsnyć?
-import_filters_title=Filtry importować
-export_filters_title=Filtry eksportować
-invalid_filters_file=To płaćiwa dataja za filtry Adblock Plus njeje.
-filters_write_error=Při pisanju filtrow do dataje je zmylk wustupił. Zawěsćće, zo dataja njeje přećiwo pisanju škitana abo wočińće ju w druhej aplikaciji.
-clearall_warning=Chceće woprawdźe wšě filtry z lisćiny wotstronić?
-resethitcounts_warning=Chceće woprawdźe ličbu wotpowědnikow za wšě filtry wróćo na nul stajić? Kedźbu: tuta operacija njeda so cofnyć.
-resethitcounts_selected_warning=Chceće woprawdźe ličby wotpowědnikow za wubrane filtry wróćo na nul stajić? Kedźbu: tuta operacija da so cofnyć.
+clearStats_warning=To staji wšu filtrowu statistiku wróćo a znjemóžni ličenje filtrowych wotpowědnikow. Chceće pokoročować?
 filter_regexp_tooltip=Tutón filter je pak regularny wuraz pak překrótko za optimizowanje. Přewjele tutych filtrow móhło waš wobhladowak spomałšić.
 filter_elemhide_duplicate_id=Jenož jedyn ID elementa, kotryž ma so schować, hodźi so podać
 filter_elemhide_nocriteria=Žane kriterije podate, zo by element spóznało, kotryž ma so schować
-subscription_notAdded_warning=Njejsće filtrowy abonement přidać. Bjez filtroweho abonementa, dyrbiće filtry Adblock Plus manuelnje přidać.
-subscription_notAdded_warning_addendum=Chceće postupować?
 subscription_invalid_location=Městno filtroweje lisćiny njeje ani płaćiwy URL ani płaćiwe datajowe mjeno.
-synchronize_invalid_url=Njeporadźiło, žana płaćiwa adresa
-synchronize_connection_error=Njeporadźiło, sćahowanski zmylk
-synchronize_invalid_data=Njeporadźiło, žana płaćiwa filtrowa lisćina
-synchronize_checksum_mismatch=Njeporadźiło, wopačna kontrolna suma
-synchronize_ok=Wuspěch
-overwrite=Přepisać
-append=Připowěsnyć
-new_filter_group_title=Nowy filter
 type_label_other=druhi
 type_label_script=skript
 type_label_image=wobraz
@@ -56,15 +28,12 @@ type_label_object=objekt
 type_label_subdocument=wobłuk
 type_label_document=dokument
 type_label_elemhide=schowany
-type_label_xbl=XBL-wjazanje
-type_label_ping=wotkazowa wotmołwa
+type_label_popup=wuskakowace wokno
 type_label_xmlhttprequest=XML-naprašowanje
 type_label_object_subrequest=objektowe naprašowanje
-type_label_dtd=DTD
 type_label_media=awdio/widejo
 type_label_font=pismo
 fennec_status_enabled=Adblock Plus je zmóžnjeny.
 fennec_status_disabled=Adblock Plus je znjemóžnjeny.
 fennec_status_enabled_site=Adblock Plus je na ?1? zmóžnjeny.
 fennec_status_disabled_site=Adblock Plus je na ?1? znjemóžnjeny.
-sync_engine_title=Adblock Plus daty
diff --git a/chrome/adblockplus.jar!/locale/hsb-DE/overlay.dtd b/chrome/adblockplus.jar!/locale/hsb-DE/overlay.dtd
index a615460..67c44aa 100644
--- a/chrome/adblockplus.jar!/locale/hsb-DE/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/hsb-DE/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Nastajenja Adblock Plus">
 <!ENTITY menuitem.accesskey "s">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokujomne elementy">
 <!ENTITY context.image.label "Adblock Plus: Wobraz blokować">
 <!ENTITY context.object.label "Adblock Plus: Objekt blokować">
 <!ENTITY context.frame.label "Adblock Plus: Wobłuk blokować">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blokujomne elementy na aktualnej stronje">
 <!ENTITY sendReport.label "Problem na tutej stronje zdźělić">
 <!ENTITY sendReport.accesskey "P">
-<!ENTITY settings.label "Nastajenja">
-<!ENTITY settings.accesskey "n">
+<!ENTITY filters.label "Filtrowe nastajenja">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Blokujomne elementy wočinić">
 <!ENTITY opensidebar.accesskey "k">
 <!ENTITY closesidebar.label "Blokujomne elementy začinić">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Na ?1? znjemóžnić">
 <!ENTITY whitelist.page.label "Jenož na tutej stronje znjemóžnić">
 <!ENTITY disable.label "Wšudźe znjemóžnić">
-<!ENTITY recommend.label "Nas na Facebooku poručić">
+<!ENTITY options.label "Opcije">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "K Adblock Plus přinošować">
+<!ENTITY showintoolbar.label "W gratowej lajsće pokazać">
+<!ENTITY showintoolbar.accesskey "l">
+<!ENTITY showinstatusbar.label "W statusowej lajsće pokazać">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "W přidatkowej lajsće pokazać">
+<!ENTITY showinaddonbar.accesskey "l">
+<!ENTITY objecttabs.label "Rajtarki wo Flash a Java pokazać">
+<!ENTITY objecttabs.accesskey "v">
+<!ENTITY hideplaceholders.label "Městodźeržićele zablokowanych elementow schować">
+<!ENTITY hideplaceholders.accesskey "M">
+<!ENTITY counthits.label "Filtrowe wotpowědniki ličić">
+<!ENTITY counthits.accesskey "F">
+<!ENTITY sync.label "Nastajenja Adblock Plus synchronizować">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Blokować">
 <!ENTITY objecttab.tooltip "Klikńće sem, zo byšće tutón objekt z pomcu Adblock Plus blokował">
diff --git a/chrome/adblockplus.jar!/locale/hsb-DE/settings.dtd b/chrome/adblockplus.jar!/locale/hsb-DE/settings.dtd
deleted file mode 100644
index 6758dbf..0000000
--- a/chrome/adblockplus.jar!/locale/hsb-DE/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Nastajenja Adblock Plus">
-<!ENTITY filters.label "Filtry">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Filter přidać">
-<!ENTITY add.accesskey "d">
-<!ENTITY addsubscription.label "Filtrowy abonement přidać">
-<!ENTITY addsubscription.accesskey "b">
-<!ENTITY synchsubscriptions.label "Wšě abonomenty aktualizować">
-<!ENTITY synchsubscriptions.accesskey "a">
-<!ENTITY import.label "Filtry importować">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Swójske filtry eksportować">
-<!ENTITY export.accesskey "w">
-<!ENTITY clearall.label "Wšě swójske filtry wotstronić">
-<!ENTITY clearall.accesskey "l">
-<!ENTITY resethitcounts.label "Statistiku wotpowědnikow wróćo stajić">
-<!ENTITY resethitcounts.accesskey "S">
-<!ENTITY edit.label "Wobdźěłać">
-<!ENTITY edit.accesskey "W">
-<!ENTITY cut.label "Wutřihać">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Kopěrować">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Zasunyć">
-<!ENTITY paste.accesskey "Z">
-<!ENTITY remove.label "Hašeć">
-<!ENTITY remove.accesskey "H">
-<!ENTITY menu.find.label "Pytać">
-<!ENTITY menu.find.accesskey "P">
-<!ENTITY menu.findagain.label "Dale pytać">
-<!ENTITY menu.findagain.accesskey "l">
-<!ENTITY view.label "Napohlad">
-<!ENTITY view.accesskey "N">
-<!ENTITY sort.label "Sortěrować po">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Njesortěrowany">
-<!ENTITY sort.none.accesskey "R">
-<!ENTITY sort.ascending.label "Porjad A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Porjad Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opcije">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Adblock Plus zmóžnić">
-<!ENTITY enable.accesskey "m">
-<!ENTITY showintoolbar.label "W gratowej lajsće pokazać">
-<!ENTITY showintoolbar.accesskey "g">
-<!ENTITY showinstatusbar.label "W statusowej lajsće pokazać">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Rajtarki wo Flash a Java pokazać">
-<!ENTITY objecttabs.accesskey "v">
-<!ENTITY collapse.label "Zablokowane elementy fałdować">
-<!ENTITY collapse.accesskey "f">
-<!ENTITY sync.label "Nastajenja Adblock Plus synchronizować">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Pomoc">
-<!ENTITY help.accesskey "P">
-<!ENTITY gettingStarted.label "Prěnje kroki">
-<!ENTITY gettingStarted.accesskey "k">
-<!ENTITY faq.label "Časte prašenja">
-<!ENTITY faq.accesskey "T">
-<!ENTITY filterdoc.label "Pisanje filtrow Adblock Plus">
-<!ENTITY filterdoc.accesskey "i">
-<!ENTITY about.label "Wo Adblock Plus">
-<!ENTITY about.accesskey "b">
-<!ENTITY description "Slědowace filtry postajeja, kotre adresy maja so blokować a kotre maja so dowolić:">
-<!ENTITY filter.column "Filtrowe prawidło">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Pomałe filtry">
-<!ENTITY slow.accesskey "o">
-<!ENTITY enabled.column "Zmóžnjeny">
-<!ENTITY enabled.accesskey "m">
-<!ENTITY hitcount.column "Wotpowědniki">
-<!ENTITY hitcount.accesskey "W">
-<!ENTITY lasthit.column "Posledni wotpowědnik">
-<!ENTITY lasthit.accesskey "P">
-<!ENTITY context.edit.label "Filter wobdźěłać">
-<!ENTITY context.resethitcount.label "Statistiku wotpowědnikow za filter wróćo stajić">
-<!ENTITY context.synchsubscription.label "Abonement nětko aktualizować">
-<!ENTITY context.editsubscription.label "Abonement wobdźěłać">
-<!ENTITY context.moveup.label "Filter horje přesunyć">
-<!ENTITY context.movedown.label "Filter dele přesunyć">
-<!ENTITY context.movegroupup.label "Skupinu horje přesunyć">
-<!ENTITY context.movegroupdown.label "Skupinu dele přesunyć">
-<!ENTITY context.enable.label "Zmóžnić">
-<!ENTITY context.disable.label "Znjemóžnić">
-<!ENTITY apply.label "Nałožić">
-<!ENTITY apply.accesskey "a">
-<!ENTITY fennec.subscription.label "Filtrowy abonement">
diff --git a/chrome/adblockplus.jar!/locale/hsb-DE/sidebar.dtd b/chrome/adblockplus.jar!/locale/hsb-DE/sidebar.dtd
index c3bfda9..d6cd47e 100644
--- a/chrome/adblockplus.jar!/locale/hsb-DE/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/hsb-DE/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filter">
 <!ENTITY state.label "Staw">
 <!ENTITY size.label "Wulkosć">
+<!ENTITY filterSource.label "Žórło filtrow">
 <!ENTITY docDomain.label "Žórło dokumenta">
 <!ENTITY docDomain.thirdParty "(třeći bok)">
 <!ENTITY docDomain.firstParty "(prěni bok)">
diff --git a/chrome/adblockplus.jar!/locale/hsb-DE/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/hsb-DE/subscriptionSelection.dtd
index 9f37394..855dc20 100644
--- a/chrome/adblockplus.jar!/locale/hsb-DE/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/hsb-DE/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Filtrowy abonement Adblock Plus přidać">
-<!ENTITY dialog.title.edit "Filtrowy abonement wobdźěłać">
-<!ENTITY description.newInstall "Adblock Plus budźe najefektiwnišo, hdyž filtrowy abonement přidaće. Filtrowe abonementy steja so wot wužiwarjow Adblock Plus darmo k dispoziciji. Najpřihódniši abonement za wašu rěč je hižo wubrany.">
 <!ENTITY subscriptionSelector.label "Prošu wubjerće filtrowy abonement z lisćiny:">
 <!ENTITY viewList.label "Filtry sej wobhladać">
 <!ENTITY visitHomepage.label "Startowu stronu wopytać">
 <!ENTITY addSubscription.label "Abonement přidać">
-<!ENTITY saveSubscription.label "Abonement składować">
-<!ENTITY other.label "Druhi abonement přidać">
-<!ENTITY other.accesskey "u">
 <!ENTITY list.download.failed "Adblock Plus njemóžeše lisćiny abonementow wotwołać.">
 <!ENTITY list.download.retry "Hišće raz spytać">
 <!ENTITY list.download.website "Websydło sej wobhladać">
 <!ENTITY fromWeb.description "Prošu wobkrućće, zo chceće tutón filtrowy abonement přidać. Móžeće titul abo městno abonementa změnić, prjedy hač jón přidaće.">
-<!ENTITY edit.description "Móžeće titul abo městno abonementa, jeli je trjeba, změnić.">
-<!ENTITY external.description "To je eksterny filtrowy abonement; budźe so přez rozšěrjenje aktualizować, kotrež je tutón abonement wutworiło.">
 <!ENTITY title.label "Titul abonementa:">
 <!ENTITY title.accesskey "t">
 <!ENTITY location.label "Městno filtroweje lisćiny:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "Filtry awtomatisce aktualizować">
-<!ENTITY autodownload.accesskey "a">
 <!ENTITY supplementMessage "Tutón filtrowy abonement je za to mysleny, so z filtrowym abonementom "?1?" wužiwać, kotryž hišće njewužiwaće.">
 <!ENTITY addMain.label "Filtrowy abonement "?1?" tež přidać">
 <!ENTITY addMain.accesskey "b">
diff --git a/chrome/adblockplus.jar!/locale/hu/filters.dtd b/chrome/adblockplus.jar!/locale/hu/filters.dtd
new file mode 100644
index 0000000..c649f67
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hu/filters.dtd
@@ -0,0 +1,90 @@
+<!ENTITY dialog.title "Adblock Plus szűrő beállítások">
+<!ENTITY subscriptions.tab.label "Külső szűrők">
+<!ENTITY filters.tab.label "Saját szűrők">
+<!ENTITY addSubscription.label "Külső szűrő hozzáadása">
+<!ENTITY addSubscription.accesskey "s">
+<!ENTITY addSubscriptionAdd.label "Hozzáadás">
+<!ENTITY addSubscriptionCancel.label "Mégse">
+<!ENTITY addSubscriptionOther.label "Külső szűrő hozzáadása">
+<!ENTITY noSubscriptions.text "
+ Nincs felvéve egyetlen külső szűrőt sem. Az Adblock Plus nem fog semmit szűrni szűrők nélkül. Kérem használja a "Külső szűrő felvétele" funkciót új szűrők felvételéhez.
+">
+<!ENTITY subscription.homepage.label "Honlap">
+<!ENTITY subscription.external.label "Másik kiterjesztés frissíti">
+<!ENTITY subscription.source.label "Szűrő lista">
+<!ENTITY subscription.enabled.label "Engedélyezve">
+<!ENTITY subscription.lastDownload.label "Legutóbb letöltve:">
+<!ENTITY subscription.lastDownload.inProgress "Letöltés...">
+<!ENTITY subscription.lastDownload.unknown "ismeretlen">
+<!ENTITY subscription.lastDownload.invalidURL "Sikertelen, érvénytelen cím">
+<!ENTITY subscription.lastDownload.connectionError "Sikertelen, letöltési hiba">
+<!ENTITY subscription.lastDownload.invalidData "Sikertelen, érvénytelen szűrőlista">
+<!ENTITY subscription.lastDownload.checksumMismatch "Sikertelen, érvénytelen ellenőrző összeg">
+<!ENTITY subscription.lastDownload.success "Sikeres">
+<!ENTITY subscription.minVersion.warning "A külső szűrő újabb Adblock Plus verzióhoz készült, frissítenie kell az Adblock Plust a legújabb verzióra.">
+<!ENTITY subscription.disabledFilters.warning "Néhány szűrő ebben a listában le van tiltva.">
+<!ENTITY subscription.disabledFilters.enable "Letiltott szűrők engedélyezése">
+<!ENTITY subscription.actions.label "Műveletek">
+<!ENTITY subscription.update.label "Szűrők frissítése">
+<!ENTITY subscription.editTitle.label "Cím szerkesztése">
+<!ENTITY subscription.delete.label "Törlés">
+<!ENTITY subscription.showHideFilters.label "Szűrők megjelenítése/elrejtése">
+<!ENTITY subscription.moveUp.label "Mozgatás fel">
+<!ENTITY subscription.moveDown.label "Mozgatás le">
+<!ENTITY acceptableAds.label "Nem tolakodó reklámok engedélyezése">
+<!ENTITY acceptableAds.accesskey "t">
+<!ENTITY readMore.label "Mi ez?">
+<!ENTITY addGroup.label "Szűrő csoport felvétele">
+<!ENTITY addGroup.accesskey "c">
+<!ENTITY noFilters.text "
+ Nincsenek saját szűrők.
+">
+<!ENTITY addFilter.label "Szűrő hozzáadása">
+<!ENTITY addFilter.accesskey "H">
+<!ENTITY filter.actions.label "Szűrő műveletek">
+<!ENTITY filter.edit.label "Szerkesztés">
+<!ENTITY filter.cut.label "Kivágás">
+<!ENTITY filter.copy.label "Másolás">
+<!ENTITY filter.paste.label "Beillesztés">
+<!ENTITY filter.delete.label "Törlés">
+<!ENTITY filter.selectAll.label "Az összes kijelölése">
+<!ENTITY filter.resetHitCounts.label "Találati statisztika törlése">
+<!ENTITY filter.moveUp.label "Mozgatás fel">
+<!ENTITY filter.moveDown.label "Mozgatás le">
+<!ENTITY viewMenu.label "Nézet">
+<!ENTITY filter.column "Szűrő szabály">
+<!ENTITY filter.accesskey "S">
+<!ENTITY slow.column "Lassú szűrők">
+<!ENTITY slow.accesskey "L">
+<!ENTITY enabled.column "Engedélyezve">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "Találatok">
+<!ENTITY hitcount.accesskey "T">
+<!ENTITY lasthit.column "Utolsó találat">
+<!ENTITY lasthit.accesskey "U">
+<!ENTITY sort.label "Rendezés">
+<!ENTITY sort.accesskey "R">
+<!ENTITY sort.none.label "Rendezetlen">
+<!ENTITY sort.none.accesskey "e">
+<!ENTITY sort.ascending.label "A > Z rendezés">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A rendezés">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Ki kell választania egy szűrő csoportot a benne lévő szűrők megjelenítéséhez.">
+<!ENTITY noFiltersInGroup.text "A kiválasztott csoport üres.">
+<!ENTITY filters.remove.warning "Biztosan eltávolítja az összes kiválasztott szűrőt?">
+<!ENTITY backupButton.label "Biztonsági mentés és visszaállítás">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "Új biztonsági mentés">
+<!ENTITY restore.default.label "Visszaállítás ?1? állapotra">
+<!ENTITY restore.own.label "Saját mentés visszaállítása">
+<!ENTITY backup.complete.title "Az összes szűrő és feliratkozás">
+<!ENTITY backup.custom.title "Csak saját szűrők">
+<!ENTITY backup.error "Hiba történt a szűrők fájlba mentésekor. Ellenőrizze, hogy a fájl nem írásvédett vagy nem használja-e egy másik alkalmazás.">
+<!ENTITY restore.error "A fájlt nem sikerült feldolgozni, lehetséges, hogy nem egy Adblock Plus biztonsági mentést tartalmaz.">
+<!ENTITY restore.complete.warning "Az összes szűrő beállítása le lesz cserélve a kiválasztott fájlban lévőkre. Biztosan folytatni szeretné?">
+<!ENTITY restore.custom.warning "Az összes saját szűrője le lesz cserélve a kiválasztott fájlban lévőkre. Biztosan folytatni szeretné?">
+<!ENTITY restore.minVersion.warning "Figyelmeztetés: a fájlt az Adblock Plus újabb verziójával készült. Frissítsen az Adblock Plus legújabb verziójára, mielőtt visszaállítaná ezt a fájlt.">
+<!ENTITY find.label "Keresés">
+<!ENTITY find.accesskey "k">
+<!ENTITY close.label "Bezárás">
diff --git a/chrome/adblockplus.jar!/locale/hu/firstRun.dtd b/chrome/adblockplus.jar!/locale/hu/firstRun.dtd
new file mode 100644
index 0000000..08e2f63
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hu/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Az Adblock Plus telepítése befejeződött">
+<!ENTITY confirmation "
+ Köszönjük, hogy telepítette az Adblock Plust. Mostantól le vannak tiltva a reklámok a weboldalakról.
+ Jó szórakozást!">
+<!ENTITY advancedSection "Haladó beállítások">
+<!ENTITY listSelection1 "
+ A következő szűrők alapján vannak letiltva a reklámok:
+">
+<!ENTITY noList "Nincsenek külső szűrők">
+<!ENTITY visitHomepage.label "Külső szűrő honlapja">
+<!ENTITY acceptableAds "
+ Az Adblock Plus úgy van beállítva, hogy a nem tolakodó reklámok nem kerülnek letiltásra.
+">
+<!ENTITY readMore.label "További információk erről">
+<!ENTITY listSelection2 "
+ Ezt a részt bármikor módosíthatja a [link]Szűrő beállítások[/link] alatt.
+">
diff --git a/chrome/adblockplus.jar!/locale/hu/global.properties b/chrome/adblockplus.jar!/locale/hu/global.properties
index 56befd0..6ce13cf 100644
--- a/chrome/adblockplus.jar!/locale/hu/global.properties
+++ b/chrome/adblockplus.jar!/locale/hu/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1?/?2?
 blocked_count_addendum=(fehérlistán: ?1?, rejtett: ?2?)
 no_blocking_suggestions=Nincsenek blokkolható elemek az aktuális oldalon.
 whitelisted_page=Az Adblock Plus le van tiltva az aktuális oldalon
-whitelist_description=Kivételek
-filterlist_description=Reklámszűrők
-invalid_description=Érvénytelen szűrők
-elemhide_description=Elem elrejtési szabályok
-subscription_description=Külső szűrő:
-subscription_wrong_version=Néhány szűrőnek ezen a listán Adblock Plus ?1? kell a helyes működéshez!
-subscription_source=Forrás:
-subscription_status=Állapot:
-subscription_status_autodownload=Automatikus frissítés
-subscription_status_manualdownload=Manuális frissítés
-subscription_status_externaldownload=Külső frissítés (másik kiterjesztéssel)
-subscription_status_lastdownload=Legutóbb letöltve:
-subscription_status_lastdownload_inprogress=Letöltés...
-subscription_status_lastdownload_unknown=ismeretlen
+newGroup_title=Új szűrő csoport
+whitelistGroup_title=Kivétel szabályok
+blockingGroup_title=Reklám szűrő szabályok
+elemhideGroup_title=Elem elrejtési szabályok
 remove_subscription_warning=Valóban el kívánja távolítani ezt a szűrőt?
-import_filters_wrong_version=Figyelmeztetés: néhány szűrő megfelelő működéséhez ezen a listán az Adblock Plus ?1? verziója szükséges. Frissítsen az Adblock Plus legújabb kiadására, mielőtt importálja ezt a listát.
-import_filters_warning=Szeretné felülírni a jelenlegi szűrőket, vagy hozzáfűzi a lista végéhez?
-import_filters_title=Szűrők importálása
-export_filters_title=Szűrők exportálása
-invalid_filters_file=Ez a fájl nem tartalmaz Adblock Plus szűrőt.
-filters_write_error=Nem sikerült a szűrőket a fájlba írni. Győződjön meg arról, hogy a fájl írható és nincs blokkolva más program által.
-clearall_warning=Valóban el szeretné távolítani az összes szűrőt a listából?
-resethitcounts_warning=Biztosan nullázni szeretné az összes szűrő találat-számlálóját? Ezt a műveletet nem lehet visszavonni!
-resethitcounts_selected_warning=Biztosan nullázni szeretné a kijelölt szűrők találat-számlálóját? Ezt a műveletet nem lehet visszavonni!
+clearStats_warning=Ezzel letörli az összes találati statisztikát és letiltja a mentésüket. Biztosan folytatja?
 filter_regexp_tooltip=Ez a szűrő vagy reguláris kifejezés vagy túl rövid az optimalizációhoz. Túl sok ilyen szűrő lelassíthatja a böngészést.
 filter_elemhide_duplicate_id=Csak egy ID-ját lehet megadni az elrejtendő elemnek
 filter_elemhide_nocriteria=Nincs megadva feltétel az elrejtendő elemre
-subscription_notAdded_warning=Nem adott meg szűrőt. Szűrő megadása nélkül az Adblock Plus szűrőit manuálisan kell megadnia.
-subscription_notAdded_warning_addendum=Végrehajtja a műveletet?
 subscription_invalid_location=A megadott külső szűrőt tartalmazó cím helytelen, vagy hibás fájlnevet tartalmaz.
-synchronize_invalid_url=Sikertelen, érvénytelen cím
-synchronize_connection_error=Sikertelen, letöltési hiba
-synchronize_invalid_data=Sikertelen, érvénytelen szűrőlista
-synchronize_checksum_mismatch=Sikertelen, érvénytelen ellenőrző összeg
-synchronize_ok=Sikeres
-overwrite=Felülírás
-append=Hozzáfűzés
-new_filter_group_title=Új szűrő
 type_label_other=egyéb
 type_label_script=szkript
 type_label_image=kép
@@ -56,15 +28,12 @@ type_label_object=objektum
 type_label_subdocument=keret
 type_label_document=dokumentum
 type_label_elemhide=rejtett
-type_label_xbl=XBL kötés
-type_label_ping=link ping
+type_label_popup=felugró ablak
 type_label_xmlhttprequest=XML kérés
 type_label_object_subrequest=objektum alkérés
-type_label_dtd=DTD
 type_label_media=hang/videó
 type_label_font=betűtípus
 fennec_status_enabled=Adblock Plus bekapcsolva.
 fennec_status_disabled=Adblock Plus kikapcsolva.
 fennec_status_enabled_site=Adblock Plus engedélyezve itt: ?1?.
 fennec_status_disabled_site=Adblock Plus letiltva itt: ?1?.
-sync_engine_title=Adblock Plus adat
diff --git a/chrome/adblockplus.jar!/locale/hu/overlay.dtd b/chrome/adblockplus.jar!/locale/hu/overlay.dtd
index f4fcd17..f7949a2 100644
--- a/chrome/adblockplus.jar!/locale/hu/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/hu/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus beállítások">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokkolható objektumok">
 <!ENTITY context.image.label "Kép blokkolása">
 <!ENTITY context.object.label "Objektum blokkolása">
 <!ENTITY context.frame.label "Keret blokkolása">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blokkolható objektumok">
 <!ENTITY sendReport.label "Hibás webhely bejelentése">
 <!ENTITY sendReport.accesskey "y">
-<!ENTITY settings.label "Beállítások">
-<!ENTITY settings.accesskey "B">
+<!ENTITY filters.label "Szűrő beállítások">
+<!ENTITY filters.accesskey "b">
 <!ENTITY opensidebar.label "Blokkolható objektumok megjelenítése">
 <!ENTITY opensidebar.accesskey "j">
 <!ENTITY closesidebar.label "Blokkolható objektumok elrejtése">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Szűrés tiltása itt: ?1?">
 <!ENTITY whitelist.page.label "Szűrés tiltása csak ezen az aloldalon">
 <!ENTITY disable.label "Letiltás mindenhol">
-<!ENTITY recommend.label "Ajánlj minket Facebookon">
+<!ENTITY options.label "Opciók">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Közreműködés az Adblock Plus-hoz">
+<!ENTITY showintoolbar.label "Megjelenítés az eszköztáron">
+<!ENTITY showintoolbar.accesskey "e">
+<!ENTITY showinstatusbar.label "Megjelenítés az állapotsoron">
+<!ENTITY showinstatusbar.accesskey "l">
+<!ENTITY showinaddonbar.label "Megjelenítés a kiegészítősávon">
+<!ENTITY showinaddonbar.accesskey "e">
+<!ENTITY objecttabs.label "Fülek megjelenítése Java és Flash objektumoknál">
+<!ENTITY objecttabs.accesskey "F">
+<!ENTITY hideplaceholders.label "Letiltott elemek helyőrzőinek elrejtése">
+<!ENTITY hideplaceholders.accesskey "h">
+<!ENTITY counthits.label "Szűrő találati statisztika mentése">
+<!ENTITY counthits.accesskey "s">
+<!ENTITY sync.label "Adblock Plus beállítások szinkronizálása">
+<!ENTITY sync.accesskey "z">
 <!ENTITY objecttab.title "Blokkolás">
 <!ENTITY objecttab.tooltip "Kattintson ide a blokkoláshoz (Adblock Plus)">
diff --git a/chrome/adblockplus.jar!/locale/hu/settings.dtd b/chrome/adblockplus.jar!/locale/hu/settings.dtd
deleted file mode 100644
index a65997f..0000000
--- a/chrome/adblockplus.jar!/locale/hu/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus beállítások">
-<!ENTITY filters.label "Szűrők">
-<!ENTITY filters.accesskey "S">
-<!ENTITY add.label "Szűrő hozzáadása">
-<!ENTITY add.accesskey "h">
-<!ENTITY addsubscription.label "Külső szűrő hozzáadása">
-<!ENTITY addsubscription.accesskey "K">
-<!ENTITY synchsubscriptions.label "Külső szűrők frissítése">
-<!ENTITY synchsubscriptions.accesskey "f">
-<!ENTITY import.label "Szűrők importálása">
-<!ENTITY import.accesskey "i">
-<!ENTITY export.label "Szűrők exportálása">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "Az összes szűrő törlése">
-<!ENTITY clearall.accesskey "t">
-<!ENTITY resethitcounts.label "Találat-számlálók nullázása">
-<!ENTITY resethitcounts.accesskey "n">
-<!ENTITY edit.label "Szerkesztés">
-<!ENTITY edit.accesskey "z">
-<!ENTITY cut.label "Kivágás">
-<!ENTITY cut.accesskey "K">
-<!ENTITY copy.label "Másolás">
-<!ENTITY copy.accesskey "M">
-<!ENTITY paste.label "Beillesztés">
-<!ENTITY paste.accesskey "B">
-<!ENTITY remove.label "Törlés">
-<!ENTITY remove.accesskey "T">
-<!ENTITY menu.find.label "Keresés">
-<!ENTITY menu.find.accesskey "e">
-<!ENTITY menu.findagain.label "Következő keresése">
-<!ENTITY menu.findagain.accesskey "z">
-<!ENTITY view.label "Nézet">
-<!ENTITY view.accesskey "N">
-<!ENTITY sort.label "Rendezés">
-<!ENTITY sort.accesskey "R">
-<!ENTITY sort.none.label "Rendezetlen">
-<!ENTITY sort.none.accesskey "e">
-<!ENTITY sort.ascending.label "A > Z rendezés">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A rendezés">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opciók">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Adblock Plus bekapcsolása">
-<!ENTITY enable.accesskey "a">
-<!ENTITY showintoolbar.label "Megjelenítés az eszköztáron">
-<!ENTITY showintoolbar.accesskey "e">
-<!ENTITY showinstatusbar.label "Megjelenítés az állapotsoron">
-<!ENTITY showinstatusbar.accesskey "l">
-<!ENTITY objecttabs.label "Fülek megjelenítése Java és Flash objektumoknál">
-<!ENTITY objecttabs.accesskey "F">
-<!ENTITY collapse.label "Blokkolt objektumok összecsukása">
-<!ENTITY collapse.accesskey "m">
-<!ENTITY sync.label "Adblock Plus beállítások szinkronizálása">
-<!ENTITY sync.accesskey "z">
-<!ENTITY help.label "Súgó">
-<!ENTITY help.accesskey "g">
-<!ENTITY gettingStarted.label "Első lépések">
-<!ENTITY gettingStarted.accesskey "l">
-<!ENTITY faq.label "Gyakran Ismételt Kérdések (FAQ)">
-<!ENTITY faq.accesskey "G">
-<!ENTITY filterdoc.label "Adblock Plus szűrők írása">
-<!ENTITY filterdoc.accesskey "s">
-<!ENTITY about.label "Az Adblock Plus névjegye">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Az alábbi szűrők meghatározzák, hogy mely címek lesznek blokkolva és melyek lesznek átengedve:">
-<!ENTITY filter.column "Szűrő szabály">
-<!ENTITY filter.accesskey "S">
-<!ENTITY slow.column "Lassú szűrők">
-<!ENTITY slow.accesskey "L">
-<!ENTITY enabled.column "Engedélyezve">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "Találatok">
-<!ENTITY hitcount.accesskey "T">
-<!ENTITY lasthit.column "Utolsó találat">
-<!ENTITY lasthit.accesskey "U">
-<!ENTITY context.edit.label "Szűrő szerkesztése">
-<!ENTITY context.resethitcount.label "Szűrő találatainak nullázása">
-<!ENTITY context.synchsubscription.label "Külső szűrő frissítése">
-<!ENTITY context.editsubscription.label "Külső szűrő módosítása">
-<!ENTITY context.moveup.label "Mozgatás felfelé">
-<!ENTITY context.movedown.label "Mozgatás lefelé">
-<!ENTITY context.movegroupup.label "Csoport mozgatása felfelé">
-<!ENTITY context.movegroupdown.label "Csoport mozgatása lefelé">
-<!ENTITY context.enable.label "Engedélyezés">
-<!ENTITY context.disable.label "Letiltás">
-<!ENTITY apply.label "Alkalmaz">
-<!ENTITY apply.accesskey "A">
-<!ENTITY fennec.subscription.label "Szűrő hozzáadása">
diff --git a/chrome/adblockplus.jar!/locale/hu/sidebar.dtd b/chrome/adblockplus.jar!/locale/hu/sidebar.dtd
index f5a9e53..78d5e16 100644
--- a/chrome/adblockplus.jar!/locale/hu/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/hu/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Szűrő">
 <!ENTITY state.label "Állapot">
 <!ENTITY size.label "Méret">
+<!ENTITY filterSource.label "Szűrő forrása">
 <!ENTITY docDomain.label "Dokumentum forrás">
 <!ENTITY docDomain.thirdParty "(3. fél)">
 <!ENTITY docDomain.firstParty "(első fél)">
diff --git a/chrome/adblockplus.jar!/locale/hu/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/hu/subscriptionSelection.dtd
index f07bb20..cd7d504 100644
--- a/chrome/adblockplus.jar!/locale/hu/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/hu/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Adblock Plus szűrő felvétele">
-<!ENTITY dialog.title.edit "Külső szűrő szerkesztése">
-<!ENTITY description.newInstall "Ahhoz, hogy az Adblock Plus hatékonyabb legyen, adjon hozzá szűrőket. Ezeket a szűrőket más Adblock Plus felhasználók készítettek szabad felhasználás céljából. A régiójának megfelelő szűrők már ki vannak választva.">
 <!ENTITY subscriptionSelector.label "Kérem válassza ki a szűrőt a listából:">
 <!ENTITY viewList.label "Szűrők megtekintése">
 <!ENTITY visitHomepage.label "Honlap meglátogatása">
 <!ENTITY addSubscription.label "Szűrő hozzáadása">
-<!ENTITY saveSubscription.label "Szűrő mentése">
-<!ENTITY other.label "Külső szűrő hozzáadása">
-<!ENTITY other.accesskey "K">
 <!ENTITY list.download.failed "Hiba a szűrők betöltésekor.">
 <!ENTITY list.download.retry "Próbálja újra">
 <!ENTITY list.download.website "Weboldal megtekintése">
 <!ENTITY fromWeb.description "Kérem erősítse meg a szűrő hozzáadását. Módosíthatja a szűrő címét és helyét a hozzáadás előtt.">
-<!ENTITY edit.description "Ha szükséges, módosíthatja a szűrők címét ill. helyét.">
-<!ENTITY external.description "Ez egy külső szűrő. A szűrő frissítését az a kiterjesztés végzi el, amelyik a szűrőt létrehozta.">
 <!ENTITY title.label "Külső szűrő neve:">
 <!ENTITY title.accesskey "n">
 <!ENTITY location.label "Szűrőlista címe:">
 <!ENTITY location.accesskey "c">
-<!ENTITY autodownload.label "Automatikus frissítés">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Ez a szűrő a "?1?" szűrővel együtt használható csak, amely jelenleg nincs a szűrőkhez hozzáadva.">
 <!ENTITY addMain.label "Szűrő hozzáadása: "?1?"">
 <!ENTITY addMain.accesskey "h">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/about.dtd b/chrome/adblockplus.jar!/locale/hy-AM/about.dtd
index 7a35dec..adbf068 100644
--- a/chrome/adblockplus.jar!/locale/hy-AM/about.dtd
+++ b/chrome/adblockplus.jar!/locale/hy-AM/about.dtd
@@ -1,9 +1,6 @@
 <!ENTITY dialog.title "«Adblock Plus»ի մասին">
 <!ENTITY version.title "Տարբերակ.">
-<!ENTITY description "
-	«Adblock Plus»ը թույլ է տալիս Ձեզ որոշել, թե ինչ եք ուզում տեսնել վեբ էջերում:
-	Դուք չպետք է բեռնեք գովազդներ, եթե չեք ուզում, ասե՛ք դա «Adblock Plus»ին:
-">
+<!ENTITY description "nnn	«Adblock Plus»ը թույլ է տալիս Ձեզ որոշել, թե ինչ եք ուզում տեսնել վեբ էջերում:nn	Դուք չպետք է բեռնեք գովազդներ, եթե չեք ուզում, ասե՛ք դա «Adblock Plus»ին:nn">
 <!ENTITY homepage.label "«Adblock Plus»ի կայքը`">
 <!ENTITY author.label "Հեղինակ.">
 <!ENTITY contributors.label "Մասնակիցներ.">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/filters.dtd b/chrome/adblockplus.jar!/locale/hy-AM/filters.dtd
new file mode 100644
index 0000000..d492512
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hy-AM/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Բաժանորդագրվել ֆիլտրերի">
+<!ENTITY addSubscriptionOther.label "Ավելացնել այլ բաժանորդագրություն">
+<!ENTITY subscription.lastDownload.label "Վերջին բեռնում.">
+<!ENTITY subscription.lastDownload.inProgress "Բեռնում...">
+<!ENTITY subscription.lastDownload.unknown "ՉԿԱ">
+<!ENTITY subscription.lastDownload.invalidURL "Անհաջող. Սխալ հասցե">
+<!ENTITY subscription.lastDownload.connectionError "Անհաջող. Բեռնման սխալ">
+<!ENTITY subscription.lastDownload.invalidData "Անհաջող.  Սխալ ֆիլտրերի ցուցակ">
+<!ENTITY subscription.lastDownload.checksumMismatch "Անհաջող.">
+<!ENTITY subscription.lastDownload.success "Հաջող">
+<!ENTITY addFilter.label "Ավելացնել Ֆիլտր">
+<!ENTITY filter.cut.label "Կտրել">
+<!ENTITY filter.copy.label "Կրկնել">
+<!ENTITY filter.paste.label "Տեղադրել">
+<!ENTITY filter.delete.label "Ջնջել">
+<!ENTITY viewMenu.label "Տեսք">
+<!ENTITY filter.column "Ֆիլտր">
+<!ENTITY filter.accesskey "լ">
+<!ENTITY slow.column "Դանդաղ ֆիլտրեր">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "Միացած է">
+<!ENTITY enabled.accesskey "Մ">
+<!ENTITY hitcount.column "Ազդ">
+<!ENTITY hitcount.accesskey "Հ">
+<!ENTITY lasthit.column "Վերջինը">
+<!ENTITY lasthit.accesskey "ջ">
+<!ENTITY sort.label "Դասավորել ">
+<!ENTITY sort.accesskey "Դ">
+<!ENTITY sort.none.label "Անկանոն">
+<!ENTITY sort.none.accesskey "ն">
+<!ENTITY sort.ascending.label "Ա > Ֆ կարգով">
+<!ENTITY sort.ascending.accesskey "Ա">
+<!ENTITY sort.descending.label "Ֆ > Ա կարգով">
+<!ENTITY sort.descending.accesskey "Ֆ">
+<!ENTITY find.label "Փնտրել">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/firstRun.dtd b/chrome/adblockplus.jar!/locale/hy-AM/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/hy-AM/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/global.properties b/chrome/adblockplus.jar!/locale/hy-AM/global.properties
index 8499877..aef9328 100644
--- a/chrome/adblockplus.jar!/locale/hy-AM/global.properties
+++ b/chrome/adblockplus.jar!/locale/hy-AM/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? հատ ` ?2? հատից
 blocked_count_addendum=?1?-ը ?2?-ից
 no_blocking_suggestions=Այս էջում ֆիլտրվվող տարրեր չկան
 whitelisted_page=«Adblock Plus»ը անջատված է այս էջի համար
-whitelist_description=Բացառություններ
-filterlist_description=Արգելման ֆիլտրեր
-invalid_description=Սխալ ֆիլտրեր
-elemhide_description=Տարրերի թաքցման կանոնը
-subscription_description=Ֆիլտրերի բաժանորդագրություն`
-subscription_wrong_version=Այս բաժանորդագրության որոշ ֆիլտրերի համար անհրաժեշտ է Adblock Plus ?1? ճիշտ աշխատելու համար!
-subscription_source=Աղբյուրը`
-subscription_status=Վիճակը`
-subscription_status_autodownload=Ավտոմատ թարմացվել է.
-subscription_status_manualdownload=Թարմացվել է ձեռքով.
-subscription_status_externaldownload=Թարմացվել է դրսից (այլ ընդլայման կողմից)
-subscription_status_lastdownload=Վերջին բեռնում.
-subscription_status_lastdownload_inprogress=Բեռնում...
-subscription_status_lastdownload_unknown=ՉԿԱ
 remove_subscription_warning=Իրո՞ք ուզում եք հեռացնել այս բաժանորդագրությունը:
-import_filters_wrong_version=Ուշադրություն. Այս ցուցակի որոշ ֆիլտրերի համար անհրաժեշտ է Adblock Plus ?1? ճիշտ աշխատելու համար: Դուք պետք է տեղադրեք «Adblock Plus»ի վերջին տարբերակը այս ցուցակը բեռնելուց առաջ:
-import_filters_warning=Ցանկանում եք փոխարինե՞լ եղած ֆիլտրերը, թե՞ ավելացնել սրանք ցուցակի վերջում:
-import_filters_title=Ներմուծել ֆիլտրեր
-export_filters_title=Արտածել ֆիլտրերը
-invalid_filters_file=Սա «Adblock Plus»ի ֆիլտրերի ֆայլ չէ:
-filters_write_error=Սխալ` ֆիլտրերը ֆայլ գրելու ընթացքում: Ստուգեք. գուցե այս ֆայլը պաշտպանված է գրվելուց կամ բաց է այլ ծրագրում:
-clearall_warning=Իրո՞ք ուզում եք հեռացնել ցուցակի բոլոր ֆիլտրերը:
-resethitcounts_warning=Իրո՞ք ուզում եք զրոյացնել բոլոր ֆիլտրերի ազդերի քանակը: Այդ տվյալները կկորչե՛ն:
-resethitcounts_selected_warning=Իրո՞ք ուզում եք զրոյացնել ընտրված ֆիլտրերի ազդերի քանակը: Այդ տվյալները կկորչե՛ն:
 filter_regexp_tooltip=Ներմուծված շաբլոնը կամ ռեգուլյար արտահայտություն , կամ շատ կարճ է ու չի կարող օպտիմիզացվել, այսպիսի շաբլոնների մեծ քանակը կարող է դանդաղեցնել ծրագրի աշխատանքը:
 filter_elemhide_duplicate_id=Տարրը թաքցնելու համար կարելի է տալ միայն մեկ  ID
 filter_elemhide_nocriteria=Տարրը թաքցնելու ոչ մի չափանիշ տրված չէ
-subscription_notAdded_warning=Ֆիլտրի բաժանորդագրում չավելացվեց: Առանց դրանց անհրաժեշտ կլինի ավելացնել ֆիլտրերը ինքնուրույն:
-subscription_notAdded_warning_addendum=Շարունակել?
 subscription_invalid_location=Ֆիլտրերի ցանկի հասցեն կամ սխալ URL է, կամ սխալ ֆայլի անուն:
-synchronize_invalid_url=Անհաջող. Սխալ հասցե
-synchronize_connection_error=Անհաջող. Բեռնման սխալ
-synchronize_invalid_data=Անհաջող.  Սխալ ֆիլտրերի ցուցակ
-synchronize_checksum_mismatch=Անհաջող.
-synchronize_ok=Հաջող
-overwrite=Փոխարինել
-append=Ավելացնել
-new_filter_group_title=Նոր ֆիլտր
 type_label_other=անհայտ
 type_label_script=սկրիպտ
 type_label_image=նկար
@@ -56,15 +23,17 @@ type_label_object=օբյեկտ
 type_label_subdocument=ֆրեյմ
 type_label_document=փասթաթուղթ
 type_label_elemhide=թաքնված
-type_label_xbl=XBL
-type_label_ping=Հղման սեղմում
 type_label_xmlhttprequest=XML կանչ
 type_label_object_subrequest=օբյեկտի կանչ
-type_label_dtd=DTD
 type_label_media=աուդիո/վիդեո
 type_label_font=ֆոնտ
 fennec_status_enabled=Adblock Plus»ը միացված է
 fennec_status_disabled=«Adblock Plus»ը անջատված է
 fennec_status_enabled_site=«Adblock Plus»ը միացված է, բայց արգելված է ?1?-ում
 fennec_status_disabled_site=«Adblock Plus»ը անջատված է ?1?-ում
-sync_engine_title=Adblock Plus data
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/overlay.dtd b/chrome/adblockplus.jar!/locale/hy-AM/overlay.dtd
index 83cc045..b01b694 100644
--- a/chrome/adblockplus.jar!/locale/hy-AM/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/hy-AM/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus. Արգելված տարրեր">
 <!ENTITY context.image.label "Adblock` Ֆիլտրել Նկարը">
 <!ENTITY context.object.label "Adblock` Ֆիլտրել Օբյեկտը">
 <!ENTITY context.frame.label "Adblock` Ֆիլտրել Ֆրեյմը">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Այս էջի ֆիլտրվող տարրերը">
 <!ENTITY sendReport.label "Տեղեկացնել այս էջի պրոբլեմի մասին">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Նախընտրանքներ">
-<!ENTITY settings.accesskey "Ն">
 <!ENTITY opensidebar.label "Բացել ֆիլտրվող տարրերը">
 <!ENTITY opensidebar.accesskey "տ">
 <!ENTITY closesidebar.label "Փակել ֆիլտրվող տարրերը">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Անջատել ?1?-ում">
 <!ENTITY whitelist.page.label "Անջատել միայն այս էջի համար">
 <!ENTITY disable.label "Անջատել ամենուր">
-<!ENTITY recommend.label "Խորհուրդ տալ մեզ Ֆեյսբուքում">
+<!ENTITY options.label "Ընտրանքներ">
+<!ENTITY options.accesskey "Ը">
+<!ENTITY showintoolbar.label "Ցույց տալ գործիքաշարում">
+<!ENTITY showintoolbar.accesskey "գ">
+<!ENTITY showinstatusbar.label "Ցույց տալ վիճակի տողում">
+<!ENTITY showinstatusbar.accesskey "վ">
+<!ENTITY objecttabs.label "Ֆիլտրելու կոճակներ Flash-ի և Java-ի համար">
+<!ENTITY objecttabs.accesskey "կ">
+<!ENTITY sync.label "Սինքրոնացնել Adblock Plus-ի նախընտրանքները">
+<!ENTITY sync.accesskey "Ս">
 <!ENTITY objecttab.title "Ֆիլտրել">
 <!ENTITY objecttab.tooltip "Սեղմել «Adblock Plus»ով այս օբյեկտը ֆիլտրելու համար">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/sendReport.dtd b/chrome/adblockplus.jar!/locale/hy-AM/sendReport.dtd
index cf16436..1a4b983 100644
--- a/chrome/adblockplus.jar!/locale/hy-AM/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/hy-AM/sendReport.dtd
@@ -3,67 +3,46 @@
 <!ENTITY dataCollector.heading "Բարի գալուստ պրոբլեմների հետևման համակարգ">
 <!ENTITY dataCollector.description "Սպասեք մինչև Adblock Plus-ը հավաքի անհրաժեշտ տվյալներ…">
 <!ENTITY typeSelector.heading "Խնդրի ընտրում">
-<!ENTITY typeSelector.description "Այս պատուհանը օգնում է կատարել Adblock Plus-ի խնդրի մասին տեղակացնելու համար 
-	
-	անհրաժեշտ քայլերն. Նախ ընտրեք այս էջում ձեր ունեցած խնդրի տեսակը">
+<!ENTITY typeSelector.description "Այս պատուհանը օգնում է կատարել Adblock Plus-ի խնդրի մասին տեղակացնելու համար nnn	nn	անհրաժեշտ քայլերն. Նախ ընտրեք այս էջում ձեր ունեցած խնդրի տեսակը">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus-ը շատ է արգելում">
 <!ENTITY typeSelector.falsePositive.accesskey "m">
-<!ENTITY typeSelector.falsePositive.description "Ընտրեք այս տարբերակը, եթե այս էջում կորել է կարեւոր բովանդակություն, այն ցուցադրվում է սխալ կամ
-	չի աշխատում: Դուք կարող եք որոշել, թե արդյոք Adblock Plus-ն է պատճառը
-	ժամանակավորապես անջատելով այն:">
+<!ENTITY typeSelector.falsePositive.description "Ընտրեք այս տարբերակը, եթե այս էջում կորել է կարեւոր բովանդակություն, այն ցուցադրվում է սխալ կամnnn	չի աշխատում: Դուք կարող եք որոշել, թե արդյոք Adblock Plus-ն է պատճառըnn	ժամանակավորապես անջատելով այն:">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus-ը չի փակում գովազդը">
 <!ENTITY typeSelector.falseNegative.accesskey "v">
-<!ENTITY typeSelector.falseNegative.description "Ընտրեք այս տարբերակը, եթե գովազդը ցուցադրվում  է, չնայած
-	Adblock Plus միացված է:">
+<!ENTITY typeSelector.falseNegative.description "Ընտրեք այս տարբերակը, եթե գովազդը ցուցադրվում  է, չնայածnnn	Adblock Plus միացված է:">
 <!ENTITY typeSelector.other.label "Այլ խնդիր">
 <!ENTITY typeSelector.other.accesskey "t">
-<!ENTITY typeSelector.other.description "Ընտրեք այս տարբերակը, եթե կասկածում եք, մի պրոբլեմը Adblock Plus-ի հետ է
-	ոչ թե ֆիլտրերի:">
+<!ENTITY typeSelector.other.description "Ընտրեք այս տարբերակը, եթե կասկածում եք, մի պրոբլեմը Adblock Plus-ի հետ էnnn	ոչ թե ֆիլտրերի:">
 <!ENTITY showRecentReports.label "Ցույց տալ վերջին ներկայացված հաղորդագրությունները">
 <!ENTITY recentReports.label "Ձեր վերջին ներկայացված հաղորդագրությունները">
 <!ENTITY recentReports.clear.label "Հեռացնել բոլոր հաղորդագրությունները">
 <!ENTITY recentReports.clear.accesskey "R">
-<!ENTITY issues.description "Adblock Plus-ը հայտնաբերել է պրոբլեմներ ձեր կոնֆիգուրացիայի հետ, որոնք 
-	կարող են խնդրի պատճառ լինել կամ բարդացնի լուծումը:">
-<!ENTITY issues.whitelist.description "Adblock Plus-ը այժմ անջատված է այս էջում: Միացրեք այն եւ վերբեռնեք այս էջը
-	ուղարկելուց առաջ խնդրի լուծումանը աջակցելու համար:">
+<!ENTITY issues.description "Adblock Plus-ը հայտնաբերել է պրոբլեմներ ձեր կոնֆիգուրացիայի հետ, որոնք nnn	կարող են խնդրի պատճառ լինել կամ բարդացնի լուծումը:">
+<!ENTITY issues.whitelist.description "Adblock Plus-ը այժմ անջատված է այս էջում: Միացրեք այն եւ վերբեռնեք այս էջըnnn	ուղարկելուց առաջ խնդրի լուծումանը աջակցելու համար:">
 <!ENTITY issues.whitelist.remove.label "Re-enable Adblock Plus on this page">
 <!ENTITY issues.disabled.description "Adblock Plus-ը անջատված է, այն չի արգելափակում որեւէ բան այս վիճակում:">
 <!ENTITY issues.disabled.enable.label "Enable Adblock Plus">
-<!ENTITY issues.nofilters.description "Adblock Plus-ը չի արգելափակում ոչինչ ընթացիկ էջում: Պրոբլեմը որը եք
-	ամենայն հավանականությամբ, կապված չէ Adblock Plus.">
-<!ENTITY issues.nosubscriptions.description "Դուք, ըստ երեւույթի, բաժանորդագրված չեք որեւէ պատրաստի ֆիլտրերի ցուցակի, որը
-	ավտոմատ կերպով կհեռացնի անցանկալի բովանդակությունը կայքերում:">
+<!ENTITY issues.nofilters.description "Adblock Plus-ը չի արգելափակում ոչինչ ընթացիկ էջում: Պրոբլեմը որը եքnnn	ամենայն հավանականությամբ, կապված չէ Adblock Plus.">
+<!ENTITY issues.nosubscriptions.description "Դուք, ըստ երեւույթի, բաժանորդագրված չեք որեւէ պատրաստի ֆիլտրերի ցուցակի, որըnnn	ավտոմատ կերպով կհեռացնի անցանկալի բովանդակությունը կայքերում:">
 <!ENTITY issues.nosubscriptions.add.label "Ավելացնել ֆիլտրի բաժանորդագրություն">
 <!ENTITY issues.subscriptionCount.description "Դուք բաժանորդագրված եք չափից շատ ֆիլտրերի: Սա կարող է խնդրի պատճառ դառնալ: Մենք չենք ընդունի ձեր բաղոքը խնդրի հետ կապված, քանի որ անհնար է լինելու պարզել դրա աղբյուրը: Խնդրում ենք հեռացնել բաժանորդագրույունները, թողնելով միայն ամենաանհրաժեշտները և ստուգել արդյոք խնդիրը դեռ կա:">
 <!ENTITY issues.openPreferences.label "Բացել ֆիլտրերի ընտրանքները">
-<!ENTITY issues.ownfilters.description "Այս էջին կիրառված որոշ ֆիլտրեր սահմանված են օգտագործողի կողմից: Աանջատեք դրանք
-	այդ ֆիլտրերը, որոնք կարող են առաջացրել պրոբլեմը:">
+<!ENTITY issues.ownfilters.description "Այս էջին կիրառված որոշ ֆիլտրեր սահմանված են օգտագործողի կողմից: Աանջատեք դրանքnnn	այդ ֆիլտրերը, որոնք կարող են առաջացրել պրոբլեմը:">
 <!ENTITY issues.ownfilters.disable.label "Անջատել ֆիլտր(եր)ը">
-<!ENTITY issues.disabledgroups.description "Հետեւյալ ֆիլտրերի բաժանորդագրությունները/խմբերը անջատված են, սակայն նրանք կարող են ազդեցություն
-	
-	ունենալ այս էջում:">
+<!ENTITY issues.disabledgroups.description "Հետեւյալ ֆիլտրերի բաժանորդագրությունները/խմբերը անջատված են, սակայն նրանք կարող են ազդեցությունnnn	nn	ունենալ այս էջում:">
 <!ENTITY issues.disabledgroups.enable.label "Միացնել ֆիլտրերի բաժանորդագրությունը / խումբը">
 <!ENTITY issues.disabledfilters.description "Հետեւյալ ֆիլտրերը անջատված են, սակայն նրանք կարող են ազդեցություն ունենալ  այս էջում:">
 <!ENTITY issues.disabledfilters.enable.label "Միացնել ֆիլտրը">
 <!ENTITY issues.override.label "Կոնֆիգուրացիան ճիշտ է, շարունակել հայտնել խնդրի մասին">
 <!ENTITY issues.override.accesskey "c">
-<!ENTITY issues.change.description "Ձեր կոնֆիգուրացիան փոխվել է: Խնդրում ենք վերբեռնել էջը և թեստավորել փոփոխությունները
-	եւ հայտնել, եթե փոփոխություններից պրոբլեմը չի լուծվում:">
-<!ENTITY typeWarning.description "Դուք ցանկանում եք հայտնել Adblock Plus-ի պրոբլեիմի մասին, ոչ թե կապված ֆիլտրերի հետ:
-	Խնդրում ենք նկատի ունենալ, որ նման հարցերի մասին տեղեկացնելու լավագույն տեղը
-	[link]Adblock Plus ֆորում[/link]-ն է: Դուք պետք է օգտվեք այս միջոցից միայն քննարկումը
-	շարունակելու համար, քանի որ ոչ ոք չի նկատի Ձեր զեկույցը եթե Դուք չտրամադրեք հղում են դեպի այն:
-	Ավտոմատ կերպով գեներացված հղում կտրամադրվի զեկույցը ներկայացնելուց հետո:">
+<!ENTITY issues.change.description "Ձեր կոնֆիգուրացիան փոխվել է: Խնդրում ենք վերբեռնել էջը և թեստավորել փոփոխություններըnnn	եւ հայտնել, եթե փոփոխություններից պրոբլեմը չի լուծվում:">
+<!ENTITY typeWarning.description "Դուք ցանկանում եք հայտնել Adblock Plus-ի պրոբլեիմի մասին, ոչ թե կապված ֆիլտրերի հետ:nnn	Խնդրում ենք նկատի ունենալ, որ նման հարցերի մասին տեղեկացնելու լավագույն տեղըnn	[link]Adblock Plus ֆորում[/link]-ն է: Դուք պետք է օգտվեք այս միջոցից միայն քննարկումըnn	շարունակելու համար, քանի որ ոչ ոք չի նկատի Ձեր զեկույցը եթե Դուք չտրամադրեք հղում են դեպի այն:nn	Ավտոմատ կերպով գեներացված հղում կտրամադրվի զեկույցը ներկայացնելուց հետո:">
 <!ENTITY typeWarning.override.label "Ես հասկանում եմ եւ ուզում եմ այնուամենայնիվ ներկայացնել զեկույցը">
 <!ENTITY typeWarning.override.accesskey "s">
 <!ENTITY reloadButton.label "Վերաբեռնել էջը">
 <!ENTITY reloadButton.accesskey "R">
 <!ENTITY screenshot.heading "Կցել էկրանի նկարը">
-<!ENTITY screenshot.description "Նույն էջը կարող է տարբեր նայվել  տարբեր մարդկանց: Եթե դուք Ձեր զեկույցին կցեք էկրանի նկարը
-	դա կարող է օգնել մեզ հասկանալ խնդիրը: Դուք նույնպես կարող եք հեռացնել անցանկալի բաժիններ,
-	ինչպես նաեւ նշել այն տարածքները, որտեղ երեւում է խնդիրը: Դա անելու համար սեղմեք համապատասխան կոճակը 
-	եւ մկնիկով ընտրեք պատկերի հատվածը:">
+<!ENTITY screenshot.description "Նույն էջը կարող է տարբեր նայվել  տարբեր մարդկանց: Եթե դուք Ձեր զեկույցին կցեք էկրանի նկարըnnn	դա կարող է օգնել մեզ հասկանալ խնդիրը: Դուք նույնպես կարող եք հեռացնել անցանկալի բաժիններ,nn	ինչպես նաեւ նշել այն տարածքները, որտեղ երեւում է խնդիրը: Դա անելու համար սեղմեք համապատասխան կոճակը nn	եւ մկնիկով ընտրեք պատկերի հատվածը:">
 <!ENTITY screenshot.attach.label "Կցել էջի նկարը">
 <!ENTITY screenshot.attach.accesskey "t">
 <!ENTITY screenshot.mark.label "Նշել խնդրի տեղը">
@@ -73,11 +52,7 @@
 <!ENTITY screenshot.undo.label "Հետքայլ">
 <!ENTITY screenshot.undo.accesskey "U">
 <!ENTITY commentPage.heading "Մեկնաբանել">
-<!ENTITY commentPage.description "
-	Տեքստային դաշտի ստորեւ թույլ է տալիս մուտքագրել մեկնաբանություն մեզ օգնելու համար՝ հասկանալ խնդիրը"
-	Այս քայլը պարտադիր չէ, սակայն խորհուրդ է տրվում, եթե Խնդիրը ակնհայտ չէ:
-	Դուք կարող եք նաեւ վերանայել զեկույցի տվյալները մինչ դրա ուղարկումը:
-">
+<!ENTITY commentPage.description "nnn	Տեքստային դաշտի ստորեւ թույլ է տալիս մուտքագրել մեկնաբանություն մեզ օգնելու համար՝ հասկանալ խնդիրը"nn	Այս քայլը պարտադիր չէ, սակայն խորհուրդ է տրվում, եթե Խնդիրը ակնհայտ չէ:nn	Դուք կարող եք նաեւ վերանայել զեկույցի տվյալները մինչ դրա ուղարկումը:nn">
 <!ENTITY comment.label "Մեկնաբանություն (պարտադիր չէ)՝">
 <!ENTITY comment.accesskey "C">
 <!ENTITY comment.lengthWarning "Մեկնաբանության երկարությունը գերազանցում է 1000 սիմվոլ: Միայն առաջին 1000 սիմվոլը կուղարկվի:">
@@ -94,11 +69,7 @@
 <!ENTITY sendPage.waitMessage "Խնդրում ենք սպասել, մինչ Adblock Plus-ը, ուղարկի Ձեր զեկույցը:">
 <!ENTITY sendPage.confirmation "Ձեր զեկույցը պահպանվել է: Դուք կարող եք մուտք գործել այն հետեւյալ հասցեով՝">
 <!ENTITY sendPage.knownIssue "Ձեր հաղորդած հարցը հնարավոր է արդեն հայտնի է: Լրացուցիչ տեղեկություններ՝">
-<!ENTITY sendPage.errorMessage "
-	Զեկույցի ուղարկման փորձը ձախողվել է հետևյալ սխալի կոդով՝ "?1?": 
-	Ստուգեք միացումը ինտերնետին եւ կրկնեք: Եթե խնդիրը չկարգավորվի, 
-	խնդրում ենք դիմել [link]Adblock Plus Ֆորում[/link] աջակցության համար::
-">
+<!ENTITY sendPage.errorMessage "nnn	Զեկույցի ուղարկման փորձը ձախողվել է հետևյալ սխալի կոդով՝ "?1?": nn	Ստուգեք միացումը ինտերնետին եւ կրկնեք: Եթե խնդիրը չկարգավորվի, nn	խնդրում ենք դիմել [link]Adblock Plus Ֆորում[/link] աջակցության համար::nn">
 <!ENTITY sendPage.retry.label "Նորից ուղարկել">
 <!ENTITY copyLink.label "Կրկնակել զեկույցի հղումը">
 <!ENTITY copyLink.accesskey "C">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/settings.dtd b/chrome/adblockplus.jar!/locale/hy-AM/settings.dtd
deleted file mode 100644
index c2a6a24..0000000
--- a/chrome/adblockplus.jar!/locale/hy-AM/settings.dtd
+++ /dev/null
@@ -1,93 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus - Նախընտրանքներ">
-<!ENTITY filters.label "Ֆիլտրեր">
-<!ENTITY filters.accesskey "տ">
-<!ENTITY add.label "Ավելացնել Ֆիլտր">
-<!ENTITY add.accesskey "վ">
-<!ENTITY addsubscription.label "Բաժանորդագրվել ֆիլտրերի">
-<!ENTITY addsubscription.accesskey "ժ">
-<!ENTITY synchsubscriptions.label "Թարմացնել բաժանորդագրությունները">
-<!ENTITY synchsubscriptions.accesskey "Թ">
-<!ENTITY import.label "Ներմուծել ֆիլտրեր">
-<!ENTITY import.accesskey "Ն">
-<!ENTITY export.label "Արտածել ֆիլտրերը">
-<!ENTITY export.accesskey "ծ">
-<!ENTITY clearall.label "Ջնջել բոլոր ֆիլտրերը">
-<!ENTITY clearall.accesskey "բ">
-<!ENTITY resethitcounts.label "Զրոյացնել ազդերի քանակը">
-<!ENTITY resethitcounts.accesskey "Զ">
-<!ENTITY edit.label "Խմբագրում">
-<!ENTITY edit.accesskey "Խ">
-<!ENTITY cut.label "Կտրել">
-<!ENTITY cut.accesskey "Տ">
-<!ENTITY copy.label "Կրկնել">
-<!ENTITY copy.accesskey "Կ">
-<!ENTITY paste.label "Տեղադրել">
-<!ENTITY paste.accesskey "ղ">
-<!ENTITY remove.label "Ջնջել">
-<!ENTITY remove.accesskey "Ջ">
-<!ENTITY menu.find.label "Փնտրել">
-<!ENTITY menu.find.accesskey "Փ">
-<!ENTITY menu.findagain.label "Նորից Փնտրել">
-<!ENTITY menu.findagain.accesskey "ե">
-<!ENTITY view.label "Տեսք">
-<!ENTITY view.accesskey "ե">
-<!ENTITY sort.label "Դասավորել ">
-<!ENTITY sort.accesskey "Դ">
-<!ENTITY sort.none.label "Անկանոն">
-<!ENTITY sort.none.accesskey "ն">
-<!ENTITY sort.ascending.label "Ա > Ֆ կարգով">
-<!ENTITY sort.ascending.accesskey "Ա">
-<!ENTITY sort.descending.label "Ֆ > Ա կարգով">
-<!ENTITY sort.descending.accesskey "Ֆ">
-<!ENTITY options.label "Ընտրանքներ">
-<!ENTITY options.accesskey "Ը">
-<!ENTITY enable.label "Միացնել «Adblock Plus»ը">
-<!ENTITY enable.accesskey "Մ">
-<!ENTITY showintoolbar.label "Ցույց տալ գործիքաշարում">
-<!ENTITY showintoolbar.accesskey "գ">
-<!ENTITY showinstatusbar.label "Ցույց տալ վիճակի տողում">
-<!ENTITY showinstatusbar.accesskey "վ">
-<!ENTITY objecttabs.label "Ֆիլտրելու կոճակներ Flash-ի և Java-ի համար">
-<!ENTITY objecttabs.accesskey "կ">
-<!ENTITY collapse.label "Թաքցնել արգելված տարրերը">
-<!ENTITY collapse.accesskey "ք">
-<!ENTITY sync.label "Սինքրոնացնել Adblock Plus-ի նախընտրանքները">
-<!ENTITY sync.accesskey "Ս">
-<!ENTITY help.label "Օգնություն">
-<!ENTITY help.accesskey "Օ">
-<!ENTITY gettingStarted.label "Սկսել">
-<!ENTITY gettingStarted.accesskey "ե">
-<!ENTITY faq.label "Հաճախակի Տրվող Հարցեր">
-<!ENTITY faq.accesskey "Հ">
-<!ENTITY filterdoc.label "Ինչպե՞ս գրել ֆիլտրեր">
-<!ENTITY filterdoc.accesskey "չ">
-<!ENTITY about.label "«Adblock Plus»ի մասին">
-<!ENTITY about.accesskey "ի">
-<!ENTITY description "
-		Ավելացրեք հասցեն, որը ուզում եք ֆիլտրել:
-		Ընդհանուր ազդեցության ֆիլտրերի համար կարելի է օգտագործել * ցանկացած սիմվոլների հաջորդականության փոխարեն: 
-		Փորձառու օգտագործողները կարող են օգտագործել ռեգուլյար արտահայտություններ օրինակ. /banner\d+\.gif$/:
-">
-<!ENTITY filter.column "Ֆիլտր">
-<!ENTITY filter.accesskey "լ">
-<!ENTITY slow.column "Դանդաղ ֆիլտրեր">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "Միացած է">
-<!ENTITY enabled.accesskey "Մ">
-<!ENTITY hitcount.column "Ազդ">
-<!ENTITY hitcount.accesskey "Հ">
-<!ENTITY lasthit.column "Վերջինը">
-<!ENTITY lasthit.accesskey "ջ">
-<!ENTITY context.edit.label "Խմբագրել Ֆիլտրը">
-<!ENTITY context.resethitcount.label "Զրոյացնել ֆիլտրի ազդերի քանակը">
-<!ENTITY context.synchsubscription.label "Թարմացնել բաժանորդագրությունները">
-<!ENTITY context.editsubscription.label "Խմբագրել բաժանորդագրությունը">
-<!ENTITY context.moveup.label "Բարձրացնել">
-<!ENTITY context.movedown.label "Իջեցնել">
-<!ENTITY context.movegroupup.label "Բարձրացնել Խումբը">
-<!ENTITY context.movegroupdown.label "Իջեցնել Խումբը">
-<!ENTITY context.enable.label "Միացնել">
-<!ENTITY context.disable.label "Անջատել">
-<!ENTITY apply.label "Ընդունել">
-<!ENTITY apply.accesskey "դ">
-<!ENTITY fennec.subscription.label "Բաժանորդագրվել ֆիլտրերի">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/sidebar.dtd b/chrome/adblockplus.jar!/locale/hy-AM/sidebar.dtd
index 5e5fe96..d2c380a 100644
--- a/chrome/adblockplus.jar!/locale/hy-AM/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/hy-AM/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Կրկնել տարրի հասցեն">
 <!ENTITY context.copyFilter.label "Կրկնակել ֆիլտրը">
 <!ENTITY context.selectAll.label "Լրիվ Ընտրել">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/hy-AM/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/hy-AM/subscriptionSelection.dtd
index b1e9cdf..616c550 100644
--- a/chrome/adblockplus.jar!/locale/hy-AM/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/hy-AM/subscriptionSelection.dtd
@@ -1,29 +1,16 @@
 <!ENTITY dialog.title "Բարի գալուստ Adblock Plus">
-<!ENTITY dialog.title.edit "Խմբագրել բաժանորդագրությունները">
-<!ENTITY description.newInstall "
-	«Adblock Plus»-ը կլինի շատ էֆֆեկտիվ, եթե դուք ավելացնեք ֆիլտրերի բաժանարդոգրություն:
-	Ֆիլտրերի բաժանարդոգրությունները տրամադրվում են «Adblock Plus»-ի օգտագործողների կողմից
-	անվճար: Ձեր լեզվին ամենահամապատասխան բաժանարդոգրությունը արդեն ընտրված է:
-">
 <!ENTITY subscriptionSelector.label "Ընտրեք ֆիլտրի բաժանարդոգրություն ցուցակից`">
 <!ENTITY viewList.label "Նայել ֆիլտրերը">
 <!ENTITY visitHomepage.label "Այցելել կայք">
 <!ENTITY addSubscription.label "Ավելացնել բաժանորդագրություն">
-<!ENTITY saveSubscription.label "Պահպանել բաժանորդագրությունը">
-<!ENTITY other.label "Ավելացնել այլ բաժանորդագրություն">
-<!ENTITY other.accesskey "Ա">
 <!ENTITY list.download.failed "«Adblock Plus»-ը չկարողացավ բեռնել ֆիլտրերի բաժանարդոգրությունների ցուցակը">
 <!ENTITY list.download.retry "Կրկին Փորձել">
 <!ENTITY list.download.website "Այցելել կայք">
 <!ENTITY fromWeb.description "Հաստատեք որ ցանկանում եք ավելացնել բաժանորդագրություն: Դուք կարող եք փողել բաժանորդագրության վերնագիրը կամ հասցեն միչև ավելացնելը:">
-<!ENTITY edit.description "Դուք կարող եք փողել բաժանորդագրության վերնագիրը կամ հասցեն ըստ անհրաժեշտության">
-<!ENTITY external.description "Սա արտաքին ֆիլտրի բաժանարդոգրություն է. այն թարմացնելու է ավելացումը(add-on) որը ստեղծել է այն:">
 <!ENTITY title.label "Բաժանորդագրության ավանումը`">
 <!ENTITY title.accesskey "ա">
 <!ENTITY location.label "Ֆիլտրերի հասցեն`">
 <!ENTITY location.accesskey "հ">
-<!ENTITY autodownload.label "Ավտոմատ թարմացում">
-<!ENTITY autodownload.accesskey "թ">
 <!ENTITY supplementMessage "Այս ֆիլտրի բաժանարդոգրությունը հաճախ օգտագործվում է "?1?"-ի հետ, որը դուք չեք օգտագործում:">
 <!ENTITY addMain.label "Ավելացնել բաժանորդագրություն նաև "?1?" ֆիլտրին">
 <!ENTITY addMain.accesskey "ն">
diff --git a/chrome/adblockplus.jar!/locale/is/about.dtd b/chrome/adblockplus.jar!/locale/is/about.dtd
index 6274c8c..882640b 100644
--- a/chrome/adblockplus.jar!/locale/is/about.dtd
+++ b/chrome/adblockplus.jar!/locale/is/about.dtd
@@ -1,10 +1,11 @@
 <!ENTITY dialog.title "Um Adblock Plus">
 <!ENTITY version.title "Útgáfa">
-<!ENTITY description "Adblock Plus gerir þér kleyft að ákveða hvað þú vilt ekki sjá á vefnum.
+<!ENTITY description "
+Adblock Plus gerir þér kleyft að ákveða hvað þú vilt ekki sjá á vefnum.
 	Þú þarft ekki framar að niðurhala auglýsingum og auglýsingaborðum, ef þú
-	vilt það ekki - notaðu Adblock Plus!">
+	vilt það ekki - fjarlægðu þær með Adblock Plus!">
 <!ENTITY homepage.label "Adblock Plus heimasíða:">
 <!ENTITY author.label "Höfundur:">
 <!ENTITY contributors.label "Þátttakendur:">
-<!ENTITY subscriptionAuthors.label "Sía eftir áskriftahöfundar:">
+<!ENTITY subscriptionAuthors.label "Síuáskrift eftir höfund:">
 <!ENTITY translators.label "Þýðendur:">
diff --git a/chrome/adblockplus.jar!/locale/is/filters.dtd b/chrome/adblockplus.jar!/locale/is/filters.dtd
new file mode 100644
index 0000000..8e8b93d
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/is/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Adblock Plus síu stillingar">
+<!ENTITY subscriptions.tab.label "Síu áskriftir">
+<!ENTITY filters.tab.label "Sérsniðnar síur">
+<!ENTITY addSubscription.label "Bæta við síuáskrift">
+<!ENTITY addSubscription.accesskey "B">
+<!ENTITY addSubscriptionAdd.label "Bæta við">
+<!ENTITY addSubscriptionCancel.label "Hætta við">
+<!ENTITY addSubscriptionOther.label "Bæta við öðruvísi áskrift">
+<!ENTITY noSubscriptions.text "
+	Þú hefur ekki ennþá bætt við áskrift að síu. Adblock Plus virkar ekki
+	án þess að vera með síur, notaðu "Bæta við síuáskrift" til
+	að bæta við síuáskrift.
+">
+<!ENTITY subscription.homepage.label "Heimasíða">
+<!ENTITY subscription.external.label "Uppfært af annarri viðbót">
+<!ENTITY subscription.source.label "Sía lista">
+<!ENTITY subscription.enabled.label "Virkt">
+<!ENTITY subscription.lastDownload.label "Seinasta niðurhal:">
+<!ENTITY subscription.lastDownload.inProgress "Hleður...">
+<!ENTITY subscription.lastDownload.unknown "Óþekkt">
+<!ENTITY subscription.lastDownload.invalidURL "Mistókst, ekki gilt netfang">
+<!ENTITY subscription.lastDownload.connectionError "Mistókst, gat ekki niðurhalað">
+<!ENTITY subscription.lastDownload.invalidData "Mistókst, ekki gildur síulisti">
+<!ENTITY subscription.lastDownload.checksumMismatch "Mistókst, prófsumma stemmir ekki">
+<!ENTITY subscription.lastDownload.success "Tókst">
+<!ENTITY subscription.minVersion.warning "Þessi síuáskrift þarfnast nýrri útáfu af Adblock Plus, þú ættir að uppfæra í nýjustu útgáfu.">
+<!ENTITY subscription.disabledFilters.warning "Sumar síur í þessari áskrift eru óvirkar.">
+<!ENTITY subscription.disabledFilters.enable "Virkja óvirkar síur">
+<!ENTITY subscription.actions.label "Aðgerðir">
+<!ENTITY subscription.update.label "Uppfæra síur">
+<!ENTITY subscription.editTitle.label "Breyta titli">
+<!ENTITY subscription.delete.label "Eyða">
+<!ENTITY subscription.showHideFilters.label "Sýna/fela síur">
+<!ENTITY subscription.moveUp.label "Færa upp">
+<!ENTITY subscription.moveDown.label "Færa niður">
+<!ENTITY acceptableAds.label "Leyfa auglýsingar sem eru ekki uppáþrengjandi">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Lesa meira">
+<!ENTITY addGroup.label "Bæta við síuhóp">
+<!ENTITY addGroup.accesskey "h">
+<!ENTITY noFilters.text "
+	Þú ert ekki ennþá með neina sérsniðna síu.
+">
+<!ENTITY addFilter.label "Bæta við síu">
+<!ENTITY addFilter.accesskey "u">
+<!ENTITY filter.actions.label "Síu aðgerðir">
+<!ENTITY filter.edit.label "Breyta">
+<!ENTITY filter.cut.label "Klippa">
+<!ENTITY filter.copy.label "Afrita">
+<!ENTITY filter.paste.label "Líma">
+<!ENTITY filter.delete.label "Eyða">
+<!ENTITY filter.selectAll.label "Velja allt">
+<!ENTITY filter.resetHitCounts.label "Endurstilla síu teljara">
+<!ENTITY filter.moveUp.label "Færa upp">
+<!ENTITY filter.moveDown.label "Færa niður">
+<!ENTITY viewMenu.label "Skoða">
+<!ENTITY filter.column "Síu regla">
+<!ENTITY filter.accesskey "g">
+<!ENTITY slow.column "Hægar síur">
+<!ENTITY slow.accesskey "æ">
+<!ENTITY enabled.column "Virkt">
+<!ENTITY enabled.accesskey "V">
+<!ENTITY hitcount.column "Notkun">
+<!ENTITY hitcount.accesskey "N">
+<!ENTITY lasthit.column "Seinast heimsótt">
+<!ENTITY lasthit.accesskey "h">
+<!ENTITY sort.label "Raða eftir">
+<!ENTITY sort.accesskey "f">
+<!ENTITY sort.none.label "Óraðað">
+<!ENTITY sort.none.accesskey "r">
+<!ENTITY sort.ascending.label "A > Ö röðun">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ö > A röðun">
+<!ENTITY sort.descending.accesskey "Ö">
+<!ENTITY noGroupSelected.text "Þú verður að velja síuhóp áður en hægt er að birta síur.">
+<!ENTITY noFiltersInGroup.text "Valinn hópur er tómur">
+<!ENTITY filters.remove.warning "Viltu örugglega fjarlægja alla valdar síur?">
+<!ENTITY backupButton.label "Afrita og endurheimta">
+<!ENTITY backupButton.accesskey "A">
+<!ENTITY backup.label "Búa til nýtt afrit">
+<!ENTITY restore.default.label "Endurheimta afrit frá ?1?">
+<!ENTITY restore.own.label "Endurheimta eigið afrit">
+<!ENTITY backup.complete.title "Allar síur og áskriftir">
+<!ENTITY backup.custom.title "Aðeins sérsniðnar síur">
+<!ENTITY backup.error "Upp kom villa við að skrifa síur í skránna. Gakktu úr skugga um að skráin sé ekki ritvarin eða í notkun af öðru forriti.">
+<!ENTITY restore.error "Ekki tókst að lesa skráargögn, kannski er skráin ekki Adblock Plus afritunarskrá?">
+<!ENTITY restore.complete.warning "Allar síustillingar verða yfirskrifaðar af skrá. Viltu halda áfram?">
+<!ENTITY restore.custom.warning "Allar sérsniðnar síur verða yfirskrifaðar af skrá. Viltu halda áfram?">
+<!ENTITY restore.minVersion.warning "Aðvörun: skráin var búin til að nýrri útgáfu af Adblock Plus. Þú ættir að uppfæra í nýjustu útgáfu af Adblock Plus áður en þú endurheimtir þessa skrá.">
+<!ENTITY find.label "Leita">
+<!ENTITY find.accesskey "L">
+<!ENTITY close.label "Loka">
diff --git a/chrome/adblockplus.jar!/locale/is/firstRun.dtd b/chrome/adblockplus.jar!/locale/is/firstRun.dtd
new file mode 100644
index 0000000..12b2063
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/is/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus uppsetningu lokið">
+<!ENTITY confirmation "
+	Takk fyrir að setja inn Adblock Plus. Lokað verður á auglýsingar í framtíðinni.
+	Njóttu vel!">
+<!ENTITY advancedSection "Ítarlegar stillingar">
+<!ENTITY listSelection1 "
+	Eftirfarandi síulisti er stilltur þannig að hann loki á auglýsingar:
+">
+<!ENTITY noList "Enginn síulisti">
+<!ENTITY visitHomepage.label "Heimsækja heimasíðu lista">
+<!ENTITY acceptableAds "
+	Búið er að stilla Adblock Plus þannig að það leyfi auglýsingar sem eru ekki uppáþrengjandi.
+">
+<!ENTITY readMore.label "Lesa meira um þetta">
+<!ENTITY listSelection2 "
+	Þú getur breytt þessari stillingu hvenær sem er í [link]Síu stillingum[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/is/global.properties b/chrome/adblockplus.jar!/locale/is/global.properties
index c09e48d..5fe61fb 100644
--- a/chrome/adblockplus.jar!/locale/is/global.properties
+++ b/chrome/adblockplus.jar!/locale/is/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? af ?2?
 blocked_count_addendum=(einnig á hvítlista: ?1?, falið: ?2?)
 no_blocking_suggestions=Engir lokaðir hlutir á núverandi síðu
 whitelisted_page=Búið er að gera Adblock Plus óvirkt fyrir núverandi síðu
-whitelist_description=Undantekningareglur
-filterlist_description=Auglýsingareglur
-invalid_description=Ógildar síur
-elemhide_description=Reglur til að fela hluti
-subscription_description=Síu áskrift:
-subscription_wrong_version=Sumar síur í þessari áskrift þarfnast Adblock Plus ?1? til að virka almennilega.
-subscription_source=Uppruni:
-subscription_status=Staða:
-subscription_status_autodownload=Sjálfvirk uppfærsla
-subscription_status_manualdownload=Uppfært handvirkt
-subscription_status_externaldownload=Uppfært frá utanaðkomandi (önnur viðbót)
-subscription_status_lastdownload=Seinasta niðurhal:
-subscription_status_lastdownload_inprogress=Hleður...
-subscription_status_lastdownload_unknown=Óþekkt
+newGroup_title=Ný síu regla
+whitelistGroup_title=Undantekningarreglur
+blockingGroup_title=Lokunarreglur
+elemhideGroup_title=Felureglur
 remove_subscription_warning=Viltu fjarlægja þessa áskrift?
-import_filters_wrong_version=Aðvörun: sumar síur í þessum lista þarfnast Adblock Plus ?1? til að virka almennilega. Þú ættir að uppfæra í nýjustu útgáfuna af Adblock Plus áður en þú flytur inn þennan lista.
-import_filters_warning=Viltu skrifa yfir núverandi síur eða bæta nýju síunum við endann á núverandi lista?
-import_filters_title=Flytja inn síur
-export_filters_title=Flytja út síur
-invalid_filters_file=Ekki gild Adblock Plus síuskrá.
-filters_write_error=Villa kom upp við að skrifa síur í skránna. Athugaðu hvort skráin sé ekki skrifvarinn eða sé í notkun af öðru forriti.
-clearall_warning=Viltu fjarlægja allar síur frá listanum?
-resethitcounts_warning=Viltu örugglega endurstilla talningar fyrir síur á núll? Athugið: Ekki er hægt að afturkalla þessa aðgerð.
-resethitcounts_selected_warning=Viltu örugglega endurstilla talningar fyrir valdar síur á núll? Athugið: Ekki er hægt að afturkalla þessa aðgerð.
+clearStats_warning=Þetta mun endurstilla alla teljara á síunotkun og hætta að telja síunotkun. Viltu halda áfram?
 filter_regexp_tooltip=Sían er annaðhvort regluleg segð eða of stutt til að hægt sé að nota. Of margar af svona síum gætu hægt á vöfrun.
 filter_elemhide_duplicate_id=Aðeins er hægt að skilgreina eitt auðkenni fyrir hlut sem á að fela
 filter_elemhide_nocriteria=Engin viðmiðun skilgreind til þess að bera kennsl á hlut til að fela
-subscription_notAdded_warning=Þú bættir ekki við síu áskrift. Án síu áskriftar verðurðu að bæta við við Adblock síum handvirkt.
-subscription_notAdded_warning_addendum=Viltu halda áfram?
 subscription_invalid_location=Staðsetning síu er ekki gilt URL eða gilt skráarnafn.
-synchronize_invalid_url=Mistókst, ekki gilt netfang
-synchronize_connection_error=Mistókst, gat ekki niðurhalað
-synchronize_invalid_data=Mistókst, ekki gildur síulisti
-synchronize_checksum_mismatch=Mistókst, prófsumma stemmir ekki
-synchronize_ok=Tókst
-overwrite=Yfirskrifa
-append=Bæta við
-new_filter_group_title=Ný sía
 type_label_other=annað
 type_label_script=skrifta
 type_label_image=mynd
@@ -56,15 +28,12 @@ type_label_object=hlutur
 type_label_subdocument=rammi
 type_label_document=skjal
 type_label_elemhide=falið
-type_label_xbl=XBL tenging
-type_label_ping=tengla ping
+type_label_popup=sprettigluggi
 type_label_xmlhttprequest=XML beiðni
 type_label_object_subrequest=undiraðgerð hlutar
-type_label_dtd=DTD
 type_label_media=hljóð/mynd
 type_label_font=leturgerð
 fennec_status_enabled=Adblock Plus er virkt.
 fennec_status_disabled=Adblock Plus er óvirkt.
 fennec_status_enabled_site=Adblock Plus er virkt fyrir ?1?.
 fennec_status_disabled_site=Adblock Plus er óvirkt fyrir ?1?.
-sync_engine_title=Adblock Plus gögn
diff --git a/chrome/adblockplus.jar!/locale/is/overlay.dtd b/chrome/adblockplus.jar!/locale/is/overlay.dtd
index c769be1..dbc1719 100644
--- a/chrome/adblockplus.jar!/locale/is/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/is/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus stillingar">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Lokaðir hlutir">
 <!ENTITY context.image.label "Adblock Plus: Loka auglýsingamynd">
 <!ENTITY context.object.label "Adblock Plus: Loka auglýsingahlut">
 <!ENTITY context.frame.label "Adblock Plus: Loka auglýsingaramma">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Hlutir á núverandi síðu sem hægt er að loka á">
 <!ENTITY sendReport.label "Tilkynna vandamál á þessari síðu">
 <!ENTITY sendReport.accesskey "r">
-<!ENTITY settings.label "Stillingar">
-<!ENTITY settings.accesskey "S">
+<!ENTITY filters.label "Síu stillingar">
+<!ENTITY filters.accesskey "S">
 <!ENTITY opensidebar.label "Skoða hluti">
 <!ENTITY opensidebar.accesskey "l">
 <!ENTITY closesidebar.label "Loka hlutum">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Gera óvirkt á ?1?">
 <!ENTITY whitelist.page.label "Gera óvirkt aðeins á þessari síðu">
 <!ENTITY disable.label "Slökkva á allstaðar">
-<!ENTITY recommend.label "Mæla með á Facebook">
+<!ENTITY options.label "Valkostir">
+<!ENTITY options.accesskey "V">
+<!ENTITY contribute.label "Taka þátt í Adblock Plus">
+<!ENTITY showintoolbar.label "Sýna í tækjaslá">
+<!ENTITY showintoolbar.accesskey "t">
+<!ENTITY showinstatusbar.label "Sýna í stöðuslá">
+<!ENTITY showinstatusbar.accesskey "S">
+<!ENTITY showinaddonbar.label "Sýna í viðbótarslá">
+<!ENTITY showinaddonbar.accesskey "t">
+<!ENTITY objecttabs.label "Sýna flipa fyrir Flass og Java">
+<!ENTITY objecttabs.accesskey "f">
+<!ENTITY hideplaceholders.label "Fela staðgengitákn á lokuðum einindum">
+<!ENTITY hideplaceholders.accesskey "i">
+<!ENTITY counthits.label "Telja síu notkun">
+<!ENTITY counthits.accesskey "n">
+<!ENTITY sync.label "Samstilla Adblock Plus stillingar">
+<!ENTITY sync.accesskey "m">
 <!ENTITY objecttab.title "Loka á">
 <!ENTITY objecttab.tooltip "Smelltu hér til að loka á þennan hlut með Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/is/sendReport.dtd b/chrome/adblockplus.jar!/locale/is/sendReport.dtd
index afe91eb..69afe56 100644
--- a/chrome/adblockplus.jar!/locale/is/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/is/sendReport.dtd
@@ -1,19 +1,23 @@
 <!ENTITY wizard.title "Höfundur tilkynningar">
 <!ENTITY privacyPolicy.label "Persónuverndarstefna">
-<!ENTITY dataCollector.heading "Velkominn í skýrslu tilkynningu">
+<!ENTITY dataCollector.heading "Velkominn í tilkynna vandamál">
 <!ENTITY dataCollector.description "Bíddu aðeins á meðan Adblock Plus tekur saman nauðsynleg gögn.">
 <!ENTITY typeSelector.heading "Veldu tegund skýrslu">
-<!ENTITY typeSelector.description "Þessi gluggi hjálpar þér í gegnum þau skref sem þarf til að tilkynna Adblock Plus vandamálaskýrslu. Veldu fyrst, hverskonar tegund af vandamáli þú ert að lenda í á þessari síðu:">
+<!ENTITY typeSelector.description "Þessi gluggi hjálpar þér í gegnum þau skref sem þarf til að tilkynna Adblock Plus vandamála. Veldu fyrst, hverskonar tegund af vandamáli þú ert að lenda í á þessari síðu:">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus lokar á of mikið">
 <!ENTITY typeSelector.falsePositive.accesskey "m">
-<!ENTITY typeSelector.falsePositive.description "Veldu þennan möguleika ef á síðuna vantar mikilvæg gögn, birtist rangt eða virkar ekki eðlilega. Þú getur gengið úr skugga um hvort Adblock Plus sé vandamálið
-með því að gera það óvirkt tímabundið.">
+<!ENTITY typeSelector.falsePositive.description "
+ Veldu þennan möguleika ef á síðuna vantar mikilvæg gögn, birtist rangt eða virkar ekki eðlilega. Þú getur gengið úr skugga um hvort Adblock Plus sé vandamálið
+ með því að gera það óvirkt tímabundið.
+">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus lokar ekki á auglýsingu">
 <!ENTITY typeSelector.falseNegative.accesskey "e">
 <!ENTITY typeSelector.falseNegative.description "Veldu þennan möguleika ef auglýsing birtist jafnvel þótt Adblock Plus sé virkt.">
 <!ENTITY typeSelector.other.label "Annað vandamál">
 <!ENTITY typeSelector.other.accesskey "n">
-<!ENTITY typeSelector.other.description "Veldu þennan möguleika ef þú heldur að vandamálið sé hjá Adblock Plus sjálfu frekar en í síunum.">
+<!ENTITY typeSelector.other.description "
+ Veldu þennan möguleika ef þú heldur að vandamálið sé hjá Adblock Plus sjálfu frekar en í síu.
+">
 <!ENTITY showRecentReports.label "Sýna nýlegar sendar skýrslur">
 <!ENTITY recentReports.label "Nýlegar sendar skýrslur">
 <!ENTITY recentReports.clear.label "Fjarlægja allar skýrslur">
@@ -26,25 +30,38 @@ með því að gera það óvirkt tímabundið.">
 <!ENTITY issues.nofilters.description "Adblock Plus er ekki að loka á neitt á núverandi síðu. Vandamálið sem þú ert að	sjá er líklega ótengt Adblock Plus.">
 <!ENTITY issues.nosubscriptions.description "Þú ert ekki áskrifandi að neinum af forskilgreindum síulistum sem fjarlægja sjálfvirkt óæskilegt efni frá vefsvæðum.">
 <!ENTITY issues.nosubscriptions.add.label "Bæta við síuáskrift">
-<!ENTITY issues.subscriptionCount.description "Svo virðist sem þú sért áskrifandi að of mörgum síuáskriftum. Ekki er mælt með þessu þar sem líklegt er að vandamál verði of mörg. Ekki er heldur hægt að taka á móti tilkynningu um villu vegna þess að ekki er augljóst hvaða síu þarf að laga. Vinsamlega fjarlægðu allar síur nema þær allra nauðsynlegustu og prófaðu aftur hvort vandamálið sé enn til staðar.">
+<!ENTITY issues.subscriptionCount.description "
+ Svo virðist sem þú sért áskrifandi að of mörgum síuáskriftum. Ekki er mælt með þessu þar sem líklegt er að vandamál verði of mörg. Ekki er heldur hægt að taka á móti tilkynningu um villu vegna þess að ekki er augljóst hvaða síu þarf að laga. Vinsamlega fjarlægðu allar síur nema þær allra nauðsynlegustu og prófaðu aftur hvort vandamálið sé enn til staðar.
+">
 <!ENTITY issues.openPreferences.label "Opna síuvalkosti">
-<!ENTITY issues.ownfilters.description "Sumar af síunum sem eru virkar á þessari síðu eru stilltar af notanda. Vinsamlega gerðu þær síur óvirkar sem hugsanlega gætu hafa valdið vandræðunum:">
+<!ENTITY issues.ownfilters.description "
+ Sumar af síunum sem eru virkar á þessari síðu eru stilltar af notanda. Vinsamlega gerðu þær síur óvirkar sem hugsanlega gætu hafa valdið vandræðunum:
+">
 <!ENTITY issues.ownfilters.disable.label "Slökkva á síu">
-<!ENTITY issues.disabledgroups.description "Eftirfarandi síuáskriftir / síuhópar eru óvirkar, samt sem áður gætu þær haft haft áhrif á þessari síðu:">
+<!ENTITY issues.disabledgroups.description "
+Eftirfarandi síuáskriftir / síuhópar eru óvirkar, samt sem áður gætu þær haft haft áhrif á þessari síðu:
+">
 <!ENTITY issues.disabledgroups.enable.label "Virkja síuáskrift / síuhópur">
-<!ENTITY issues.disabledfilters.description "Eftirfarandi síur eru óvirkar, en gætu samt sem áður haft áhrif á þessari síðu:">
+<!ENTITY issues.disabledfilters.description "
+ Eftirfarandi síur eru óvirkar, en gætu samt sem áður haft áhrif á þessari síðu:
+">
 <!ENTITY issues.disabledfilters.enable.label "Virkja síu">
 <!ENTITY issues.override.label "Stillingarnar eru réttar, halda áfram með skýrsluna">
 <!ENTITY issues.override.accesskey "S">
-<!ENTITY issues.change.description "Búið er að breyta stillingum. Vinsamlega endurnýjaðu síðuna til að prófa breytingarnar og sendu skýrslu ef vandamálið leystist ekki vegna breytinganna.">
-<!ENTITY typeWarning.description "Þú hefur gefið til kynna að þú viljir tilkynna almennt vandamál á Adblock Plus frekar en vandamál með síurnar. Vinsamlega athugaðu að svoleiðis vandamál er best að tilkynna á [link]Adblock Plus umræðusvæðinu[/link]. Þú ættir aðeins að tilkynna vandamál sem viðauka við umræðu sem er til fyrir, þar sem enginn tekur eftir tilkynningunni nema þú setjir tengil með. Sjálfvirki tengillinn verður aðgengilegur eftir að skýrslan hefur verið send.">
+<!ENTITY issues.change.description "
+ Búið er að breyta stillingum. Vinsamlega endurnýjaðu síðuna til að prófa breytingarnar og sendu skýrslu ef vandamálið leystist ekki vegna breytinganna.
+">
+<!ENTITY typeWarning.description "
+ Þú hefur gefið til kynna að þú viljir tilkynna almennt vandamál á Adblock Plus frekar en vandamál með síurnar. Vinsamlega athugaðu að svoleiðis vandamál er best að tilkynna á [link]Adblock Plus umræðusvæðinu[/link]. Þú ættir aðeins að tilkynna vandamál sem viðauka við umræðu sem er til fyrir, þar sem enginn tekur eftir tilkynningunni nema þú setjir tengil með. Sjálfvirki tengillinn verður aðgengilegur eftir að skýrslan hefur verið send.
+">
 <!ENTITY typeWarning.override.label "Ég skil og vill samt senda skýrslu">
 <!ENTITY typeWarning.override.accesskey "s">
 <!ENTITY reloadButton.label "Endurnýja síðu">
 <!ENTITY reloadButton.accesskey "r">
 <!ENTITY screenshot.heading "Hengja skjámynd við">
-<!ENTITY screenshot.description "Sama síðan getur birst á mismunandi hátt fyrir mismunandi fólk. Það gæti hjálpað okkur að skilja vandamálið ef þú setur skjáskot með skýrslunni. Þú getur fjarlægt svæði sem innihalda persónulegar upplýsingar og merkt einnig þau svæði þar sem	vandamálið sést. Til að merkja svæði smelltu á viðkomandi hnapp og veldu
-svæði á myndinni með músinni.">
+<!ENTITY screenshot.description "
+ Sama síðan getur birst á mismunandi hátt fyrir mismunandi fólk. Það gæti hjálpað okkur að skilja vandamálið ef þú setur skjáskot með skýrslunni. Þú getur fjarlægt svæði sem innihalda persónulegar upplýsingar og merkt einnig þau svæði þar sem	vandamálið sést. Til að merkja svæði smelltu á viðkomandi hnapp og veldunnnsvæði á myndinni með músinni.
+">
 <!ENTITY screenshot.attach.label "Hengja mynd af síðu við skýrsluna">
 <!ENTITY screenshot.attach.accesskey "H">
 <!ENTITY screenshot.mark.label "Merkja vandamálið">
@@ -54,7 +71,9 @@ svæði á myndinni með músinni.">
 <!ENTITY screenshot.undo.label "Afturkalla">
 <!ENTITY screenshot.undo.accesskey "u">
 <!ENTITY commentPage.heading "Sláðu inn athugasemd">
-<!ENTITY commentPage.description "Þú getur slegið inn athugasemd í textasvæðið hér fyrir neðan til að hjálpa okkur að skilja vandamálið. Þetta skref er valkvæmt en mælt er með því ef vandamálið er ekki augljóst. Þú getur einnig forskoðað skýrsluna áður en þú hún er send.">
+<!ENTITY commentPage.description "
+ Þú getur slegið inn athugasemd í textasvæðið hér fyrir neðan til að hjálpa okkur að skilja vandamálið. Þetta skref er valkvæmt en mælt er með því ef vandamálið er ekki augljóst. Þú getur einnig forskoðað skýrsluna áður en þú hún er send.
+">
 <!ENTITY comment.label "Athugasemd (valfrjálst):">
 <!ENTITY comment.accesskey "A">
 <!ENTITY comment.lengthWarning "Lengdin á athugasemd er yfir 1000 stafir. Aðeins verða sendir fyrstu 1000 stafirnir.">
@@ -71,7 +90,9 @@ svæði á myndinni með músinni.">
 <!ENTITY sendPage.waitMessage "Bíddu aðeins meðan Adblock Plus sendir skýrsluna.">
 <!ENTITY sendPage.confirmation "Búið er að vista skýrsluna. Þú getur séð hana á eftirfarandi veffangi:">
 <!ENTITY sendPage.knownIssue "Vandamálið sem þú tilkynntir er öllum líkindum þegar þekkt. Meiri upplýsingar:">
-<!ENTITY sendPage.errorMessage "Tilraun til að senda skýrsluna mistókst með villukóða "?1?". Gakktu úr skugga um þú tengdur við netið og reyndu aftur. Ef vandamálið er viðvarandi fáðu þá hjálp í [link]Adblock Plus umræðusvæðinu[/link].">
+<!ENTITY sendPage.errorMessage "
+ Tilraun til að senda skýrsluna mistókst með villukóða "?1?". Gakktu úr skugga um þú tengdur við netið og reyndu aftur. Ef vandamálið er viðvarandi fáðu þá hjálp í [link]Adblock Plus umræðusvæðinu[/link].
+">
 <!ENTITY sendPage.retry.label "Senda aftur">
 <!ENTITY copyLink.label "Afrita skýrslutengil">
 <!ENTITY copyLink.accesskey "A">
diff --git a/chrome/adblockplus.jar!/locale/is/settings.dtd b/chrome/adblockplus.jar!/locale/is/settings.dtd
deleted file mode 100644
index 4844361..0000000
--- a/chrome/adblockplus.jar!/locale/is/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus stillingar">
-<!ENTITY filters.label "Síur">
-<!ENTITY filters.accesskey "S">
-<!ENTITY add.label "Bæta við síu">
-<!ENTITY add.accesskey "t">
-<!ENTITY addsubscription.label "Bæta við síuáskrift">
-<!ENTITY addsubscription.accesskey "s">
-<!ENTITY synchsubscriptions.label "Uppfæra allar áskriftir">
-<!ENTITY synchsubscriptions.accesskey "U">
-<!ENTITY import.label "Flytja inn síur">
-<!ENTITY import.accesskey "F">
-<!ENTITY export.label "Flytja út síur">
-<!ENTITY export.accesskey "y">
-<!ENTITY clearall.label "Fjarlægja allar síur">
-<!ENTITY clearall.accesskey "l">
-<!ENTITY resethitcounts.label "Endurstilla talningar">
-<!ENTITY resethitcounts.accesskey "E">
-<!ENTITY edit.label "Breyta">
-<!ENTITY edit.accesskey "B">
-<!ENTITY cut.label "Klippa">
-<!ENTITY cut.accesskey "K">
-<!ENTITY copy.label "Afrita">
-<!ENTITY copy.accesskey "A">
-<!ENTITY paste.label "Líma">
-<!ENTITY paste.accesskey "L">
-<!ENTITY remove.label "Eyða">
-<!ENTITY remove.accesskey "E">
-<!ENTITY menu.find.label "Leita">
-<!ENTITY menu.find.accesskey "t">
-<!ENTITY menu.findagain.label "Leita aftur">
-<!ENTITY menu.findagain.accesskey "f">
-<!ENTITY view.label "Skoða">
-<!ENTITY view.accesskey "k">
-<!ENTITY sort.label "Raða eftir">
-<!ENTITY sort.accesskey "f">
-<!ENTITY sort.none.label "Óraðað">
-<!ENTITY sort.none.accesskey "r">
-<!ENTITY sort.ascending.label "A > Ö röðun">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Ö > A röðun">
-<!ENTITY sort.descending.accesskey "Ö">
-<!ENTITY options.label "Valkostir">
-<!ENTITY options.accesskey "V">
-<!ENTITY enable.label "Virkja Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Sýna í tækjaslá">
-<!ENTITY showintoolbar.accesskey "t">
-<!ENTITY showinstatusbar.label "Sýna í stöðuslá">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "Sýna flipa fyrir Flass og Java">
-<!ENTITY objecttabs.accesskey "f">
-<!ENTITY collapse.label "Fella saman lokaða hluti">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Samstilla Adblock Plus stillingar">
-<!ENTITY sync.accesskey "m">
-<!ENTITY help.label "Hjálp">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "Byrja notkun">
-<!ENTITY gettingStarted.accesskey "n">
-<!ENTITY faq.label "Oft spurðar spurningar">
-<!ENTITY faq.accesskey "O">
-<!ENTITY filterdoc.label "Hvernig á að búa til Adblock Plus síur">
-<!ENTITY filterdoc.accesskey "v">
-<!ENTITY about.label "Um Adblock Plus">
-<!ENTITY about.accesskey "b">
-<!ENTITY description "Eftirfarandi síur ákvarða hvaða netföng á að loka á og hvaða netföng eigi að leyfa:">
-<!ENTITY filter.column "Síu regla">
-<!ENTITY filter.accesskey "g">
-<!ENTITY slow.column "Hægar síur">
-<!ENTITY slow.accesskey "æ">
-<!ENTITY enabled.column "Virkt">
-<!ENTITY enabled.accesskey "V">
-<!ENTITY hitcount.column "Notkun">
-<!ENTITY hitcount.accesskey "N">
-<!ENTITY lasthit.column "Seinast heimsótt">
-<!ENTITY lasthit.accesskey "h">
-<!ENTITY context.edit.label "Breyta">
-<!ENTITY context.resethitcount.label "Endurstilla talningu fyrir síu">
-<!ENTITY context.synchsubscription.label "Uppfæra áskrift núna">
-<!ENTITY context.editsubscription.label "Breyta áskrift">
-<!ENTITY context.moveup.label "Færa upp">
-<!ENTITY context.movedown.label "Færa niður">
-<!ENTITY context.movegroupup.label "Færa hóp upp">
-<!ENTITY context.movegroupdown.label "Færa hóp niður">
-<!ENTITY context.enable.label "Gera virkt">
-<!ENTITY context.disable.label "Gera óvirkt">
-<!ENTITY apply.label "Nota">
-<!ENTITY apply.accesskey "N">
-<!ENTITY fennec.subscription.label "Síu áskrift">
diff --git a/chrome/adblockplus.jar!/locale/is/sidebar.dtd b/chrome/adblockplus.jar!/locale/is/sidebar.dtd
index 464db5a..51c11f4 100644
--- a/chrome/adblockplus.jar!/locale/is/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/is/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Sía">
 <!ENTITY state.label "Ríki">
 <!ENTITY size.label "Stærð">
+<!ENTITY filterSource.label "Síu uppruni">
 <!ENTITY docDomain.label "Netfang síðu">
 <!ENTITY docDomain.thirdParty "(þriðja aðila)">
 <!ENTITY docDomain.firstParty "(frumaðili)">
diff --git a/chrome/adblockplus.jar!/locale/is/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/is/subscriptionSelection.dtd
index bb203a3..ed797ae 100644
--- a/chrome/adblockplus.jar!/locale/is/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/is/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Bæta við Adblock Plus síu áskrift">
-<!ENTITY dialog.title.edit "Breyta síuáskrift">
-<!ENTITY description.newInstall "Til að Adblock Plus sé sem árangursríkast ættirðu að bæta við síu áskrift. Síu áskriftirnar eru ókeypis í boði annarra Adblock Plus notenda. Viðeigandi síu áskrift fyrir þitt tungumál er þegar valið.">
 <!ENTITY subscriptionSelector.label "Veldu síu áskrift úr listanum:">
 <!ENTITY viewList.label "Skoða síur">
 <!ENTITY visitHomepage.label "Heimsækja heimasíðu">
 <!ENTITY addSubscription.label "Bæta við áskrift">
-<!ENTITY saveSubscription.label "Vista áskrift">
-<!ENTITY other.label "Bæta við öðruvísi áskrift">
-<!ENTITY other.accesskey "f">
 <!ENTITY list.download.failed "Adblock Plus gat ekki náð í lista af áskriftum.">
 <!ENTITY list.download.retry "Reyndu aftur">
 <!ENTITY list.download.website "Skoða vefsvæði">
 <!ENTITY fromWeb.description "Staðfestu að þú viljir bæta við þessari síu áskrift. Þú getur breytt titlinum eða staðsetningu áður en þú bætir við.">
-<!ENTITY edit.description "Þú getur breytt titli eða staðsetningu ef nauðsynlegt er.">
-<!ENTITY external.description "Þetta er utanáliggjandi síu áskrift; síulistinn verður uppfærður af viðbótinni sem bjó til þessa áskrift.">
 <!ENTITY title.label "Áskriftartitill:">
 <!ENTITY title.accesskey "t">
 <!ENTITY location.label "Staðsetning síulista:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "Uppfæra sjálfvirkt">
-<!ENTITY autodownload.accesskey "U">
 <!ENTITY supplementMessage "Þessi síu áskrift er ætluð til þess að vera notuð með síu áskrift "?1?" sem þú hefur ekki ennþá bætt við.">
-<!ENTITY addMain.label "Bættu einnig við síu áskrift "?1?"">
+<!ENTITY addMain.label "Bæta einnig við síu áskrift "?1?"">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/it/composer.dtd b/chrome/adblockplus.jar!/locale/it/composer.dtd
index 9c18467..aeb4f4c 100644
--- a/chrome/adblockplus.jar!/locale/it/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/it/composer.dtd
@@ -44,4 +44,4 @@
 <!ENTITY collapse.default.yes.label "Utilizza predefiniti (sì)">
 <!ENTITY collapse.default.no.label "Utilizza predefiniti (no)">
 <!ENTITY collapse.yes.label "Sì">
-<!ENTITY collapse.no.label "No">
+<!ENTITY collapse.no.label "No ">
diff --git a/chrome/adblockplus.jar!/locale/it/filters.dtd b/chrome/adblockplus.jar!/locale/it/filters.dtd
new file mode 100644
index 0000000..2020a98
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/it/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Gestione dei filtri di Adblock Plus">
+<!ENTITY subscriptions.tab.label "Sottoscrizioni di filtri">
+<!ENTITY filters.tab.label "Filtri personalizzati">
+<!ENTITY addSubscription.label "Aggiungi sottoscrizione">
+<!ENTITY addSubscription.accesskey "A">
+<!ENTITY addSubscriptionAdd.label "Aggiungi">
+<!ENTITY addSubscriptionCancel.label "Annulla">
+<!ENTITY addSubscriptionOther.label "Altre sottoscrizioni">
+<!ENTITY noSubscriptions.text "
+		Non è stata ancora aggiunta alcuna sottoscrizione di filtri, senza cui Adblock Plus non
+	bloccherà alcun elemento; fare clic sul pulsante "Aggiungi sottoscrizione…"
+	per aggiungerne una
+	">
+<!ENTITY subscription.homepage.label "Sito web">
+<!ENTITY subscription.external.label "Sottoscrizione aggiornata da un'altra estensione">
+<!ENTITY subscription.source.label "Lista di filtri">
+<!ENTITY subscription.enabled.label "Attiva">
+<!ENTITY subscription.lastDownload.label "Ultimo aggiornamento:">
+<!ENTITY subscription.lastDownload.inProgress "download in corso…">
+<!ENTITY subscription.lastDownload.unknown "sconosciuto">
+<!ENTITY subscription.lastDownload.invalidURL "Sincronizzazione non riuscita, indirizzo web non valido">
+<!ENTITY subscription.lastDownload.connectionError "Sincronizzazione non riuscita, errore durante il download">
+<!ENTITY subscription.lastDownload.invalidData "Sincronizzazione non riuscita, lista dei filtri non valida">
+<!ENTITY subscription.lastDownload.checksumMismatch "Sincronizzazione non riuscita, checksum non corrispondente">
+<!ENTITY subscription.lastDownload.success "Sincronizzazione effettuata con successo">
+<!ENTITY subscription.minVersion.warning "Per questa sottoscrizione di filtri è necessaria una versione di Adblock Plus aggiornata. È necessario installare l'ultima versione di Adblock Plus">
+<!ENTITY subscription.disabledFilters.warning "Alcuni filtri di questa sottoscrizione sono disattivati.">
+<!ENTITY subscription.disabledFilters.enable "Attiva i filtri disattivati">
+<!ENTITY subscription.actions.label "Azioni">
+<!ENTITY subscription.update.label "Aggiorna i filtri">
+<!ENTITY subscription.editTitle.label "Modifica il titolo">
+<!ENTITY subscription.delete.label "Elimina">
+<!ENTITY subscription.showHideFilters.label "Mostra/nascondi i filtri">
+<!ENTITY subscription.moveUp.label "Sposta su">
+<!ENTITY subscription.moveDown.label "Sposta giù">
+<!ENTITY acceptableAds.label "Permetti pubblicità non inopportuna">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Ulteriori informazioni…">
+<!ENTITY addGroup.label "Aggiungi gruppo di filtri">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+		Non è stato ancora aggiunto alcun filtro personalizzato
+	">
+<!ENTITY addFilter.label "Aggiungi filtro">
+<!ENTITY addFilter.accesskey "f">
+<!ENTITY filter.actions.label "Opzioni del filtro">
+<!ENTITY filter.edit.label "Modifica">
+<!ENTITY filter.cut.label "Taglia">
+<!ENTITY filter.copy.label "Copia">
+<!ENTITY filter.paste.label "Incolla">
+<!ENTITY filter.delete.label "Elimina">
+<!ENTITY filter.selectAll.label "Seleziona tutto">
+<!ENTITY filter.resetHitCounts.label "Ripristina le statistiche di accesso">
+<!ENTITY filter.moveUp.label "Sposta su">
+<!ENTITY filter.moveDown.label "Sposta giù">
+<!ENTITY viewMenu.label "Visualizza">
+<!ENTITY filter.column "Ruolo del filtro">
+<!ENTITY filter.accesskey "R">
+<!ENTITY slow.column "Filtri lenti">
+<!ENTITY slow.accesskey "l">
+<!ENTITY enabled.column "Attivato">
+<!ENTITY enabled.accesskey "t">
+<!ENTITY hitcount.column "Accessi">
+<!ENTITY hitcount.accesskey "s">
+<!ENTITY lasthit.column "Ultimo accesso">
+<!ENTITY lasthit.accesskey "U">
+<!ENTITY sort.label "Ordina">
+<!ENTITY sort.accesskey "O">
+<!ENTITY sort.none.label "Non ordinare">
+<!ENTITY sort.none.accesskey "d">
+<!ENTITY sort.ascending.label "Ordina A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Ordina Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "È necessario selezionare un gruppo di filtri per poterne visualizzare i filtri">
+<!ENTITY noFiltersInGroup.text "Il gruppo di filtri selezionato è vuoto">
+<!ENTITY filters.remove.warning "Eliminare tutti i filtri selezionati?">
+<!ENTITY backupButton.label "Backup e ripristino">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "Nuovo backup">
+<!ENTITY restore.default.label "Ripristina il backup datato ?1?">
+<!ENTITY restore.own.label "Backup personale da ripristinare">
+<!ENTITY backup.complete.title "Tutti i filtri e le sottoscrizioni">
+<!ENTITY backup.custom.title "Solo filtri personalizzati">
+<!ENTITY backup.error "Si è verificato un errore durante la creazione del file di backup. Verificare i permessi di scrittura per il file e/o che non sia già utilizzato da un'altra applicazione">
+<!ENTITY restore.error "Impossibile effettuare il ripristino del backup poiché il file selezionato probabilmente non è un file di backup di Adblock Plus">
+<!ENTITY restore.complete.warning "Tutte le impostazioni dei filtri verranno sostituite dal contenuto del file selezionato. Procedere comunque?">
+<!ENTITY restore.custom.warning "Tutti i filtri personalizzati verranno sostituiti dal contenuto del file selezionato. Procedere comunque?">
+<!ENTITY restore.minVersion.warning "Attenzione: il file di backup è stato creato con una versione più recente di Adblock Plus. Installare l'ultima versione di Adblock Plus per poter effettuare il ripristino da tale file">
+<!ENTITY find.label "Trova">
+<!ENTITY find.accesskey "v">
+<!ENTITY close.label "Chiudi">
diff --git a/chrome/adblockplus.jar!/locale/it/firstRun.dtd b/chrome/adblockplus.jar!/locale/it/firstRun.dtd
new file mode 100644
index 0000000..0bab62d
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/it/firstRun.dtd
@@ -0,0 +1,18 @@
+<!ENTITY dialog.title "Installazione/aggiornamento di Adblock Plus effettuato con successo">
+<!ENTITY confirmation "
+		Grazie di aver installato/aggiornato Adblock Plus. Banner e pubblicità indesiderati verranno bloccati 
+	a partire da adesso">
+<!ENTITY advancedSection "Opzioni avanzate">
+<!ENTITY listSelection1 "
+		 Per bloccare banner e pubblicità indesiderati sono state impostate le seguenti liste di filtri:
+	 ">
+<!ENTITY noList "-nessuna lista di filtri-">
+<!ENTITY visitHomepage.label "Visita il sito web della lista">
+<!ENTITY acceptableAds "
+		Nota: è attualmente attiva in maniera predefinita l'opzione per permettere pubblicità non inopportuna
+	">
+<!ENTITY readMore.label "Visualizza ulteriori informazioni relative a questa opzione">
+<!ENTITY listSelection2 "
+		È possibile attivare/disattivare la visualizzazione di pubblicità non inopportuna in qualsiasi momento nella finestra di
+	[link]Gestione dei filtri di Adblock Plus[/link] selezionando/deselezionando 'Permetti pubblicità non inopportuna'
+	">
diff --git a/chrome/adblockplus.jar!/locale/it/global.properties b/chrome/adblockplus.jar!/locale/it/global.properties
index 69085e5..7401d79 100644
--- a/chrome/adblockplus.jar!/locale/it/global.properties
+++ b/chrome/adblockplus.jar!/locale/it/global.properties
@@ -1,7 +1,7 @@
 default_dialog_title=Adblock Plus
 action0_tooltip=Fare clic per visualizzare il menu contestuale, clic centrale per attivare/disattivare
 action1_tooltip=Fare clic per aprire/chiudere la finestra degli elementi bloccabili, clic centrale per attivare/disattivare
-action2_tooltip=Fare clic per aprire la finestra delle impostazioni, clic centrale per attivare/disattivare
+action2_tooltip=Fare clic per aprire la finestra di gestione dei filtri, clic centrale per attivare/disattivare
 action3_tooltip=Fare clic per attivare/disattivare Adblock Plus
 disabled_tooltip=Adblock Plus è disattivata
 active_tooltip=Adblock Plus è attiva (sottoscrizioni di filtri in uso: ?1?, filtri in uso: ?2?)
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? di ?2?
 blocked_count_addendum=(elementi permessi: ?1?, elementi nascosti: ?2?)
 no_blocking_suggestions=Nessun elemento bloccabile nella pagina attuale
 whitelisted_page=Adblock Plus è stata disattivata per la pagina attuale
-whitelist_description=Elementi da permettere
-filterlist_description=Elementi da bloccare
-invalid_description=Elementi non validi
-elemhide_description=Elementi da nascondere
-subscription_description=Elementi della sottoscrizione
-subscription_wrong_version=Alcuni filtri in questa sottoscrizione richiedono Adblock Plus ?1? per funzionare correttamente
-subscription_source=Fonte:
-subscription_status=Stato:
-subscription_status_autodownload=Aggiornati automaticamente
-subscription_status_manualdownload=Aggiornati manualmente
-subscription_status_externaldownload=Aggiornati esternamente (da un'altra estensione)
-subscription_status_lastdownload=Ultimo aggiornamento:
-subscription_status_lastdownload_inprogress=Download in corso…
-subscription_status_lastdownload_unknown=Sconosciuto
-remove_subscription_warning=Eliminare questa sottoscrizione?
-import_filters_wrong_version=Alcuni filtri in questa lista richiedono Adblock Plus ?1? per funzionare correttamente
-import_filters_warning=Sovrascrivere gli attuali elementi della lista?\nSelezionare 'Sovrascrivi' per sovrascrivere o 'Unisci' per unire
-import_filters_title=Importa lista dei filtri
-export_filters_title=Esporta lista dei filtri
-invalid_filters_file=Il file della lista dei filtri non è valido
-filters_write_error=Si sono verificati alcuni errori di scrittura del file della lista dei filtri. Accertarsi che il file non sia di sola lettura oppure in uso da parte di un altro programma
-clearall_warning=Eliminare tutti gli elementi della lista?
-resethitcounts_warning=Azzerare le statistiche per tutti i filtri? L'operazione non potrà essere annullata
-resethitcounts_selected_warning=Azzerare le statistiche per i filtri selezionati? L'operazione non potrà essere annullata
+newGroup_title=Nuovo gruppo di filtri
+whitelistGroup_title=Gruppo di filtri per permettere elementi
+blockingGroup_title=Gruppo di filtri per bloccare elementi
+elemhideGroup_title=Gruppo di filtri per nascondere elementi
+remove_subscription_warning=Eliminare sottoscrizione / gruppo di filtri?
+clearStats_warning=Azzerare le statistiche per tutti i filtri e disattivarne il futuro conteggio?
 filter_regexp_tooltip=Il filtro inserito verrà interpretato come un'espressione regolare. Un numero eccessivo di tali filtri potrebbe rallentare la navigazione
 filter_elemhide_duplicate_id=È possibile specificare solo un ID dell'elemento da nascondere
 filter_elemhide_nocriteria=Non è stato specificato alcun criterio per rilevare l'elemento da nascondere
-subscription_notAdded_warning=Non è stata selezionata alcuna sottoscrizione di filtri, per cui sarà necessario aggiungere in seguito manualmente i filtri ad Adblock Plus.
-subscription_notAdded_warning_addendum=Procedere comunque?
 subscription_invalid_location=Attenzione: per poter aggiungere una sottoscrizione è necessario che i campi 'Titolo della sottoscrizione:' ed 'Indirizzo della lista dei filtri:' non siano lasciati vuoti e corrispondano a nomi di file validi. Inserire tali dati e ripetere la procedura
-synchronize_invalid_url=Sincronizzazione non riuscita, indirizzo web non valido
-synchronize_connection_error=Sincronizzazione non riuscita, errore durante il download
-synchronize_invalid_data=Sincronizzazione non riuscita, lista dei filtri non valida
-synchronize_checksum_mismatch=Sincronizzazione non riuscita, checksum non corrispondente
-synchronize_ok=Sincronizzazione effettuata con successo
-overwrite=Sovrascrivi
-append=Unisci
-new_filter_group_title=Nuovo filtro
 type_label_other=altro
 type_label_script=script
 type_label_image=immagine
@@ -56,15 +28,12 @@ type_label_object=oggetto
 type_label_subdocument=riquadro
 type_label_document=documento
 type_label_elemhide=nascosto
-type_label_xbl=binding XBL 
-type_label_ping=ping al link
+type_label_popup=finestra a pop-up
 type_label_xmlhttprequest=richiesta XML
 type_label_object_subrequest=oggetto sottorichiesto
-type_label_dtd=file dtd
 type_label_media=audio/video 
 type_label_font=carattere
 fennec_status_enabled=Adblock Plus è attiva
 fennec_status_disabled=Adblock Plus è disattivata
 fennec_status_enabled_site=Adblock Plus è attiva per ?1?
 fennec_status_disabled_site=Adblock Plus è disattivata per ?1?
-sync_engine_title=Dati di Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/it/overlay.dtd b/chrome/adblockplus.jar!/locale/it/overlay.dtd
index a4e46b5..6d5dc7e 100644
--- a/chrome/adblockplus.jar!/locale/it/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/it/overlay.dtd
@@ -1,10 +1,9 @@
 <!ENTITY status.tooltip "Stato">
 <!ENTITY blocked.tooltip "Elementi bloccati nella pagina attuale">
 <!ENTITY filters.tooltip "Filtri maggiormente attivi">
-<!ENTITY menuitem.label "Impostazioni di Adblock Plus">
+<!ENTITY menuitem.label "Gestione dei filtri di Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Elementi bloccabili con Adblock Plus">
 <!ENTITY context.image.label "Blocca immagine con Adblock Plus">
 <!ENTITY context.object.label "Blocca oggetto con Adblock Plus">
 <!ENTITY context.frame.label "Blocca riquadro con Adblock Plus">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Elementi bloccabili della pagina attuale">
 <!ENTITY sendReport.label "Segnala problemi nella pagina attuale">
 <!ENTITY sendReport.accesskey "S">
-<!ENTITY settings.label "Impostazioni">
-<!ENTITY settings.accesskey "I">
+<!ENTITY filters.label "Gestione dei filtri">
+<!ENTITY filters.accesskey "f">
 <!ENTITY opensidebar.label "Apri gli elementi bloccabili">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Chiudi gli elementi bloccabili">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Disattiva per ?1?">
 <!ENTITY whitelist.page.label "Disattiva solo per la pagina attuale">
 <!ENTITY disable.label "Disattiva per tutte le pagine">
-<!ENTITY recommend.label " Condividi AdblockPlus su Facebook">
+<!ENTITY options.label "Opzioni di Adblock Plus">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Contribuisci ad Adblock Plus">
+<!ENTITY showintoolbar.label "Visualizza nella barra degli strumenti">
+<!ENTITY showintoolbar.accesskey "b">
+<!ENTITY showinstatusbar.label "Visualizza nella barra di stato">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "Visualizza nella barra dei componenti aggiuntivi">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Mostra linguetta 'Blocca…' per elementi Flash e Java">
+<!ENTITY objecttabs.accesskey "t">
+<!ENTITY hideplaceholders.label "Nascondi gli elementi bloccati">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Effettua le statistiche di accesso">
+<!ENTITY counthits.accesskey "E">
+<!ENTITY sync.label "Sincronizza le impostazioni di Adblock Plus">
+<!ENTITY sync.accesskey "k">
 <!ENTITY objecttab.title "Blocca">
 <!ENTITY objecttab.tooltip "Fare clic qui per bloccare l'oggetto con Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/it/sendReport.dtd b/chrome/adblockplus.jar!/locale/it/sendReport.dtd
index 44ddafd..3477e33 100644
--- a/chrome/adblockplus.jar!/locale/it/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/it/sendReport.dtd
@@ -62,7 +62,7 @@
 	tutte le sottoscrizioni superflue lasciando solo quella necessaria e verificare
 	se il problema persiste ancora
 ">
-<!ENTITY issues.openPreferences.label "Apri la finestra delle impostazioni…">
+<!ENTITY issues.openPreferences.label "Apri la finestra di 'Gestione dei filtri di Adblock Plus'…">
 <!ENTITY issues.ownfilters.description "
 		Alcuni dei filtri che vengono applicati nella pagina web attuale sono personalizzati;
 		disattivare tali filtri che potrebbero essere la causa del seguente problema:
diff --git a/chrome/adblockplus.jar!/locale/it/settings.dtd b/chrome/adblockplus.jar!/locale/it/settings.dtd
deleted file mode 100644
index 2b27dec..0000000
--- a/chrome/adblockplus.jar!/locale/it/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Impostazioni di Adblock Plus">
-<!ENTITY filters.label "Filtri">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Aggiungi filtro">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "Aggiungi sottoscrizione">
-<!ENTITY addsubscription.accesskey "u">
-<!ENTITY synchsubscriptions.label "Aggiorna tutte le sottoscrizioni">
-<!ENTITY synchsubscriptions.accesskey "t">
-<!ENTITY import.label "Importa lista dei filtri">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Esporta filtri personalizzati">
-<!ENTITY export.accesskey "s">
-<!ENTITY clearall.label "Elimina tutti i filtri personalizzati">
-<!ENTITY clearall.accesskey "E">
-<!ENTITY resethitcounts.label "Ripristina le statistiche di accesso">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Modifica">
-<!ENTITY edit.accesskey "M">
-<!ENTITY cut.label "Taglia">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "Copia">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Incolla">
-<!ENTITY paste.accesskey "I">
-<!ENTITY remove.label "Elimina">
-<!ENTITY remove.accesskey "E">
-<!ENTITY menu.find.label "Trova">
-<!ENTITY menu.find.accesskey "v">
-<!ENTITY menu.findagain.label "Trova successivo">
-<!ENTITY menu.findagain.accesskey "u">
-<!ENTITY view.label "Visualizza">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Ordina">
-<!ENTITY sort.accesskey "O">
-<!ENTITY sort.none.label "Non ordinare">
-<!ENTITY sort.none.accesskey "d">
-<!ENTITY sort.ascending.label "Ordina A > Z">
-<!ENTITY sort.ascending.accesskey "r">
-<!ENTITY sort.descending.label "Ordina Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opzioni">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Attiva Adblock Plus">
-<!ENTITY enable.accesskey "P">
-<!ENTITY showintoolbar.label "Visualizza nella barra degli strumenti">
-<!ENTITY showintoolbar.accesskey "b">
-<!ENTITY showinstatusbar.label "Visualizza nella barra dei componenti aggiuntivi">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Mostra linguetta per elementi Flash e Java">
-<!ENTITY objecttabs.accesskey "t">
-<!ENTITY collapse.label "Nascondi elementi bloccati">
-<!ENTITY collapse.accesskey "e">
-<!ENTITY sync.label "Sincronizza le impostazioni di Adblock Plus">
-<!ENTITY sync.accesskey "k">
-<!ENTITY help.label "?">
-<!ENTITY help.accesskey "?">
-<!ENTITY gettingStarted.label "Come iniziare">
-<!ENTITY gettingStarted.accesskey "C">
-<!ENTITY faq.label "FAQ di Adblock Plus">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Scrittura dei filtri di Adblock Plus">
-<!ENTITY filterdoc.accesskey "k">
-<!ENTITY about.label "Informazioni su Adblock Plus">
-<!ENTITY about.accesskey "z">
-<!ENTITY description "I filtri presenti nel riquadro qui sotto determinano gli elementi da permettere/bloccare/nascondere oppure delle liste di sottoscrizione">
-<!ENTITY filter.column "Ruolo del filtro">
-<!ENTITY filter.accesskey "f">
-<!ENTITY slow.column "Filtri lenti">
-<!ENTITY slow.accesskey "l">
-<!ENTITY enabled.column "Attivato">
-<!ENTITY enabled.accesskey "t">
-<!ENTITY hitcount.column "Accessi">
-<!ENTITY hitcount.accesskey "A">
-<!ENTITY lasthit.column "Ultimo accesso">
-<!ENTITY lasthit.accesskey "U">
-<!ENTITY context.edit.label "Modifica filtro">
-<!ENTITY context.resethitcount.label "Ripristina le statistiche di accesso per il filtro">
-<!ENTITY context.synchsubscription.label "Aggiorna la sottoscrizione ora">
-<!ENTITY context.editsubscription.label "Modifica la sottoscrizione">
-<!ENTITY context.moveup.label "Sposta il filtro su">
-<!ENTITY context.movedown.label "Sposta il filtro giù">
-<!ENTITY context.movegroupup.label "Sposta il gruppo su">
-<!ENTITY context.movegroupdown.label "Sposta il gruppo giù">
-<!ENTITY context.enable.label "Attiva">
-<!ENTITY context.disable.label "Disattiva">
-<!ENTITY apply.label "Applica">
-<!ENTITY apply.accesskey "c">
-<!ENTITY fennec.subscription.label "Sottoscrizione di filtri di Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/it/sidebar.dtd b/chrome/adblockplus.jar!/locale/it/sidebar.dtd
index 70ccacc..f5335c4 100644
--- a/chrome/adblockplus.jar!/locale/it/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/it/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtro">
 <!ENTITY state.label "Stato">
 <!ENTITY size.label "Dimensione">
+<!ENTITY filterSource.label "Sorgente del filtro">
 <!ENTITY docDomain.label "Sorgente">
 <!ENTITY docDomain.thirdParty "(terza parte)">
 <!ENTITY docDomain.firstParty "(prima parte)">
diff --git a/chrome/adblockplus.jar!/locale/it/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/it/subscriptionSelection.dtd
index 87420c7..e30c474 100644
--- a/chrome/adblockplus.jar!/locale/it/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/it/subscriptionSelection.dtd
@@ -1,30 +1,16 @@
 <!ENTITY dialog.title "Sottoscrizione di filtri di Adblock Plus">
-<!ENTITY dialog.title.edit "Modifica della sottoscrizione di filtri">
-<!ENTITY description.newInstall "
-		Grazie per aver installato Adblock Plus, che permette di eliminare il 99% di pubblicità e banner in internet. Per filtrare
-	efficacemente pubblicità e banner è necessaria una buona serie di filtri. È possibile selezionare qui sotto una delle
-	sottoscrizioni di liste di filtri mantenute da terzi: quella più appropriata per nazione viene evidenziata (è possibile in 
-	seguito aggiungere manualmente ulteriori/propri filtri così come disattivare/eliminare le sottoscrizioni quando necessario)
-">
 <!ENTITY subscriptionSelector.label "Selezionare una sottoscrizione di filtri dalla seguente lista:">
 <!ENTITY viewList.label "Visualizza i filtri della sottoscrizione">
 <!ENTITY visitHomepage.label "Visita il sito web">
 <!ENTITY addSubscription.label "Aggiungi sottoscrizione">
-<!ENTITY saveSubscription.label "Salva la sottoscrizione">
-<!ENTITY other.label "Altre sottoscrizioni">
-<!ENTITY other.accesskey "e">
 <!ENTITY list.download.failed "Recupero della lista di sottoscrizioni non riuscito">
 <!ENTITY list.download.retry "Riprova">
 <!ENTITY list.download.website "Visita il sito web delle sottoscrizioni">
-<!ENTITY fromWeb.description "Confermare l'aggiunta della sottoscrizione di filtri. È possibile modificare il titolo della sottoscrizione oppure l'URL/percorso della lista dei filtri prima di aggiungere">
-<!ENTITY edit.description "È possibile modificare il titolo della sottoscrizione oppure l'URL/percorso della lista dei filtri">
-<!ENTITY external.description "Questa è una sottoscrizione esterna, la relativa lista dei filtri sarà mantenuta aggiornata dall'estensione che ha creato questa sottoscrizione">
+<!ENTITY fromWeb.description "Confermare l'aggiunta della sottoscrizione di filtri. È possibile modificare il titolo della sottoscrizione oppure l'URL/percorso della lista dei filtri prima di aggiungerla">
 <!ENTITY title.label "Titolo della sottoscrizione:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Indirizzo della lista dei filtri:">
 <!ENTITY location.accesskey "z">
-<!ENTITY autodownload.label "Aggiorna automaticamente">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Questa sottoscrizione di filtri verrà utilizzata insieme a quella chiamata " ?1?" (ancora non aggiunta).">
-<!ENTITY addMain.label "Aggiungere la sottoscrizione di filtri " ?1?"">
+<!ENTITY addMain.label "Aggiungere la sottoscrizione di filtri "?1?"">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/ja/about.dtd b/chrome/adblockplus.jar!/locale/ja/about.dtd
index 652f76e..27baff8 100644
--- a/chrome/adblockplus.jar!/locale/ja/about.dtd
+++ b/chrome/adblockplus.jar!/locale/ja/about.dtd
@@ -4,5 +4,5 @@
 <!ENTITY homepage.label "Adblock Plus ホームページ:">
 <!ENTITY author.label "作者:">
 <!ENTITY contributors.label "貢献者:">
-<!ENTITY subscriptionAuthors.label "購読フィルタ作者:">
+<!ENTITY subscriptionAuthors.label "フィルタ購読の作者:">
 <!ENTITY translators.label "翻訳者:">
diff --git a/chrome/adblockplus.jar!/locale/ja/composer.dtd b/chrome/adblockplus.jar!/locale/ja/composer.dtd
index dffbc50..9b7affb 100644
--- a/chrome/adblockplus.jar!/locale/ja/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/ja/composer.dtd
@@ -2,8 +2,8 @@
 <!ENTITY accept.label "フィルタを追加">
 <!ENTITY advanced.label "詳細表示">
 <!ENTITY basic.label "基本表示">
-<!ENTITY disabled.warning "現在 Adblock Plus は無効になっています。フィルタを追加することはできますが [link]Adblock Plus を有効にする[/link] まで適用されません。">
-<!ENTITY groupDisabled.warning "現在、追加先のフィルタグループ "?1?" は無効になっています。フィルタを追加することはできますが [link]フィルタグループを有効にする[/link] まで適用されません。">
+<!ENTITY disabled.warning "現在 Adblock Plus は無効になっています。フィルタを追加することはできますが [link]Adblock Plus を有効化する[/link] まで適用されません。">
+<!ENTITY groupDisabled.warning "現在、追加先のフィルタグループ "?1?" は無効になっています。フィルタを追加することはできますが [link]フィルタグループを有効化する[/link] まで適用されません。">
 <!ENTITY filter.label "新規フィルタ:">
 <!ENTITY filter.accesskey "f">
 <!ENTITY preferences.label "既存のフィルタを表示…">
diff --git a/chrome/adblockplus.jar!/locale/ja/filters.dtd b/chrome/adblockplus.jar!/locale/ja/filters.dtd
new file mode 100644
index 0000000..68c4b69
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ja/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Adblock Plus フィルタ設定">
+<!ENTITY subscriptions.tab.label "フィルタ購読">
+<!ENTITY filters.tab.label "自作フィルタ">
+<!ENTITY addSubscription.label "フィルタ購読を追加">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "追加">
+<!ENTITY addSubscriptionCancel.label "キャンセル">
+<!ENTITY addSubscriptionOther.label "他のフィルタ購読を追加">
+<!ENTITY noSubscriptions.text "まだフィルタ購読が追加されていません。Adblock Plus はフィルタなしでは何もブロックしないので "フィルタ購読を追加" して下さい。">
+<!ENTITY subscription.homepage.label "ホームページ">
+<!ENTITY subscription.external.label "他の拡張により更新">
+<!ENTITY subscription.source.label "フィルタリスト">
+<!ENTITY subscription.enabled.label "有効">
+<!ENTITY subscription.lastDownload.label "更新日時:">
+<!ENTITY subscription.lastDownload.inProgress "ダウンロード中…">
+<!ENTITY subscription.lastDownload.unknown "不明">
+<!ENTITY subscription.lastDownload.invalidURL "更新失敗:アドレス無効">
+<!ENTITY subscription.lastDownload.connectionError "更新失敗:接続エラー">
+<!ENTITY subscription.lastDownload.invalidData "更新失敗:フィルタリスト無効">
+<!ENTITY subscription.lastDownload.checksumMismatch "更新失敗:チェックサム不一致">
+<!ENTITY subscription.lastDownload.success "更新成功">
+<!ENTITY subscription.minVersion.warning "このフィルタ購読は新バージョンの Adblock Plus を要求しているので、最新の Adblock Plus に更新して下さい。">
+<!ENTITY subscription.disabledFilters.warning "フィルタ購読の一部が無効化されました">
+<!ENTITY subscription.disabledFilters.enable "無効フィルタを有効化">
+<!ENTITY subscription.actions.label "アクション">
+<!ENTITY subscription.update.label "フィルタを更新">
+<!ENTITY subscription.editTitle.label "タイトルを編集">
+<!ENTITY subscription.delete.label "削除">
+<!ENTITY subscription.showHideFilters.label "フィルタを表示/非表示">
+<!ENTITY subscription.moveUp.label "上に移動">
+<!ENTITY subscription.moveDown.label "下に移動">
+<!ENTITY acceptableAds.label "控えめな広告を許可">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "詳細">
+<!ENTITY addGroup.label "フィルタグループを追加">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "まだ自作フィルタはありません。">
+<!ENTITY addFilter.label "フィルタを追加">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "フィルタアクション">
+<!ENTITY filter.edit.label "編集">
+<!ENTITY filter.cut.label "切り取り">
+<!ENTITY filter.copy.label "コピー">
+<!ENTITY filter.paste.label "貼り付け">
+<!ENTITY filter.delete.label "削除">
+<!ENTITY filter.selectAll.label "すべて選択">
+<!ENTITY filter.resetHitCounts.label "ヒット数をリセット">
+<!ENTITY filter.moveUp.label "上に移動">
+<!ENTITY filter.moveDown.label "下に移動">
+<!ENTITY viewMenu.label "表示">
+<!ENTITY filter.column "フィルタ">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "低速フィルタ">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "有効">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "ヒット数">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "最終ヒット日時">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "ソート">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "ソートなし">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "A > Z 順にソート">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A 順にソート">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "フィルタを表示するには、まずフィルタグループを選択して下さい">
+<!ENTITY noFiltersInGroup.text "選択されたグループは空">
+<!ENTITY filters.remove.warning "選択したフィルタを本当に削除しますか?">
+<!ENTITY backupButton.label "バックアップと復元">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "バックアップファイルの作成">
+<!ENTITY restore.default.label "?1? のバックアップファイルから復元">
+<!ENTITY restore.own.label "バックアップファイルを指定">
+<!ENTITY backup.complete.title "自作フィルタとフィルタ購読">
+<!ENTITY backup.custom.title "自作フィルタのみ">
+<!ENTITY backup.error "ファイル出力エラー。ファイル書き込み禁止/他のアプリケーションで使用中 となっていないか確認して下さい。">
+<!ENTITY restore.error "指定ファイルから復元できませんでした。このファイルは Adblock Plus のバックアップでないのでは?">
+<!ENTITY restore.complete.warning "全てのフィルタ設定は指定ファイル内容で置換されます。よろしいですか?">
+<!ENTITY restore.custom.warning "全ての自作フィルタは指定ファイル内容で置換されます。よろしいですか?">
+<!ENTITY restore.minVersion.warning "警告:このファイルは新しいバージョンの Adblock Plus で作成されています。まず先に Adblock Plus を最新版に更新して下さい。">
+<!ENTITY find.label "検索">
+<!ENTITY find.accesskey "n">
+<!ENTITY close.label "閉じる">
diff --git a/chrome/adblockplus.jar!/locale/ja/firstRun.dtd b/chrome/adblockplus.jar!/locale/ja/firstRun.dtd
new file mode 100644
index 0000000..cda4400
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ja/firstRun.dtd
@@ -0,0 +1,9 @@
+<!ENTITY dialog.title "Adblock Plus のインストール完了">
+<!ENTITY confirmation "Adblock Plus をインストール頂きありがとうございます。今から広告はブロックされます。Enjoy!">
+<!ENTITY advancedSection "詳細設定">
+<!ENTITY listSelection1 "広告をブロックするため設定されたフィルタリストは次の通り:">
+<!ENTITY noList "フィルタリストなし">
+<!ENTITY visitHomepage.label "リストのホームページを表示">
+<!ENTITY acceptableAds " Adblock Plus は控えめな広告を許可するよう設定されました。">
+<!ENTITY readMore.label "より詳細な情報">
+<!ENTITY listSelection2 "設定はいつでも [link]フィルタ設定[/link] で変更することができます。">
diff --git a/chrome/adblockplus.jar!/locale/ja/global.properties b/chrome/adblockplus.jar!/locale/ja/global.properties
index b39bddb..3250f12 100644
--- a/chrome/adblockplus.jar!/locale/ja/global.properties
+++ b/chrome/adblockplus.jar!/locale/ja/global.properties
@@ -4,50 +4,22 @@ action1_tooltip=クリックでブロック可能項目一覧の開/閉、中
 action2_tooltip=クリックで設定オープン、中クリックは有効/無効の切り替え
 action3_tooltip=クリックで Adblock Plus の有効/無効を切り替え
 disabled_tooltip=Adblock Plus 無効
-active_tooltip=Adblock Plus 有効(購読フィルタ:?1?/自作フィルタ:?2?)
+active_tooltip=Adblock Plus 有効(フィルタ購読:?1?/自作フィルタ:?2?)
 whitelisted_tooltip=Adblock Plus は現在のページで無効
 blocked_count_tooltip=ブロック中:?1?/ブロック可能:?2?
-blocked_count_addendum=(ホワイトリスト:?1?/非表示要素:?2?)
+blocked_count_addendum=(ホワイトリスト:?1?/非表示:?2?)
 no_blocking_suggestions=現在のページにブロック可能項目はありません
 whitelisted_page=Adblock Plus は現在のページで無効に設定されています
-whitelist_description=自分のホワイトリスト
-filterlist_description=自分のブロックフィルタ
-invalid_description=自分の不正なフィルタ
-elemhide_description=自分の非表示要素フィルタ
-subscription_description=購読フィルタ:
-subscription_wrong_version=全購読フィルタが動作するには Adblock Plus ?1? が必要です
-subscription_source=ソース:
-subscription_status=ステータス:
-subscription_status_autodownload=自動更新
-subscription_status_manualdownload=手動更新
-subscription_status_externaldownload=外部(他アドオン)更新
-subscription_status_lastdownload=更新日時:
-subscription_status_lastdownload_inprogress=ダウンロード中…
-subscription_status_lastdownload_unknown=不明
-remove_subscription_warning=本当にこの購読フィルタを削除しますか?
-import_filters_wrong_version=警告: 全フィルタが動作するには Adblock Plus ?1? が必要です。このリストをインポートする前に最新の Adblock Plus へ更新してください。
-import_filters_warning=インポートするフィルタを現在のフィルタと置換しますか? それとも最後に追記しますか?
-import_filters_title=フィルタをインポート
-export_filters_title=フィルタをエクスポート
-invalid_filters_file=不正な Adblock Plus フィルタファイル
-filters_write_error=フィルタのファイルへの書き込みに失敗しました。ファイルが書込み禁止になってないか、他のプログラムから使用されてないか確認してください。
-clearall_warning=本当にリストからすべてのフィルタを削除しますか?
-resethitcounts_warning=本当に全フィルタのヒット数をゼロにリセットしますか? 注意:この操作は元に戻すことができません。
-resethitcounts_selected_warning=本当に選択したフィルタのヒット数をゼロにリセットしますか? 注意:この操作は元に戻すことができません。
+newGroup_title=新フィルタグループ
+whitelistGroup_title=例外ルール
+blockingGroup_title=広告ブロックルール
+elemhideGroup_title=要素非表示ルール
+remove_subscription_warning=本当にこのフィルタ購読を削除しますか?
+clearStats_warning=全フィルタのヒット数をリセットし、ヒット数のカウントを無効化しますか?
 filter_regexp_tooltip=このフィルタは正規表現、もしくは最適化には短過ぎます。このようなフィルタが多過ぎるとブラウザが遅くなることがあります。
-filter_elemhide_duplicate_id=非表示要素の ID は一つしか指定できません
-filter_elemhide_nocriteria=非表示要素フィルタに必要な要素が正しく指定されていません
-subscription_notAdded_warning=購読フィルタを追加しませんでした。この場合、フィルタを手動で追加することになります。
-subscription_notAdded_warning_addendum=次に進みますか?
-subscription_invalid_location=購読フィルタの URL が無効、もしくは不正なファイル名です。
-synchronize_invalid_url=同期失敗:アドレス無効
-synchronize_connection_error=同期失敗:接続エラー
-synchronize_invalid_data=同期失敗:フィルタリスト無効
-synchronize_checksum_mismatch=同期失敗:チェックサム不一致
-synchronize_ok=同期成功
-overwrite=上書き
-append=追記
-new_filter_group_title=新しいフィルタ
+filter_elemhide_duplicate_id=要素を非表示にする ID の指定は1つだけです
+filter_elemhide_nocriteria=要素を非表示にする基準がありません
+subscription_invalid_location=フィルタ購読の URL が無効、もしくは不正なファイル名です。
 type_label_other=その他
 type_label_script=スクリプト
 type_label_image=画像
@@ -55,16 +27,13 @@ type_label_stylesheet=スタイルシート
 type_label_object=オブジェクト
 type_label_subdocument=フレーム
 type_label_document=ドキュメント
-type_label_elemhide=非表示要素
-type_label_xbl=XBL 関連
-type_label_ping=ping リンク
+type_label_elemhide=要素非表示
+type_label_popup=ポップアップ
 type_label_xmlhttprequest=XML リクエスト
 type_label_object_subrequest=オブジェクトのサブリクエスト
-type_label_dtd=DTD
 type_label_media=オーディオ/ビデオ
 type_label_font=フォント
 fennec_status_enabled=Adblock Plus 有効
 fennec_status_disabled=Adblock Plus 無効
 fennec_status_enabled_site=Adblock Plus は ?1? で有効
 fennec_status_disabled_site=Adblock Plus は ?1? で無効
-sync_engine_title=Adblock Plus データ
diff --git a/chrome/adblockplus.jar!/locale/ja/overlay.dtd b/chrome/adblockplus.jar!/locale/ja/overlay.dtd
index 357fd64..147dfb9 100644
--- a/chrome/adblockplus.jar!/locale/ja/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/ja/overlay.dtd
@@ -4,17 +4,16 @@
 <!ENTITY menuitem.label "Adblock Plus 設定">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus:ブロック可能項目">
 <!ENTITY context.image.label "Adblock Plus:画像をブロック">
 <!ENTITY context.object.label "Adblock Plus:オブジェクトをブロック">
 <!ENTITY context.frame.label "Adblock Plus:フレームをブロック">
 <!ENTITY context.media.label "Adblock Plus:ビデオ/オーディオをブロック">
 <!ENTITY context.removeWhitelist.label "Adblock Plus:このページで有効に戻す">
 <!ENTITY sidebar.title "このページでブロック可能な項目">
-<!ENTITY sendReport.label "このページの不具合を報告">
+<!ENTITY sendReport.label "このページでの不具合を報告">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "設定">
-<!ENTITY settings.accesskey "f">
+<!ENTITY filters.label "フィルタ設定">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "ブロック可能項目一覧を開く">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "ブロック可能項目一覧を閉じる">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "?1? で無効">
 <!ENTITY whitelist.page.label "このページのみで無効">
 <!ENTITY disable.label "全ページで無効">
-<!ENTITY recommend.label "Facebook で勧める">
+<!ENTITY options.label "オプション">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Adblock Plus に貢献する">
+<!ENTITY showintoolbar.label "ツールバーに表示">
+<!ENTITY showintoolbar.accesskey "b">
+<!ENTITY showinstatusbar.label "ステータスバーに表示">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "アドオンバーに表示">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Flash と Java でタブを表示">
+<!ENTITY objecttabs.accesskey "t">
+<!ENTITY hideplaceholders.label "ブロックされた要素の場所を非表示">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "フィルタのヒット数をカウント">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY sync.label "同期設定">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "ブロックする">
 <!ENTITY objecttab.tooltip "クリックして Adblock Plus でオブジェクトをブロック">
diff --git a/chrome/adblockplus.jar!/locale/ja/sendReport.dtd b/chrome/adblockplus.jar!/locale/ja/sendReport.dtd
index 4d6ce7e..ee8f041 100644
--- a/chrome/adblockplus.jar!/locale/ja/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/ja/sendReport.dtd
@@ -1,64 +1,64 @@
-<!ENTITY wizard.title "不具合レポート機能">
+<!ENTITY wizard.title "不具合レポーター">
 <!ENTITY privacyPolicy.label "プライバシー ポリシー">
-<!ENTITY dataCollector.heading "不具合レポート機能へようこそ">
+<!ENTITY dataCollector.heading "不具合レポーターへようこそ">
 <!ENTITY dataCollector.description "Adblock Plus が必要なデータを集めるまで、しばらくお待ちください">
 <!ENTITY typeSelector.heading "不具合種別を選択">
-<!ENTITY typeSelector.description "不具合レポートの提出に必要なステップを案内します。まず最初に、遭遇した不具合の種別を選択してください:">
-<!ENTITY typeSelector.falsePositive.label "Adblock Plus のブロックし過ぎ">
+<!ENTITY typeSelector.description "不具合の報告に必要なステップを案内します。まず最初に、遭遇した不具合の種別を選択してください:">
+<!ENTITY typeSelector.falsePositive.label "Adblock Plus のブロックが過剰">
 <!ENTITY typeSelector.falsePositive.accesskey "m">
-<!ENTITY typeSelector.falsePositive.description "あるべきコンテンツがない、表示が不適切、あるいはフィルタが正しく機能していない場合はこのオプションを選択してください。一時的に Adblock Plus を無効にしてみることで、原因が Adblock Plus にあるかどうか確かめることができます。">
+<!ENTITY typeSelector.falsePositive.description "あるべきコンテンツがない、表示が不適切、もしくはフィルタが正しく機能していない場合はこのオプションを選択してください。一時的に Adblock Plus を無効にしてみることで、原因が Adblock Plus かどうか確かめることができます。">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus が広告をブロックしていない">
 <!ENTITY typeSelector.falseNegative.accesskey "v">
 <!ENTITY typeSelector.falseNegative.description "Adblock Plus が有効でも広告が表示される場合、このオプションを選択">
 <!ENTITY typeSelector.other.label "その他の不具合">
 <!ENTITY typeSelector.other.accesskey "t">
-<!ENTITY typeSelector.other.description "フィルタではなく Adblock Plus 自体の不具合が疑われる場合、このオプションを選択">
+<!ENTITY typeSelector.other.description "フィルタではなく Adblock Plus 自体の不具合が疑われる場合はこのオプションを選択">
 <!ENTITY showRecentReports.label "最近送信したレポートを表示">
 <!ENTITY recentReports.label "最近送信したレポート">
 <!ENTITY recentReports.clear.label "すべてのレポートを削除">
 <!ENTITY recentReports.clear.accesskey "R">
-<!ENTITY issues.description "Adblock Plus はこの不具合に関係する、もしくは調査を困難にする設定を発見しました">
-<!ENTITY issues.whitelist.description "報告しようとしているページで Adblock Plus が無効になっています。不具合調査を支援するためには Adblock Plus を有効に戻し、再読み込みしてからレポートを提出してください。">
+<!ENTITY issues.description "Adblock Plus はこの不具合に関係、もしくは調査を困難にしている設定を発見しました">
+<!ENTITY issues.whitelist.description "報告しようとしているページで Adblock Plus が無効になっています。調査の妨げになるので Adblock Plus を有効に戻し、再読み込みしてからレポートを提出してください。">
 <!ENTITY issues.whitelist.remove.label "このページで Adblock Plus を有効に戻す">
 <!ENTITY issues.disabled.description "Adblock Plus が無効なので、何もブロックされません">
-<!ENTITY issues.disabled.enable.label "Adblock Plus を有効にする">
+<!ENTITY issues.disabled.enable.label "Adblock Plus を有効化">
 <!ENTITY issues.nofilters.description "Adblock Plus は現在のページで何もブロックしていないので、お気付きの不具合は恐らく Adblock Plus と関係ありません">
-<!ENTITY issues.nosubscriptions.description "ウェブサイトの不要なコンテンツを自動削除する購読フィルタを、まだ購読されていないようです">
-<!ENTITY issues.nosubscriptions.add.label "購読フィルタを追加">
-<!ENTITY issues.subscriptionCount.description "購読フィルタが多過ぎです。どの購読フィルタ作者がこの不具合に対処すべきか不明なので、レポートを受理できません。本当に必要な購読フィルタ以外を削除し、不具合が再現するか確認してください。">
+<!ENTITY issues.nosubscriptions.description "ウェブサイトの不要なコンテンツを自動削除する既存のフィルタリストを購読していないようです">
+<!ENTITY issues.nosubscriptions.add.label "フィルタ購読を追加">
+<!ENTITY issues.subscriptionCount.description "フィルタ購読が多過ぎです。どのフィルタ購読作者がこの不具合に対処すべきか不明なので、レポートを受理できません。本当に必要なフィルタ購読以外を削除し、不具合が再現するか確認してください。">
 <!ENTITY issues.openPreferences.label "設定画面">
-<!ENTITY issues.ownfilters.description "このページに適用されているフィルタに自作フィルタが含まれています。それらフィルタが不具合を起こしている可能性があるので無効にしてください:">
-<!ENTITY issues.ownfilters.disable.label "フィルタを無効にする">
-<!ENTITY issues.disabledgroups.description "次の購読フィルタ/グループフィルタは無効になっていますが、このページに影響があったかもしれません:">
-<!ENTITY issues.disabledgroups.enable.label "購読フィルタ/グループフィルタを有効にする">
+<!ENTITY issues.ownfilters.description "このページには自作フィルタが適用されています。それら不具合を起こした可能性があるフィルタを無効にしてください:">
+<!ENTITY issues.ownfilters.disable.label "フィルタを無効化">
+<!ENTITY issues.disabledgroups.description "次のフィルタ購読/フィルタグループは無効になっていますが、このページに影響があったかもしれません:">
+<!ENTITY issues.disabledgroups.enable.label "フィルタ購読/フィルタグループを有効化">
 <!ENTITY issues.disabledfilters.description "次のフィルタは無効になっていますが、このページに影響があったかもしれません:">
-<!ENTITY issues.disabledfilters.enable.label "フィルタを有効にする">
-<!ENTITY issues.override.label "設定は正しいので、レポート作成を継続します">
+<!ENTITY issues.disabledfilters.enable.label "フィルタを有効化">
+<!ENTITY issues.override.label "設定は正しいので、レポートを継続します">
 <!ENTITY issues.override.accesskey "c">
 <!ENTITY issues.change.description "設定が変更されました。変更を確認する為にページを再読み込みし、もし不具合が解決しなければレポートを提出してください">
-<!ENTITY typeWarning.description "フィルタについてではなく Adblock Plus 全般の不具合を報告しようとしています。本来このような不具合は [link]Adblock Plus フォーラム[/link] で報告すべきです。また、不具合レポートへのリンクは(自ら提供しない限り)誰も気付けないので、議論を補完するためだけに使用してください。レポートへのリンクは送信後に自動生成されます。">
-<!ENTITY typeWarning.override.label "理解した上で、レポートを提出する">
+<!ENTITY typeWarning.description "フィルタについてではなく Adblock Plus 全般の不具合をレポートしようとしています。本来このような不具合は [link]Adblock Plus フォーラム[/link] でレポートすべきです。また、不具合レポートへのリンクを自ら提供しない限り誰もあなたのレポートに気付かないので、既存の議論を補完するためだけに使用してください。レポートへのリンクはレポート送信後に自動生成されます。">
+<!ENTITY typeWarning.override.label "理解した上で、レポートを提出したい">
 <!ENTITY typeWarning.override.accesskey "s">
 <!ENTITY reloadButton.label "ページを再読み込みする">
 <!ENTITY reloadButton.accesskey "R">
 <!ENTITY screenshot.heading "スクリーンショットを添付">
-<!ENTITY screenshot.description "同じページでも別の人には異なって表示されることがあるので、スクリーンショットは不具合の把握に役立つちます。対応ボタンをクリックしてからスクリーンショット上でドラッグすることによって不具合発生箇所を気付かせるような印をつけたり、個人情報を隠したりすることもできます。">
+<!ENTITY screenshot.description "同じページでも別の人には異なって表示されることがあるので、スクリーンショットは不具合の把握に役立つちます。ボタンをクリックし、スクリーンショット上でドラッグすることにより、不具合箇所に印をつけたり個人情報を隠したりすることができます。">
 <!ENTITY screenshot.attach.label "レポートにページのスクリーンショットを添付">
 <!ENTITY screenshot.attach.accesskey "t">
-<!ENTITY screenshot.mark.label "不具合が発生している場所を印をつけて特定">
+<!ENTITY screenshot.mark.label "不具合に印をつける">
 <!ENTITY screenshot.mark.accesskey "M">
 <!ENTITY screenshot.remove.label "個人情報を隠す">
 <!ENTITY screenshot.remove.accesskey "R">
 <!ENTITY screenshot.undo.label "元に戻す">
 <!ENTITY screenshot.undo.accesskey "U">
 <!ENTITY commentPage.heading "コメントを入力">
-<!ENTITY commentPage.description "購読フィルタ作者が不具合を把握できるよう説明してください。送信前にレポートのデータを再検討することもできます。">
-<!ENTITY comment.label "コメント(「ABP Japanese Filter」利用者は必ず入力、それ以外はオプション):">
+<!ENTITY commentPage.description "不具合について説明してください(症状:再現条件:どうしたいか:自分で試行錯誤した結果)。送信前にレポートのデータを再検討できます。">
+<!ENTITY comment.label "コメント(オプション):">
 <!ENTITY comment.accesskey "C">
 <!ENTITY comment.lengthWarning "コメントが 1000 文字を超えているので先頭から 1000 文字だけ送信されます">
 <!ENTITY email.label "より詳細な質問が必要な場合に使うメールアドレス(オプション):">
 <!ENTITY email.accesskey "m">
-<!ENTITY attachExtensions.label "原因がアドオンの衝突にある場合の為に、有効なアドオンのリストをレポートに添付">
+<!ENTITY attachExtensions.label "原因がアドオンの衝突である場合に備え、動作中アドオンのリストをレポートに添付">
 <!ENTITY attachExtensions.accesskey "x">
 <!ENTITY sendButton.label "レポートを送信">
 <!ENTITY sendButton.accesskey "n">
diff --git a/chrome/adblockplus.jar!/locale/ja/settings.dtd b/chrome/adblockplus.jar!/locale/ja/settings.dtd
deleted file mode 100644
index 8e34ca7..0000000
--- a/chrome/adblockplus.jar!/locale/ja/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus 設定">
-<!ENTITY filters.label "フィルタ">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "フィルタを追加">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "購読フィルタを追加">
-<!ENTITY addsubscription.accesskey "s">
-<!ENTITY synchsubscriptions.label "全購読フィルタを更新">
-<!ENTITY synchsubscriptions.accesskey "d">
-<!ENTITY import.label "フィルタをインポート">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "フィルタをエクスポート">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "全ての自作フィルタを削除">
-<!ENTITY clearall.accesskey "l">
-<!ENTITY resethitcounts.label "ヒット数をリセット">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "編集">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "切り取り">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "コピー">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "貼り付け">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "削除">
-<!ENTITY remove.accesskey "D">
-<!ENTITY menu.find.label "検索">
-<!ENTITY menu.find.accesskey "F">
-<!ENTITY menu.findagain.label "再検索">
-<!ENTITY menu.findagain.accesskey "g">
-<!ENTITY view.label "表示">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "ソート">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "ソートなし">
-<!ENTITY sort.none.accesskey "U">
-<!ENTITY sort.ascending.label "A > Z 順にソート">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A 順にソート">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "オプション">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Adblock Plus を有効にする">
-<!ENTITY enable.accesskey "n">
-<!ENTITY showintoolbar.label "ツールバーに表示">
-<!ENTITY showintoolbar.accesskey "b">
-<!ENTITY showinstatusbar.label "ステータスバーに表示">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Flash と Java でタブを表示">
-<!ENTITY objecttabs.accesskey "t">
-<!ENTITY collapse.label "ブロック後の空きスペースを残さずに詰める">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Adblock Plus の設定を同期する">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "ヘルプ">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "開始">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "よくある質問と回答(FAQ)">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Adblock Plus フィルタ記述ガイド">
-<!ENTITY filterdoc.accesskey "r">
-<!ENTITY about.label "Adblock Plus について">
-<!ENTITY about.accesskey "b">
-<!ENTITY description "以下のフィルタでブロック対象を定義します:">
-<!ENTITY filter.column "フィルタのルール">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "低速フィルタ">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "有効">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "ヒット数">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "最終ヒット日時">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "フィルタ編集">
-<!ENTITY context.resethitcount.label "このフィルタのヒット数をリセット">
-<!ENTITY context.synchsubscription.label "今すぐ購読フィルタを更新">
-<!ENTITY context.editsubscription.label "購読フィルタ設定">
-<!ENTITY context.moveup.label "上へ">
-<!ENTITY context.movedown.label "下へ">
-<!ENTITY context.movegroupup.label "上のグループへ">
-<!ENTITY context.movegroupdown.label "下のグループへ">
-<!ENTITY context.enable.label "有効">
-<!ENTITY context.disable.label "無効">
-<!ENTITY apply.label "適用">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "購読フィルタ">
diff --git a/chrome/adblockplus.jar!/locale/ja/sidebar.dtd b/chrome/adblockplus.jar!/locale/ja/sidebar.dtd
index 9b2dfa0..aa11682 100644
--- a/chrome/adblockplus.jar!/locale/ja/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/ja/sidebar.dtd
@@ -1,4 +1,4 @@
-<!ENTITY detached.title "Adblock Plus:ブロック項目(別ウィンドウ)">
+<!ENTITY detached.title "Adblock Plus:ブロック可能項目一覧(別ウィンドウ表示)">
 <!ENTITY detach.label "別ウィンドウ表示">
 <!ENTITY reattach.label "ウィンドウ内表示">
 <!ENTITY search.label "検索:">
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "フィルタ">
 <!ENTITY state.label "状態">
 <!ENTITY size.label "サイズ">
+<!ENTITY filterSource.label "フィルタのソース">
 <!ENTITY docDomain.label "ドキュメントのソース">
 <!ENTITY docDomain.thirdParty "(サードパーティ)">
 <!ENTITY docDomain.firstParty "(ファーストパーティ)">
@@ -25,9 +26,9 @@
 <!ENTITY context.block.label "この項目をブロック">
 <!ENTITY context.editfilter.label "フィルタを編集">
 <!ENTITY context.whitelist.label "ホワイトリストに追加">
-<!ENTITY context.disablefilter.label "フィルタ ?1? を無効にする">
-<!ENTITY context.enablefilter.label "再度フィルタ ?1? を有効にする">
-<!ENTITY context.disablefilteronsite.label "フィルタを ?1? で無効にする">
+<!ENTITY context.disablefilter.label "フィルタ ?1? を無効化">
+<!ENTITY context.enablefilter.label "再度フィルタ ?1? を有効化">
+<!ENTITY context.disablefilteronsite.label "フィルタを ?1? で無効化">
 <!ENTITY context.open.label "新規タブで開く">
 <!ENTITY context.flash.label "ボーダーを点滅">
 <!ENTITY context.copy.label "アドレスのコピー">
diff --git a/chrome/adblockplus.jar!/locale/ja/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ja/subscriptionSelection.dtd
index 747a1ac..3c1ff66 100644
--- a/chrome/adblockplus.jar!/locale/ja/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/ja/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
-<!ENTITY dialog.title "購読フィルタを追加">
-<!ENTITY dialog.title.edit "購読フィルタを編集">
-<!ENTITY description.newInstall "他の Adblock Plus ユーザが無償提供している購読フィルタを追加すると、更に効果的に使うことができます。使用言語に適した購読フィルタは既に選択されています。">
-<!ENTITY subscriptionSelector.label "リストから購読フィルタを選択してください:">
+<!ENTITY dialog.title "フィルタ購読を追加">
+<!ENTITY subscriptionSelector.label "リストからフィルタ購読を選択してください:">
 <!ENTITY viewList.label "フィルタ内容を見る">
-<!ENTITY visitHomepage.label "ホームページに移動">
-<!ENTITY addSubscription.label "購読フィルタを追加">
-<!ENTITY saveSubscription.label "購読フィルタを保存">
-<!ENTITY other.label "他の購読フィルタを追加">
-<!ENTITY other.accesskey "f">
-<!ENTITY list.download.failed "購読フィルタのダウンロードに失敗">
+<!ENTITY visitHomepage.label "ホームページを表示">
+<!ENTITY addSubscription.label "フィルタ購読を追加">
+<!ENTITY list.download.failed "フィルタ購読のダウンロードに失敗">
 <!ENTITY list.download.retry "再試行">
-<!ENTITY list.download.website "ウェブサイトで見る">
-<!ENTITY fromWeb.description "追加する購読フィルタを確認してください。購読フィルタの名前と場所は変更できます。">
-<!ENTITY edit.description "必要に応じて購読フィルタの名前と場所を変更可能です">
-<!ENTITY external.description "外部の購読フィルタです。この購読フィルタを作成した外部アドオンにより更新されます">
-<!ENTITY title.label "購読フィルタ名:">
+<!ENTITY list.download.website "ウェブサイトを見る">
+<!ENTITY fromWeb.description "追加するフィルタ購読を確認してください。フィルタ購読の名前と場所は変更できます。">
+<!ENTITY title.label "フィルタ購読の名称:">
 <!ENTITY title.accesskey "t">
-<!ENTITY location.label "購読フィルタの場所:">
+<!ENTITY location.label "フィルタ購読の場所:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "自動更新する">
-<!ENTITY autodownload.accesskey "p">
-<!ENTITY supplementMessage "この購読フィルタは "?1?" と併用することが前提になっています。">
+<!ENTITY supplementMessage "このフィルタ購読は "?1?" と併用することが前提になっています。">
 <!ENTITY addMain.label ""?1?" も追加する">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/ka-GE/about.dtd b/chrome/adblockplus.jar!/locale/ka-GE/about.dtd
new file mode 100644
index 0000000..8e0df41
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ka-GE/about.dtd
@@ -0,0 +1,12 @@
+<!ENTITY dialog.title "Adblock Plus-ის შესახებ">
+<!ENTITY version.title "ვერსია">
+<!ENTITY author.label "ავტორი:">
+<!ENTITY translators.label "Translators:">
+<!ENTITY description "
+  Adblock Plus allows you to decide what you want to see on the web.
+  You don't need to download adverts and banners any more; if you
+  don't want them - remove them with Adblock Plus!
+">
+<!ENTITY contributors.label "Contributors:">
+<!ENTITY subscriptionAuthors.label "Filter subscription authors:">
+<!ENTITY homepage.label "Adblock Plus homepage:">
diff --git a/chrome/adblockplus.jar!/locale/en-US/composer.dtd b/chrome/adblockplus.jar!/locale/ka-GE/composer.dtd
similarity index 100%
copy from chrome/adblockplus.jar!/locale/en-US/composer.dtd
copy to chrome/adblockplus.jar!/locale/ka-GE/composer.dtd
diff --git a/chrome/adblockplus.jar!/locale/ka-GE/filters.dtd b/chrome/adblockplus.jar!/locale/ka-GE/filters.dtd
new file mode 100644
index 0000000..0ceed1e
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ka-GE/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addFilter.label "ფილტრის დამატება">
+<!ENTITY lasthit.column "Last hit">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY hitcount.column "Hits">
+<!ENTITY close.label "Close">
+<!ENTITY sort.none.label "Unsorted">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY sort.descending.label "Z > A sort order">
+<!ENTITY subscription.lastDownload.success "Success">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY slow.column "Slow filters">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY sort.accesskey "S">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY filter.paste.label "Paste">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY filter.delete.label "Delete">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY slow.accesskey "w">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY filter.column "Filter rule">
+<!ENTITY subscription.lastDownload.checksumMismatch "Failed, checksum mismatch">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY sort.label "Sort by">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY filter.accesskey "F">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY subscription.lastDownload.inProgress "Downloading…">
+<!ENTITY enabled.column "Enabled">
+<!ENTITY viewMenu.label "View">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY subscription.lastDownload.invalidURL "Failed, not a valid address">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY filter.cut.label "Cut">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY find.label "Find">
+<!ENTITY subscription.lastDownload.connectionError "Failed, download failure">
+<!ENTITY subscription.lastDownload.invalidData "Failed, not a valid filters list">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY sort.ascending.label "A > Z sort order">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY addSubscriptionOther.label "Add a different subscription">
+<!ENTITY filter.copy.label "Copy">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY addSubscription.label "Add filter subscription">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
+<!ENTITY subscription.lastDownload.label "Last download:">
diff --git a/chrome/adblockplus.jar!/locale/ka-GE/firstRun.dtd b/chrome/adblockplus.jar!/locale/ka-GE/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ka-GE/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/ka-GE/global.properties b/chrome/adblockplus.jar!/locale/ka-GE/global.properties
new file mode 100644
index 0000000..e3fed8b
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ka-GE/global.properties
@@ -0,0 +1,55 @@
+default_dialog_title=Adblock Plus
+
+action0_tooltip=Click to bring up context menu, middle-click to enable/disable.
+action1_tooltip=Click to open/close blockable items, middle-click to enable/disable.
+action2_tooltip=Click to open preferences, middle-click to enable/disable.
+action3_tooltip=Click to enable/disable Adblock Plus.
+
+disabled_tooltip=Adblock Plus is disabled.
+# Note: the placeholder ?1? will be replaced by the number of active filter subscriptions, the placeholder ?2? by the number of custom filters
+active_tooltip=Adblock Plus is enabled, ?1? filter subscription(s) and ?2? custom filter(s) in use.
+whitelisted_tooltip=Adblock Plus is disabled on current page.
+
+# Note: the placeholder ?1? will be replaced by the number of blocked items, the placeholder ?2? by the total number of items on current page
+blocked_count_tooltip=?1? out of ?2?
+# Note: the placeholder ?1? will be replaced by the number of whitelisted items, the placeholder ?2? by the number of hidden items on current page
+blocked_count_addendum=(also whitelisted: ?1?, hidden: ?2?)
+
+no_blocking_suggestions=No blockable items on the current page
+whitelisted_page=Adblock Plus has been disabled for the current page
+
+newGroup_title=New filter group
+whitelistGroup_title=Exception Rules
+blockingGroup_title=Ad Blocking Rules
+elemhideGroup_title=Element Hiding Rules
+
+remove_subscription_warning=Do you really want to remove this subscription?
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+
+filter_regexp_tooltip=This filter is either a regular expression or too short to be optimized. Too many of these filters might slow down your browsing.
+filter_elemhide_duplicate_id=Only one ID of the element to be hidden can be specified
+filter_elemhide_nocriteria=No criteria specified to recognize the element to be hidden
+
+subscription_invalid_location=Filter list location is neither a valid URL nor a valid file name.
+
+type_label_other=other
+type_label_script=script
+type_label_image=image
+type_label_stylesheet=stylesheet
+type_label_object=object
+type_label_subdocument=frame
+type_label_document=document
+type_label_elemhide=hidden
+type_label_popup=pop-up window
+
+type_label_xmlhttprequest=XML request
+type_label_object_subrequest=object subrequest
+type_label_media=audio/video
+type_label_font=font
+
+fennec_status_enabled=Adblock Plus is enabled.
+fennec_status_disabled=Adblock Plus is disabled.
+# Note: the placeholder ?1? will be replaced by the site name
+fennec_status_enabled_site=Adblock Plus is enabled on ?1?.
+# Note: the placeholder ?1? will be replaced by the site name
+fennec_status_disabled_site=Adblock Plus is disabled on ?1?.
diff --git a/chrome/adblockplus.jar!/locale/ka-GE/overlay.dtd b/chrome/adblockplus.jar!/locale/ka-GE/overlay.dtd
new file mode 100644
index 0000000..1d3eb57
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ka-GE/overlay.dtd
@@ -0,0 +1,51 @@
+<!ENTITY status.tooltip         "Status:">
+<!ENTITY blocked.tooltip        "Blocked items on this page:">
+<!ENTITY filters.tooltip        "Most active filters:">
+
+<!ENTITY menuitem.label         "Adblock Plus Preferences">
+<!ENTITY menuitem.accesskey     "b">
+<!ENTITY toolbarbutton.label    "Adblock Plus">
+
+<!ENTITY context.image.label    "Adblock Plus: Block image">
+<!ENTITY context.object.label   "Adblock Plus: Block object">
+<!ENTITY context.frame.label    "Adblock Plus: Block frame">
+<!ENTITY context.media.label    "Adblock Plus: Block audio/video">
+<!ENTITY context.removeWhitelist.label  "Adblock Plus: Re-enable on this page">
+
+<!ENTITY sidebar.title          "Blockable items on current page">
+
+<!ENTITY sendReport.label       "Report issue on this page">
+<!ENTITY sendReport.accesskey   "R">
+<!ENTITY filters.label          "Filter preferences">
+<!ENTITY filters.accesskey      "F">
+<!ENTITY opensidebar.label      "Open blockable items">
+<!-- Note: This access key should usually be the same as closesidebar.accesskey. It is the same menu item with different label depending on whether the sidebar is currently open.-->
+<!ENTITY opensidebar.accesskey  "b">
+<!ENTITY closesidebar.label     "Close blockable items">
+<!-- Note: This access key should usually be the same as opensidebar.accesskey. It is the same menu item with different label depending on whether the sidebar is currently open.-->
+<!ENTITY closesidebar.accesskey "b">
+<!-- Note: the placeholder ?1? will be replaced by the domain name of the current page -->
+<!ENTITY whitelist.site.label   "Disable on ?1?">
+<!ENTITY whitelist.page.label   "Disable on this page only">
+<!ENTITY disable.label          "Disable everywhere">
+<!ENTITY options.label          "Options">
+<!ENTITY options.accesskey      "O">
+<!ENTITY contribute.label       "Contribute to Adblock Plus">
+
+<!ENTITY showintoolbar.label        "Show in toolbar">
+<!ENTITY showintoolbar.accesskey    "b">
+<!ENTITY showinstatusbar.label      "Show in status bar">
+<!ENTITY showinstatusbar.accesskey  "s">
+<!ENTITY showinaddonbar.label       "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey   "b">
+<!ENTITY objecttabs.label           "Show tabs on Flash and Java">
+<!ENTITY objecttabs.accesskey       "t">
+<!ENTITY hideplaceholders.label     "Hide placeholders of blocked elements">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label            "Count filter hits">
+<!ENTITY counthits.accesskey        "h">
+<!ENTITY sync.label                 "Sync Adblock Plus settings">
+<!ENTITY sync.accesskey             "c">
+
+<!ENTITY objecttab.title        "Block">
+<!ENTITY objecttab.tooltip      "Click here to block this object with Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/hr/sendReport.dtd b/chrome/adblockplus.jar!/locale/ka-GE/sendReport.dtd
similarity index 100%
copy from chrome/adblockplus.jar!/locale/hr/sendReport.dtd
copy to chrome/adblockplus.jar!/locale/ka-GE/sendReport.dtd
diff --git a/chrome/adblockplus.jar!/locale/ka-GE/sidebar.dtd b/chrome/adblockplus.jar!/locale/ka-GE/sidebar.dtd
new file mode 100644
index 0000000..33996b5
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ka-GE/sidebar.dtd
@@ -0,0 +1,42 @@
+<!ENTITY detached.title           "Adblock Plus: Blockable items (detached)">
+
+<!ENTITY detach.label             "Detach">
+<!ENTITY reattach.label           "Reattach">
+
+<!ENTITY search.label             "Search:">
+<!ENTITY search.accesskey         "S">
+<!ENTITY type.label               "Type">
+<!ENTITY address.label            "Address">
+<!ENTITY filter.label             "Filter">
+<!ENTITY state.label              "State">
+<!ENTITY size.label               "Size">
+<!ENTITY filterSource.label       "Filter source">
+<!ENTITY docDomain.label          "Document source">
+<!ENTITY docDomain.thirdParty     "(third party)">
+<!ENTITY docDomain.firstParty     "(first party)">
+<!ENTITY noitems.label            "No blockable items">
+<!ENTITY whitelisted.label        "Whitelisted page">
+<!ENTITY tooltip.address.label    "Address:">
+<!ENTITY tooltip.type.label       "Type:">
+<!ENTITY tooltip.type.blocked     "(blocked)">
+<!ENTITY tooltip.type.whitelisted "(whitelisted)">
+<!ENTITY tooltip.size.label       "Size:">
+<!ENTITY tooltip.docDomain.label  "Document source:">
+<!ENTITY tooltip.filter.label     "Filter in effect:">
+<!ENTITY tooltip.filter.disabled  "(disabled)">
+<!ENTITY tooltip.filterSource.label "Filter source:">
+
+<!ENTITY context.block.label      "Block this item">
+<!ENTITY context.editfilter.label "Edit filter in effect">
+<!ENTITY context.whitelist.label  "Add exception rule for item">
+<!-- Note: the placeholder ?1? will be replaced by the filter text -->
+<!ENTITY context.disablefilter.label  "Disable filter ?1?">
+<!-- Note: the placeholder ?1? will be replaced by the filter text -->
+<!ENTITY context.enablefilter.label   "Re-enable filter ?1?">
+<!-- Note: the placeholder ?1? will be replaced by the domain name of the current page -->
+<!ENTITY context.disablefilteronsite.label  "Disable this filter on ?1?">
+<!ENTITY context.open.label       "Open in New Tab">
+<!ENTITY context.flash.label      "Flash item's borders">
+<!ENTITY context.copy.label       "Copy item's address">
+<!ENTITY context.copyFilter.label "Copy filter">
+<!ENTITY context.selectAll.label  "Select all">
diff --git a/chrome/adblockplus.jar!/locale/ka-GE/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ka-GE/subscriptionSelection.dtd
new file mode 100644
index 0000000..082e5a7
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ka-GE/subscriptionSelection.dtd
@@ -0,0 +1,25 @@
+<!ENTITY dialog.title               "Add Adblock Plus filter subscription">
+
+<!ENTITY subscriptionSelector.label "Please choose a filter subscription from the list:">
+
+<!ENTITY viewList.label             "View filters">
+<!ENTITY visitHomepage.label        "Visit home page">
+
+<!ENTITY addSubscription.label      "Add subscription">
+
+<!ENTITY list.download.failed       "Adblock Plus failed to retrieve the list of subscriptions.">
+<!ENTITY list.download.retry        "Try again">
+<!ENTITY list.download.website      "View website">
+
+<!ENTITY fromWeb.description        "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it.">
+
+<!ENTITY title.label                "Subscription title:">
+<!ENTITY title.accesskey            "t">
+<!ENTITY location.label             "Filter list location:">
+<!ENTITY location.accesskey         "l">
+
+<!-- Note: the placeholder (?1?) will be replaced by the name of the filter subscription required -->
+<!ENTITY supplementMessage          "This filter subscription is meant to be used with the filter subscription "?1?" which you are not using yet.">
+<!-- Note: the placeholder (?1?) will be replaced by the name of the filter subscription required -->
+<!ENTITY addMain.label              "Add filter subscription "?1?" as well">
+<!ENTITY addMain.accesskey          "s">
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/about.dtd b/chrome/adblockplus.jar!/locale/kk-KZ/about.dtd
index 8a8fd75..980ff3a 100644
--- a/chrome/adblockplus.jar!/locale/kk-KZ/about.dtd
+++ b/chrome/adblockplus.jar!/locale/kk-KZ/about.dtd
@@ -1,8 +1,6 @@
 <!ENTITY dialog.title "Adblock Plus туралы">
 <!ENTITY version.title "Нұсқасы">
-<!ENTITY description "Adblock Plus көмегімен сіз Интернеттен тек өзіңіз көргіңіз келетін
-	ақпаратты таңдайсыз. Жарнамалық баннерлердің керегі не? Оларды
-	жүктеуге уақыт кетірмеңіз - Adblock Plus сізге көмектеседі!">
+<!ENTITY description "Adblock Plus көмегімен сіз Интернеттен тек өзіңіз көргіңіз келетінnnn	ақпаратты таңдайсыз. Жарнамалық баннерлердің керегі не? Олардыnn	жүктеуге уақыт кетірмеңіз - Adblock Plus сізге көмектеседі!">
 <!ENTITY homepage.label "Adblock Plus үй парағы:">
 <!ENTITY author.label "Авторы:">
 <!ENTITY contributors.label "Үлес қосушылар:">
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/filters.dtd b/chrome/adblockplus.jar!/locale/kk-KZ/filters.dtd
new file mode 100644
index 0000000..908a248
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/kk-KZ/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Фильтрге жазылуды қосу">
+<!ENTITY addSubscriptionOther.label "Басқа жазылуды қосу">
+<!ENTITY subscription.lastDownload.label "Соңғы жаңарту:">
+<!ENTITY subscription.lastDownload.inProgress "Жүктелуде...">
+<!ENTITY subscription.lastDownload.unknown "Ешқашан">
+<!ENTITY subscription.lastDownload.invalidURL "Қате, дұрыс адрес емес">
+<!ENTITY subscription.lastDownload.connectionError "Қате, жүктеу мүмкін емес">
+<!ENTITY subscription.lastDownload.invalidData "Қате, дұрыс сүзгілер файлы емес">
+<!ENTITY subscription.lastDownload.checksumMismatch "Қате, тексеру сомасы сәйкес емес">
+<!ENTITY subscription.lastDownload.success "Сәтті аяқталды">
+<!ENTITY addFilter.label "Фильтрді қосу">
+<!ENTITY filter.cut.label "Қию">
+<!ENTITY filter.copy.label "Көшіру">
+<!ENTITY filter.paste.label "Кірістіру">
+<!ENTITY filter.delete.label "Жою">
+<!ENTITY viewMenu.label "Түрі">
+<!ENTITY filter.column "Фильтр ережесі:">
+<!ENTITY filter.accesskey "е">
+<!ENTITY slow.column "Баяу фильтрлер">
+<!ENTITY slow.accesskey "ь">
+<!ENTITY enabled.column "Қосулы">
+<!ENTITY enabled.accesskey "л">
+<!ENTITY hitcount.column "Хиттер">
+<!ENTITY hitcount.accesskey "и">
+<!ENTITY lasthit.column "Соңғы хит">
+<!ENTITY lasthit.accesskey "ы">
+<!ENTITY sort.label "Сұрыптау">
+<!ENTITY sort.accesskey "с">
+<!ENTITY sort.none.label "Сұрыптаусыз">
+<!ENTITY sort.none.accesskey "з">
+<!ENTITY sort.ascending.label "А > Я сұрыптау">
+<!ENTITY sort.ascending.accesskey "а">
+<!ENTITY sort.descending.label "Я > А сұрыптау">
+<!ENTITY sort.descending.accesskey "я">
+<!ENTITY find.label "Іздеу">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/firstRun.dtd b/chrome/adblockplus.jar!/locale/kk-KZ/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/kk-KZ/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/global.properties b/chrome/adblockplus.jar!/locale/kk-KZ/global.properties
index 694ec93..66043a9 100644
--- a/chrome/adblockplus.jar!/locale/kk-KZ/global.properties
+++ b/chrome/adblockplus.jar!/locale/kk-KZ/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? келесіден ?2?
 blocked_count_addendum=(сүзгіден тыс: ?1?, жасырын: ?2?)
 no_blocking_suggestions=Ағымдағы парақта блоктауға болатын құрама жоқ
 whitelisted_page=Adblock Plus ағымдағы парақ үшін сөндірулі тұр
-whitelist_description=Менің ерекше ережелерім
-filterlist_description=Менің Adblock Plus ережелерім
-invalid_description=Менің қате ережелерім
-elemhide_description=Менің құраманы жасыру ережелерім
-subscription_description=Сүзгіге жазылу:
-subscription_wrong_version=Осы жазылудағы кейбір сүзгілер Adblock Plus ?1? керек етеді - дұрыс жұмыс істеу үшін!
-subscription_source=Көзі:
-subscription_status=Күйі:
-subscription_status_autodownload=Автоматты жаңарту
-subscription_status_manualdownload=Қолмен жаңарту
-subscription_status_externaldownload=Басқа кеңейтумен жаңартылады
-subscription_status_lastdownload=Соңғы жаңарту:
-subscription_status_lastdownload_inprogress=Жүктелуде...
-subscription_status_lastdownload_unknown=Ешқашан
 remove_subscription_warning=Осы жазылуды өшіруды шынымен қалайсыз ба?
-import_filters_wrong_version=Ескерту: осы тізімдегі кейбір сүзгілер Adblock Plus ?1? керек етеді - дұрыс жұмыс істеу үшін! Осы тізімді қолдану алдында сіз Adblock Plus соңғы нұсқасына дейін жаңартуыңыз керек.
-import_filters_warning=Сіз өзіңіздің фильрлеріңізді ауыстыруды немесе жаңа сүзгілерді тізімнің соңына қосуды таңдайсыз ба?
-import_filters_title=Сүзгілерді импорттау
-export_filters_title=Сүзгілерді экспорттау
-invalid_filters_file=Дұрыс Adblock Plus сүзгілер файлы емес.
-filters_write_error=Сүзгілерді файлға жазу кезінде қате кетті. Файл тек жазі үшін емес күйінде емес екеніне және басқа бағдарлама оны ашып тұрмағанына көзіңізді жеткізіңіз.
-clearall_warning=Тізімдегі барлық сүзгілерді өшіруді шынымен қалайсыз ба?
-resethitcounts_warning=Барлық сүзгілер үшін хит статистикасын нөлге тастау керек пе? Бұны қайтаруға болмайды!
-resethitcounts_selected_warning=Ерекшеленген сүзгілер үшін хит статистикасын нөлге тастау керек пе? Бұны қайтаруға болмайды!
 filter_regexp_tooltip=Бұл сүзгі не регулярлы өрнек, не оптимизация үшін тым қысқа. Осындай сүзгілер көп болса, браузеріңіздің жұмысын тежеу мүмкін.
 filter_elemhide_duplicate_id=Жасыралатын элементтің идентификаторы тек біреу болу керек.
 filter_elemhide_nocriteria=Элементті жасыру үшін бірде-бір шарт анықталмады
-subscription_notAdded_warning=Сүзгілерге жазылған жоқсыз. Оларсыз Adblock Plus сүзгілерін қолмен енгізу керек болады.
-subscription_notAdded_warning_addendum=Жалғастыруды қалайсыз ба?
 subscription_invalid_location=Енгізілген адрес не интернет адресі, не файл мекен-жайы ретінде анықталмады.
-synchronize_invalid_url=Қате, дұрыс адрес емес
-synchronize_connection_error=Қате, жүктеу мүмкін емес
-synchronize_invalid_data=Қате, дұрыс сүзгілер файлы емес
-synchronize_checksum_mismatch=Қате, тексеру сомасы сәйкес емес
-synchronize_ok=Сәтті аяқталды
-overwrite=Үстінен жазу
-append=Соңынан қосу
-new_filter_group_title=Жаңа сүзгі
 type_label_other=Басқа
 type_label_script=Скрипт
 type_label_image=Сурет
@@ -56,15 +23,17 @@ type_label_object=Объект
 type_label_subdocument=Фрейм
 type_label_document=Құжат
 type_label_elemhide=Жасырын
-type_label_xbl=XBL биндинг
-type_label_ping=Сілтемені шерту
 type_label_xmlhttprequest=XML-сұранымы
 type_label_object_subrequest=Объект сұранымы
-type_label_dtd=DTD
 type_label_media=Аудио/видео
 type_label_font=қаріп
 fennec_status_enabled=Adblock Plus қосулы тұр.
 fennec_status_disabled=Adblock Plus сөндірулі тұр.
 fennec_status_enabled_site=Adblock Plus ?1? үшін қосулы тұр.
 fennec_status_disabled_site=Adblock Plus ?1? үшін сөндірулі тұр.
-sync_engine_title=Adblock Plus мәліметтері
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/overlay.dtd b/chrome/adblockplus.jar!/locale/kk-KZ/overlay.dtd
index eb9304a..e7723bd 100644
--- a/chrome/adblockplus.jar!/locale/kk-KZ/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/kk-KZ/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus баптаулары">
 <!ENTITY menuitem.accesskey "п">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Парақ құрамасы">
 <!ENTITY context.image.label "Adblock Plus: Суретті блоктау">
 <!ENTITY context.object.label "Adblock Plus: Объектті блоктау">
 <!ENTITY context.frame.label "Adblock Plus: Фреймді блоктау">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Ағымдағы парақ құрамасы">
 <!ENTITY sendReport.label "Бұл парақтағы мәселе туралы хабарлау">
 <!ENTITY sendReport.accesskey "х">
-<!ENTITY settings.label "Баптаулары">
-<!ENTITY settings.accesskey "т">
 <!ENTITY opensidebar.label "Блокталған құраманы ашу">
 <!ENTITY opensidebar.accesskey "у">
 <!ENTITY closesidebar.label "Блокталған құраманы жабу">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Келесі үшін сөндіру: ?1?">
 <!ENTITY whitelist.page.label "Тек осы парақ үшін сөндіру">
 <!ENTITY disable.label "Әр жерде сөндіру">
-<!ENTITY recommend.label "Бізді Facebook-те ұсыну">
+<!ENTITY options.label "Баптаулар">
+<!ENTITY options.accesskey "Б">
+<!ENTITY showintoolbar.label "Панельде көрсету">
+<!ENTITY showintoolbar.accesskey "П">
+<!ENTITY showinstatusbar.label "Қалып-күй жолағында көрсету">
+<!ENTITY showinstatusbar.accesskey "к">
+<!ENTITY objecttabs.label "Flash пен Java-ға сілтеме қалдыру">
+<!ENTITY objecttabs.accesskey "д">
+<!ENTITY sync.label "Adblock Plus баптауларын Sync ішіне қосу">
+<!ENTITY sync.accesskey "ш">
 <!ENTITY objecttab.title "Блоктау">
 <!ENTITY objecttab.tooltip "Adblock Plus көмегімен осы объектті блоктау үшін шертіңіз">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/settings.dtd b/chrome/adblockplus.jar!/locale/kk-KZ/settings.dtd
deleted file mode 100644
index 02fee26..0000000
--- a/chrome/adblockplus.jar!/locale/kk-KZ/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus баптаулары">
-<!ENTITY filters.label "Фильтрлер">
-<!ENTITY filters.accesskey "Ф">
-<!ENTITY add.label "Фильтрді қосу">
-<!ENTITY add.accesskey "у">
-<!ENTITY addsubscription.label "Фильтрге жазылуды қосу">
-<!ENTITY addsubscription.accesskey "с">
-<!ENTITY synchsubscriptions.label "Барлық жазылуларды жаңарту">
-<!ENTITY synchsubscriptions.accesskey "д">
-<!ENTITY import.label "Фильтрлерді импорттау">
-<!ENTITY import.accesskey "м">
-<!ENTITY export.label "Пайдаланушы фильтрлерін экспорттау">
-<!ENTITY export.accesskey "к">
-<!ENTITY clearall.label "Пайдаланушы фильтрлерін жою">
-<!ENTITY clearall.accesskey "л">
-<!ENTITY resethitcounts.label "Хит статистикасын тастау">
-<!ENTITY resethitcounts.accesskey "т">
-<!ENTITY edit.label "Түзету">
-<!ENTITY edit.accesskey "Т">
-<!ENTITY cut.label "Қию">
-<!ENTITY cut.accesskey "ю">
-<!ENTITY copy.label "Көшіру">
-<!ENTITY copy.accesskey "ш">
-<!ENTITY paste.label "Кірістіру">
-<!ENTITY paste.accesskey "р">
-<!ENTITY remove.label "Жою">
-<!ENTITY remove.accesskey "о">
-<!ENTITY menu.find.label "Іздеу">
-<!ENTITY menu.find.accesskey "з">
-<!ENTITY menu.findagain.label "Іздеуді қайталау">
-<!ENTITY menu.findagain.accesskey "у">
-<!ENTITY view.label "Түрі">
-<!ENTITY view.accesskey "р">
-<!ENTITY sort.label "Сұрыптау">
-<!ENTITY sort.accesskey "с">
-<!ENTITY sort.none.label "Сұрыптаусыз">
-<!ENTITY sort.none.accesskey "з">
-<!ENTITY sort.ascending.label "А > Я сұрыптау">
-<!ENTITY sort.ascending.accesskey "а">
-<!ENTITY sort.descending.label "Я > А сұрыптау">
-<!ENTITY sort.descending.accesskey "я">
-<!ENTITY options.label "Баптаулар">
-<!ENTITY options.accesskey "Б">
-<!ENTITY enable.label "Adblock Plus қосу">
-<!ENTITY enable.accesskey "с">
-<!ENTITY showintoolbar.label "Панельде көрсету">
-<!ENTITY showintoolbar.accesskey "П">
-<!ENTITY showinstatusbar.label "Қалып-күй жолағында көрсету">
-<!ENTITY showinstatusbar.accesskey "к">
-<!ENTITY objecttabs.label "Flash пен Java-ға сілтеме қалдыру">
-<!ENTITY objecttabs.accesskey "д">
-<!ENTITY collapse.label "Блокталған құраманы жинау">
-<!ENTITY collapse.accesskey "ж">
-<!ENTITY sync.label "Adblock Plus баптауларын Sync ішіне қосу">
-<!ENTITY sync.accesskey "ш">
-<!ENTITY help.label "Көмек">
-<!ENTITY help.accesskey "м">
-<!ENTITY gettingStarted.label "Бастау">
-<!ENTITY gettingStarted.accesskey "Б">
-<!ENTITY faq.label "Жиі қойылатын сұрақтар">
-<!ENTITY faq.accesskey "Ж">
-<!ENTITY filterdoc.label "Adblock Plus фильтрлерін жасау">
-<!ENTITY filterdoc.accesskey "с">
-<!ENTITY about.label "Adblock Plus туралы">
-<!ENTITY about.accesskey "т">
-<!ENTITY description "Келесі фильтрлер қай адрестер блокталатынын және қай адрестер өткізілетінін анықтайды:">
-<!ENTITY filter.column "Фильтр ережесі:">
-<!ENTITY filter.accesskey "е">
-<!ENTITY slow.column "Баяу фильтрлер">
-<!ENTITY slow.accesskey "ь">
-<!ENTITY enabled.column "Қосулы">
-<!ENTITY enabled.accesskey "л">
-<!ENTITY hitcount.column "Хиттер">
-<!ENTITY hitcount.accesskey "и">
-<!ENTITY lasthit.column "Соңғы хит">
-<!ENTITY lasthit.accesskey "ы">
-<!ENTITY context.edit.label "Фильтрді түзету">
-<!ENTITY context.resethitcount.label "Фильтр үшін хит статистикасын тастау">
-<!ENTITY context.synchsubscription.label "Жазылуды қазір жаңарту">
-<!ENTITY context.editsubscription.label "Жазылуды жаңарту">
-<!ENTITY context.moveup.label "Фильтрі жоғары көтеру">
-<!ENTITY context.movedown.label "Фильтрі төмен түсіру">
-<!ENTITY context.movegroupup.label "Топты жоғары көтеру">
-<!ENTITY context.movegroupdown.label "Топты төмен түсіру">
-<!ENTITY context.enable.label "Қосу">
-<!ENTITY context.disable.label "Сөндіру">
-<!ENTITY apply.label "Іске асыру">
-<!ENTITY apply.accesskey "с">
-<!ENTITY fennec.subscription.label "Сүзгіге жазылу">
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/sidebar.dtd b/chrome/adblockplus.jar!/locale/kk-KZ/sidebar.dtd
index 5644b3b..0265183 100644
--- a/chrome/adblockplus.jar!/locale/kk-KZ/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/kk-KZ/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Элемент адресін көшіру">
 <!ENTITY context.copyFilter.label "Фильтрді көшіру">
 <!ENTITY context.selectAll.label "Барлығын ерекшелеу">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/kk-KZ/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/kk-KZ/subscriptionSelection.dtd
index 6c92881..05bdc53 100644
--- a/chrome/adblockplus.jar!/locale/kk-KZ/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/kk-KZ/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Adblock Plus фильтрлерге жазылуды қосу">
-<!ENTITY dialog.title.edit "Фильтрге жазылуды түзету">
-<!ENTITY description.newInstall "Adblock Plus сүзгі жазылуы қосылса пайдалы болады.Басқа Adblock Plus пайдаланушылары ұсынған сүзгілер тегін. Тіліңіз үшін сәйкес келетін сүзгілер таңдаулы тұр.">
 <!ENTITY subscriptionSelector.label "Тізімнен сүзгіге жазылуды таңдаңыз:">
 <!ENTITY viewList.label "Сүзгілерді қарап шығу">
 <!ENTITY visitHomepage.label "Үй парағын шолу">
 <!ENTITY addSubscription.label "Жазылуды қосу">
-<!ENTITY saveSubscription.label "Жазылуды сақтау">
-<!ENTITY other.label "Басқа жазылуды қосу">
-<!ENTITY other.accesskey "с">
 <!ENTITY list.download.failed "Adblock Plus жазылулар тізімін жүктеп ала алмаған.">
 <!ENTITY list.download.retry "Қайтадан көру">
 <!ENTITY list.download.website "Веб сайтты шолу">
 <!ENTITY fromWeb.description "Сүзгі жазылуын қосуды растаңыз. Қосу алдында оның атауын не орналасуын өзгерте аласыз.">
-<!ENTITY edit.description "Керек болса, жазылудың атауын не орналасуын өзгерте аласыз.">
-<!ENTITY external.description "Бұл сыртқы сүзгі жазылуы; ол жасаған аддонмен жаңартылуы тиіс.">
 <!ENTITY title.label "Жазылудың аты:">
 <!ENTITY title.accesskey "з">
 <!ENTITY location.label "Фильтр тізім адресі:">
 <!ENTITY location.accesskey "д">
-<!ENTITY autodownload.label "Автоматты түрде жаңарту">
-<!ENTITY autodownload.accesskey "а">
 <!ENTITY supplementMessage "Бұл фильтрге жазылу сізде әлі қосылмаған "?1?" сүзгімен бірге қолданылуы тиіс.">
 <!ENTITY addMain.label ""?1?" сүзгі жазылуын да қосу">
 <!ENTITY addMain.accesskey "у">
diff --git a/chrome/adblockplus.jar!/locale/ko/about.dtd b/chrome/adblockplus.jar!/locale/ko/about.dtd
index fca21c8..55c8438 100644
--- a/chrome/adblockplus.jar!/locale/ko/about.dtd
+++ b/chrome/adblockplus.jar!/locale/ko/about.dtd
@@ -1,6 +1,6 @@
 <!ENTITY dialog.title "애드블록 플러스 정보">
 <!ENTITY version.title "버전">
-<!ENTITY description "애드블록 플러스는 콘텐츠 이용을 방해하고 불건전한 광고를 차단하여 빠르고 쾌적한 인터넷을 만들어줍니다. 애드블록 플러스 프로젝트의 목적은 광고를 차단/허용하여 인터넷을 변화시키는 것입니다!">
+<!ENTITY description "애드블록 플러스는 보기 싫은 광고를 차단하여 더욱 빠르고 쾌적한 인터넷을 만들어줍니다. 이 프로젝트의 목적은 나쁜 광고는 차단하고, 좋은 광고는 허용하여 보다 나은 인터넷을 만드는 것입니다.">
 <!ENTITY homepage.label "홈페이지">
 <!ENTITY author.label "개발자">
 <!ENTITY contributors.label "공헌자">
diff --git a/chrome/adblockplus.jar!/locale/ko/composer.dtd b/chrome/adblockplus.jar!/locale/ko/composer.dtd
index 2b33dfd..bb64f36 100644
--- a/chrome/adblockplus.jar!/locale/ko/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/ko/composer.dtd
@@ -2,8 +2,8 @@
 <!ENTITY accept.label "추가">
 <!ENTITY advanced.label "고급 보기">
 <!ENTITY basic.label "기본 보기">
-<!ENTITY disabled.warning "애드블록 플러스가 사용 중지됨 : 필터 추가 가능 + 필터 적용 중지 [link]⇔ 애드블록 플러스 사용[/link]">
-<!ENTITY groupDisabled.warning ""?1?" 필터 그룹이 사용 중지됨 : 필터 추가 가능 + 필터 그룹 적용 중지 [link]⇔ 필터 그룹 사용[/link]">
+<!ENTITY disabled.warning "애드블록 플러스의 사용이 중지됨 : 필터 추가 가능 + 필터 적용 중지 ⇔ [link]애드블록 플러스 사용[/link]">
+<!ENTITY groupDisabled.warning ""?1?" 필터 그룹의 사용이 중지됨 : 필터 추가 가능 + 필터 그룹 적용 중지 ⇔ [link]필터 그룹 사용[/link]">
 <!ENTITY filter.label "새 필터">
 <!ENTITY filter.accesskey "f">
 <!ENTITY preferences.label "필터 목록">
@@ -14,9 +14,9 @@
 <!ENTITY type.whitelist.accesskey "x">
 <!ENTITY pattern.label "유형 찾기">
 <!ENTITY pattern.explanation "유형은 일치하는 주소를 검색하는 텍스트 문자열이며, 임의 문자(*)로 적용 범위를 조절할 수 있습니다.">
-<!ENTITY regexp.warning "[느린 필터] 패턴 끝에 임의 문자(*)가 없으면 정규 표현식으로 해석되며, 웹 페이지를 불러오는 속도가 느려짐.">
-<!ENTITY shortpattern.warning "[느린 필터] 패턴의 길이가 너무 짧으면 필터가 비효율적으로 처리되며, 웹 페이지를 불러오는 속도가 느려짐.">
-<!ENTITY match.warning "입력한 패턴과 일치하는 주소가 없으며, 차단/허용할 주소에 영향을 미치지 않음.">
+<!ENTITY regexp.warning "[느린 필터] 유형 끝에 임의 문자(*)가 없으면 정규 표현식으로 해석되며, 웹 페이지를 불러오는 속도가 느려짐.">
+<!ENTITY shortpattern.warning "[느린 필터] 유형의 길이가 너무 짧으면 필터가 비효율적으로 처리되며, 웹 페이지를 불러오는 속도가 느려짐.">
+<!ENTITY match.warning "입력한 유형과 일치하는 주소가 없으며, 차단/허용할 주소에 영향을 미치지 않음.">
 <!ENTITY custom.pattern.label "사용자 지정 (C)">
 <!ENTITY custom.pattern.accesskey "C">
 <!ENTITY anchors.label "유형 일치 조건 :">
diff --git a/chrome/adblockplus.jar!/locale/ko/filters.dtd b/chrome/adblockplus.jar!/locale/ko/filters.dtd
new file mode 100644
index 0000000..ba2d962
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ko/filters.dtd
@@ -0,0 +1,91 @@
+<!ENTITY dialog.title "필터 설정">
+<!ENTITY subscriptions.tab.label "구독 필터">
+<!ENTITY filters.tab.label "사용자 필터">
+<!ENTITY addSubscription.label "구독 필터 추가">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "추가">
+<!ENTITY addSubscriptionCancel.label "취소">
+<!ENTITY addSubscriptionOther.label "다른 구독 필터 추가 (F)">
+<!ENTITY noSubscriptions.text "
+	구독 필터를 아직 추가하지 않았습니다. 애드블록 플러스는 필터 없이는 아무것도 차단할 수 없으므로
+	"구독 필터 추가" 버튼을 눌러 구독 필터를 추가하십시오.
+">
+<!ENTITY subscription.homepage.label "홈페이지">
+<!ENTITY subscription.external.label "다른 확장 프로그램에 의해 업데이트됨">
+<!ENTITY subscription.source.label "필터 목록">
+<!ENTITY subscription.enabled.label "사용">
+<!ENTITY subscription.lastDownload.label "마지막 다운로드 :">
+<!ENTITY subscription.lastDownload.inProgress "다운로드 중...">
+<!ENTITY subscription.lastDownload.unknown "알 수 없음">
+<!ENTITY subscription.lastDownload.invalidURL "실패함 : 올바르지 않은 주소">
+<!ENTITY subscription.lastDownload.connectionError "실패함 : 다운로드 실패">
+<!ENTITY subscription.lastDownload.invalidData "실패함 : 올바르지 않은 필터">
+<!ENTITY subscription.lastDownload.checksumMismatch "실패함 : 검사합 불일치">
+<!ENTITY subscription.lastDownload.success "동기화 성공">
+<!ENTITY subscription.minVersion.warning "이 구독 필터는 보다 높은 버전의 애드블록 플러스가 필요합니다. 최신 버전의 애드블록 플러스를 설치하십시오.">
+<!ENTITY subscription.disabledFilters.warning "이 구독 필터의 일부 필터는 사용 중지되었습니다.">
+<!ENTITY subscription.disabledFilters.enable "필터 다시 사용">
+<!ENTITY subscription.actions.label "동작">
+<!ENTITY subscription.update.label "업데이트">
+<!ENTITY subscription.editTitle.label "필터 그룹명 편집">
+<!ENTITY subscription.delete.label "삭제">
+<!ENTITY subscription.showHideFilters.label "필터 목록 보기/숨기기">
+<!ENTITY subscription.moveUp.label "위로 이동">
+<!ENTITY subscription.moveDown.label "아래로 이동">
+<!ENTITY acceptableAds.label "비침입형 광고 허용">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "자세히 보기">
+<!ENTITY addGroup.label "필터 그룹 추가">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+	사용자 필터가 없습니다.
+">
+<!ENTITY addFilter.label "필터 추가">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "필터 동작">
+<!ENTITY filter.edit.label "편집">
+<!ENTITY filter.cut.label "잘라내기">
+<!ENTITY filter.copy.label "복사">
+<!ENTITY filter.paste.label "붙여넣기">
+<!ENTITY filter.delete.label "삭제">
+<!ENTITY filter.selectAll.label "모두 선택">
+<!ENTITY filter.resetHitCounts.label "필터 적용 횟수 초기화">
+<!ENTITY filter.moveUp.label "위로 이동">
+<!ENTITY filter.moveDown.label "아래로 이동">
+<!ENTITY viewMenu.label "보기">
+<!ENTITY filter.column "필터">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "느린 필터(!)">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "사용">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "적용 횟수">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "마지막 적용 날짜">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "정렬">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "정렬 안 함">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "오름차순 (A ⇒ Z)">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "내림차순 (Z ⇒ A)">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "필터 목록을 보려면 필터 그룹을 선택하십시오.">
+<!ENTITY noFiltersInGroup.text "필터 없음">
+<!ENTITY filters.remove.warning "선택한 모든 필터를 제거하시겠습니까?">
+<!ENTITY backupButton.label "백업/복원">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "백업 파일 저장">
+<!ENTITY restore.default.label "복원 날짜 - ?1?">
+<!ENTITY restore.own.label "백업 파일로 복원">
+<!ENTITY backup.complete.title "사용자/구독 필터 백업">
+<!ENTITY backup.custom.title "사용자 필터만 백업">
+<!ENTITY backup.error "백업 파일에 필터 작성 오류가 있습니다. 이 파일은 쓰기 방지 상태이거나 다른 응용 프로그램에서 사용 중인지 확인하십시오.">
+<!ENTITY restore.error "애드블록 플러스의 백업 파일이 아니므로 복원을 할 수 없습니다.">
+<!ENTITY restore.complete.warning "선택된 복원 파일에 의해 모든 필터 설정이 교체됩니다. 진행하시겠습니까?">
+<!ENTITY restore.custom.warning "선택된 복원 파일에 의해 모든 사용자 필터가 교체됩니다. 진행하시겠습니까?">
+<!ENTITY restore.minVersion.warning "경고 : 이 파일은 보다 높은 버전의 애드블록 플러스에 의해 생성되었습니다. 이 파일로 복원하기 전에 최신 버전의 애드블록 플러스로 업데이트하십시오.">
+<!ENTITY find.label "찾기">
+<!ENTITY find.accesskey "n">
+<!ENTITY close.label "닫기">
diff --git a/chrome/adblockplus.jar!/locale/ko/firstRun.dtd b/chrome/adblockplus.jar!/locale/ko/firstRun.dtd
new file mode 100644
index 0000000..111e9cd
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ko/firstRun.dtd
@@ -0,0 +1,9 @@
+<!ENTITY dialog.title "애드블록 플러스 설치 완료!">
+<!ENTITY confirmation "애드블록 플러스(Adblock Plus)를 설치해주셔서 고맙습니다. 이제 인터넷 이용을 방해하거나 유해한 광고를 차단하십시오.">
+<!ENTITY advancedSection "고급 옵션">
+<!ENTITY listSelection1 "광고를 차단하기 위해 다음의 구독 필터가 기본적으로 설정되어 있습니다.">
+<!ENTITY noList "구독 필터 없음">
+<!ENTITY visitHomepage.label "홈페이지 방문">
+<!ENTITY acceptableAds "[광고 허용] 애드블록 플러스는 인터넷 이용에 방해가 되지 않는 광고를 허용하기 위해 특별하게 설정되어 있습니다.">
+<!ENTITY readMore.label "자세히 보기">
+<!ENTITY listSelection2 "언제든지 [link]필터 설정[/link]에서 위의 설정을 변경할 수 있습니다.">
diff --git a/chrome/adblockplus.jar!/locale/ko/global.properties b/chrome/adblockplus.jar!/locale/ko/global.properties
index a46d0c7..289dca7 100644
--- a/chrome/adblockplus.jar!/locale/ko/global.properties
+++ b/chrome/adblockplus.jar!/locale/ko/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=차단 : ?1?개, 전체 항목 : ?2?개
 blocked_count_addendum=(허용 : ?1?개, 요소 숨김 : ?2?개)
 no_blocking_suggestions=현재 페이지에 차단 가능한 항목이 없습니다.
 whitelisted_page=허용된 페이지
-whitelist_description=허용 필터
-filterlist_description=차단 필터
-invalid_description=올바르지 않은 필터
-elemhide_description=요소 숨김 필터
-subscription_description=구독 필터 :
-subscription_wrong_version=구독 필터 중 일부 필터가 정상적으로 작동하기 위해선 최소한 애드블록 플러스 ?1? 버전을 설치해야 합니다.
-subscription_source=위치 :
-subscription_status=상태 :
-subscription_status_autodownload=자동 업데이트
-subscription_status_manualdownload=수동 업데이트
-subscription_status_externaldownload=외부 업데이트 (다른 부가 기능)
-subscription_status_lastdownload=마지막 다운로드 :
-subscription_status_lastdownload_inprogress=다운로드 중...
-subscription_status_lastdownload_unknown=알 수 없음
+newGroup_title=새 필터 그룹
+whitelistGroup_title=허용 필터
+blockingGroup_title=요청 차단 필터
+elemhideGroup_title=요소 숨김 필터
 remove_subscription_warning=이 구독 필터를 제거하시겠습니까?
-import_filters_wrong_version=경고 : 일부 필터가 정상적으로 작동하기 위해 최소한 애드블록 플러스 ?1? 버전을 설치해야 합니다. 이 필터 목록을 가져오기 전에 애드블록 플러스를 최신 버전으로 업그레이드하십시오.
-import_filters_warning=가져온 필터를 현재의 사용자 필터에 덮어쓰거나 필터 그룹별로 목록 끝에 추가하시겠습니까?
-import_filters_title=필터 가져오기
-export_filters_title=사용자 필터 내보내기
-invalid_filters_file=애드블록 플러스의 필터 파일이 아닙니다.
-filters_write_error=필터를 파일로 저장하는 중 오류가 발생했습니다. 쓰기 금지 파일이거나 다른 프로그램에서 사용 중인 파일인지 확인하십시오.
-clearall_warning=필터 목록에서 모든 사용자 필터를 제거하시겠습니까?
-resethitcounts_warning=필터 적용 횟수를 초기화하시겠습니까? 이 기능은 되돌릴 수 없습니다!
-resethitcounts_selected_warning=선택한 필터의 적용 횟수를 초기화하시겠습니까? 이 기능은 되돌릴 수 없습니다!
+clearStats_warning=모든 필터 적용 횟수가 초기화되고, 이 통계 기능을 사용하지 않습니다. 진행하시겠습니까?
 filter_regexp_tooltip=이 필터는 정규 표현식이거나 최적화하기에 길이가 너무 짧으므로 웹 페이지를 불러오는 속도가 저하됩니다.
 filter_elemhide_duplicate_id=숨기려는 요소의 ID는 한 개만 지정할 수 있습니다.
 filter_elemhide_nocriteria=숨기려는 요소를 인식하기 위한 기준이 지정되지 않았습니다.
-subscription_notAdded_warning=구독 필터를 추가하지 않았습니다. 구독 필터가 없으면 필터를 직접 추가해야 합니다.
-subscription_notAdded_warning_addendum=계속 진행하시겠습니까?
 subscription_invalid_location=구독 필터의 위치에 입력하는 URL 또는 파일명이 올바르지 않습니다.
-synchronize_invalid_url=실패함 : 올바르지 않은 주소
-synchronize_connection_error=실패함 : 다운로드 실패
-synchronize_invalid_data=실패함 : 올바르지 않은 필터
-synchronize_checksum_mismatch=실패함 : 검사합 불일치
-synchronize_ok=동기화 성공
-overwrite=덮어쓰기
-append=추가
-new_filter_group_title=새 필터
 type_label_other=기타
 type_label_script=스크립트
 type_label_image=이미지
@@ -56,15 +28,12 @@ type_label_object=객체
 type_label_subdocument=프레임
 type_label_document=문서
 type_label_elemhide=숨겨진 요소
-type_label_xbl=XBL 바인딩
-type_label_ping=링크 핑
+type_label_popup=팝업 창
 type_label_xmlhttprequest=XML 요청
 type_label_object_subrequest=객체 하위 요청
-type_label_dtd=DTD
 type_label_media=오디오/비디오
 type_label_font=글꼴
 fennec_status_enabled=애드블록 플러스 사용
 fennec_status_disabled=애드블록 플러스 사용 중지
 fennec_status_enabled_site=?1?에서 애드블록 플러스 사용
 fennec_status_disabled_site=?1?에서 애드블록 플러스 사용 중지
-sync_engine_title=애드블록 플러스 데이터
diff --git a/chrome/adblockplus.jar!/locale/ko/overlay.dtd b/chrome/adblockplus.jar!/locale/ko/overlay.dtd
index 0d3de8c..1a75a2d 100644
--- a/chrome/adblockplus.jar!/locale/ko/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/ko/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "필터 설정">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "애드블록 플러스">
-<!ENTITY view.blockableItems.label "애드블록 플러스 : 차단 가능 목록">
 <!ENTITY context.image.label "애드블록 플러스 : 이미지 차단">
 <!ENTITY context.object.label "애드블록 플러스 : 객체 차단">
 <!ENTITY context.frame.label "애드블록 플러스 : 프레임 차단">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "현재 페이지의 차단 가능한 항목">
 <!ENTITY sendReport.label "현재 페이지의 문제 보고">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "필터 설정">
-<!ENTITY settings.accesskey "F">
+<!ENTITY filters.label "필터 설정">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "차단 가능 목록 (B)">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "차단 가능 목록 닫기 (B)">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "사이트 허용 : ?1?">
 <!ENTITY whitelist.page.label "현재 페이지 허용">
 <!ENTITY disable.label "사용 중지">
-<!ENTITY recommend.label "페이스북으로 추천하기">
+<!ENTITY options.label "옵션">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "애드블록 플러스에 공헌하기">
+<!ENTITY showintoolbar.label "툴바에 아이콘 보이기">
+<!ENTITY showintoolbar.accesskey "B">
+<!ENTITY showinstatusbar.label "상태 표시줄에 아이콘 보이기">
+<!ENTITY showinstatusbar.accesskey "S">
+<!ENTITY showinaddonbar.label "부가 프로그램 모음에 아이콘 보이기">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "플래시/자바에 차단 탭 표시">
+<!ENTITY objecttabs.accesskey "T">
+<!ENTITY hideplaceholders.label "차단된 요소의 공백 숨기기">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "필터 적용 횟수 기록">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY sync.label "애드블록 플러스 설정 동기화">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "차단">
 <!ENTITY objecttab.tooltip "이 객체를 차단하려면 차단 탭을 클릭하십시오.">
diff --git a/chrome/adblockplus.jar!/locale/ko/sendReport.dtd b/chrome/adblockplus.jar!/locale/ko/sendReport.dtd
index 681a1a0..4c9566c 100644
--- a/chrome/adblockplus.jar!/locale/ko/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/ko/sendReport.dtd
@@ -41,8 +41,8 @@
 <!ENTITY typeWarning.override.accesskey "s">
 <!ENTITY reloadButton.label "페이지 새로고침">
 <!ENTITY reloadButton.accesskey "R">
-<!ENTITY screenshot.heading "화면갈무리 첨부">
-<!ENTITY screenshot.description "문제 보고서에 화면갈무리를 첨부하면 문제를 이해하는데 도움이 됩니다. 문제 영역을 부각하기 위해 페이지 이미지에 표시를 하고, 민감한 정보 영역은 숨길 수 있습니다. 원하는 버튼을 누르고, 이미지에 마우스로 영역을 표시하십시오.">
+<!ENTITY screenshot.heading "화면 갈무리 첨부">
+<!ENTITY screenshot.description "같은 페이지도 다른 사람들에게는 다르게 보일 수 있습니다. 그래서 보고서에 화면 갈무리을 첨부하면 문제를 이해하는데 도움이 됩니다. 문제 영역을 부각하기 위해 페이지 이미지에 표시를 하고, 민감한 정보 영역은 숨길 수 있습니다. 원하는 버튼을 누르고, 이미지에 마우스로 영역을 표시하십시오.">
 <!ENTITY screenshot.attach.label "보고서에 페이지 이미지 첨부">
 <!ENTITY screenshot.attach.accesskey "t">
 <!ENTITY screenshot.mark.label "문제 영역 표시">
@@ -52,13 +52,13 @@
 <!ENTITY screenshot.undo.label "되돌리기">
 <!ENTITY screenshot.undo.accesskey "U">
 <!ENTITY commentPage.heading "보고 내용 입력">
-<!ENTITY commentPage.description "반드시 주소 입력줄의 웹 페이지 주소(URL)와 필터 문제의 설명을 보고 내용에 입력하십시오. 이 요건을 갖추지 않은 문제 보고서는 정상적으로 처리되지 않을 수 있습니다.">
-<!ENTITY comment.label "보고 내용 (필수 항목 - 웹 페이지 주소 + 필터 문제 설명) :">
+<!ENTITY commentPage.description "모든 언어로 입력 가능 + 페이지 전체 URL : 평소 사용하거나 설명하기 쉬운 언어로 보고할 내용을 입력하십시오. 그런 후 주소 표시줄의 페이지 전체 URL을 복사해 입력한 내용 아래에 반드시 붙여넣으십시오.">
+<!ENTITY comment.label "보고 내용 (필수 항목) :">
 <!ENTITY comment.accesskey "C">
 <!ENTITY comment.lengthWarning "설명의 길이가 1000자를 초과하여 1000자까지만 전송됩니다.">
-<!ENTITY email.label "이메일 주소 (추가 문의 및 처리 상태 통보)  :">
+<!ENTITY email.label "필터 유지자가 추가로 문의하고 처리 상태를 알려주기 위한 이메일 주소 (권장 항목) :">
 <!ENTITY email.accesskey "m">
-<!ENTITY attachExtensions.label "사용하고 있는 부가 프로그램 목록을 보고서에 추가 (다른 부가 프로그램과 충돌이 원인인 경우)">
+<!ENTITY attachExtensions.label "사용하고 있는 부가 프로그램의 목록을 보고서에 추가 (다른 부가 프로그램과 충돌이 원인인 경우)">
 <!ENTITY attachExtensions.accesskey "x">
 <!ENTITY sendButton.label "보고서 전송">
 <!ENTITY sendButton.accesskey "n">
diff --git a/chrome/adblockplus.jar!/locale/ko/settings.dtd b/chrome/adblockplus.jar!/locale/ko/settings.dtd
deleted file mode 100644
index 38bddb5..0000000
--- a/chrome/adblockplus.jar!/locale/ko/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "필터 설정">
-<!ENTITY filters.label "필터">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "필터 추가">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "구독 필터 추가">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "모든 구독 필터 업데이트">
-<!ENTITY synchsubscriptions.accesskey "D">
-<!ENTITY import.label "필터 가져오기">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "사용자 필터 내보내기">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "모든 사용자 필터 제거">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "필터 적용 횟수 초기화">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "편집">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "잘라내기">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "복사">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "붙여넣기">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "삭제">
-<!ENTITY remove.accesskey "D">
-<!ENTITY menu.find.label "찾기">
-<!ENTITY menu.find.accesskey "F">
-<!ENTITY menu.findagain.label "다시 찾기">
-<!ENTITY menu.findagain.accesskey "G">
-<!ENTITY view.label "보기">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "정렬">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "정렬 안 함">
-<!ENTITY sort.none.accesskey "U">
-<!ENTITY sort.ascending.label "오름차순 (A ⇒ Z)">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "내림차순 (Z ⇒ A)">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "옵션">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "애드블록 플러스 사용">
-<!ENTITY enable.accesskey "N">
-<!ENTITY showintoolbar.label "툴바에 아이콘 보이기">
-<!ENTITY showintoolbar.accesskey "B">
-<!ENTITY showinstatusbar.label "상태 표시줄에 아이콘 보이기">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "플래시/자바에 차단 탭 표시">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "차단된 요소의 영역 숨기기">
-<!ENTITY collapse.accesskey "L">
-<!ENTITY sync.label "애드블록 플러스 설정 동기화">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "도움말">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "시작하기">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "자주 묻는 질문">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "필터 작성 방법">
-<!ENTITY filterdoc.accesskey "R">
-<!ENTITY about.label "애드블록 플러스 정보">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "애드블록 플러스의 필터는 웹 페이지를 열 때 불러오는 파일을 차단/허용하거나 HTML 요소를 숨깁니다.">
-<!ENTITY filter.column "필터">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "느린 필터(!)">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "사용">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "적용 횟수">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "마지막 적용 날짜">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "필터 편집">
-<!ENTITY context.resethitcount.label "필터 적용 횟수 초기화">
-<!ENTITY context.synchsubscription.label "구독 필터 업데이트">
-<!ENTITY context.editsubscription.label "구독 필터 편집">
-<!ENTITY context.moveup.label "필터를 위로 이동">
-<!ENTITY context.movedown.label "필터를 아래로 이동">
-<!ENTITY context.movegroupup.label "필터 그룹을 위로 이동">
-<!ENTITY context.movegroupdown.label "필터 그룹을 아래로 이동">
-<!ENTITY context.enable.label "필터/필터 그룹 사용">
-<!ENTITY context.disable.label "필터/필터 그룹 사용 중지">
-<!ENTITY apply.label "적용">
-<!ENTITY apply.accesskey "P">
-<!ENTITY fennec.subscription.label "구독 필터">
diff --git a/chrome/adblockplus.jar!/locale/ko/sidebar.dtd b/chrome/adblockplus.jar!/locale/ko/sidebar.dtd
index ccb8c66..be85795 100644
--- a/chrome/adblockplus.jar!/locale/ko/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/ko/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "필터">
 <!ENTITY state.label "상태">
 <!ENTITY size.label "크기">
+<!ENTITY filterSource.label "필터 위치">
 <!ENTITY docDomain.label "문서 위치">
 <!ENTITY docDomain.thirdParty "(외부 요청)">
 <!ENTITY docDomain.firstParty "(내부 요청)">
diff --git a/chrome/adblockplus.jar!/locale/ko/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ko/subscriptionSelection.dtd
index 45aa5a0..c6e5063 100644
--- a/chrome/adblockplus.jar!/locale/ko/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/ko/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "구독 필터 추가">
-<!ENTITY dialog.title.edit "구독 필터 편집">
-<!ENTITY description.newInstall "구독 필터는 주기적으로 자동 업데이트되는 필터로서 광고를 효율적으로 차단할 수 있습니다.">
 <!ENTITY subscriptionSelector.label "구독할 필터를 선택하거나 이름/위치를 입력하십시오.">
-<!ENTITY viewList.label "필터 보기">
+<!ENTITY viewList.label "필터 목록 보기">
 <!ENTITY visitHomepage.label "홈페이지">
 <!ENTITY addSubscription.label "추가">
-<!ENTITY saveSubscription.label "확인">
-<!ENTITY other.label "다른 구독 필터 추가 (F)">
-<!ENTITY other.accesskey "f">
 <!ENTITY list.download.failed "구독 필터 목록의 검색 실패">
 <!ENTITY list.download.retry "다시 시도">
 <!ENTITY list.download.website "웹 사이트">
 <!ENTITY fromWeb.description "추가하려는 구독 필터인지 확인하십시오. 추가하기 전에 이름 또는 위치를 변경할 수 있습니다.">
-<!ENTITY edit.description "구독 필터의 이름 또는 위치를 변경할 수 있습니다.">
-<!ENTITY external.description "외부 구독 필터입니다. 이 구독 필터를 생성한 부가 기능에 의해 필터 목록이 주기적으로 업데이트됩니다.">
 <!ENTITY title.label "이름 (T)">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "위치 (L)">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "자동 업데이트 (P)">
-<!ENTITY autodownload.accesskey "P">
 <!ENTITY supplementMessage "선택한 구독 필터는 "?1?"와(과) 함께 추가할 것을 권장합니다.">
 <!ENTITY addMain.label ""?1?" 구독 필터도 함께 추가">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/lt/about.dtd b/chrome/adblockplus.jar!/locale/lt/about.dtd
new file mode 100644
index 0000000..1cbaeb3
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/about.dtd
@@ -0,0 +1,10 @@
+<!ENTITY dialog.title "Apie „Adblock Plus“">
+<!ENTITY version.title "Versija">
+<!ENTITY description "	„Adblock Plus“ leidžia jums patiems nuspręsti, ką norite matyti Internete.
+Jums daugiau nebereikia parsisiųsti visų reklamų ir banerių;
+jei jų nenorite matyti - pašalinkite juos su „Adblock Plus“!">
+<!ENTITY homepage.label "„Adblock Plus“ pradžios tinklalapis:">
+<!ENTITY author.label "Autorius:">
+<!ENTITY contributors.label "Prisidėjo:">
+<!ENTITY subscriptionAuthors.label "Filtro prenumeratos autoriai:">
+<!ENTITY translators.label "Vertėjai:">
diff --git a/chrome/adblockplus.jar!/locale/lt/composer.dtd b/chrome/adblockplus.jar!/locale/lt/composer.dtd
new file mode 100644
index 0000000..2146333
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/composer.dtd
@@ -0,0 +1,47 @@
+<!ENTITY dialog.title "Pridėti Adblock Plus filtravimo taisyklę">
+<!ENTITY accept.label "Pridėti filtrą">
+<!ENTITY advanced.label "Sudėtingesnis konfigūravimas">
+<!ENTITY basic.label "Paprastas konfigūravimas">
+<!ENTITY disabled.warning "Adblock Plus šiuo metu yra išjungtas. Vistiek galite pridėti filtrus, bet jie neveiks kol [link]neįjungsite Adblock Plus[/link].">
+<!ENTITY groupDisabled.warning "Filtrų grupė "?1?", į kurią bus pridėtas šis filtras, šiuo metu išjungta. Vistiek galite pridėti filtrą, bet jis neveiks kol [link]neįjungsite Adblock Plus[/link].">
+<!ENTITY filter.label "Naujas filtras:">
+<!ENTITY filter.accesskey "f">
+<!ENTITY preferences.label "Rodyti esamus filtrus...">
+<!ENTITY preferences.accesskey "R">
+<!ENTITY type.filter.label "Blokavimo filtrai">
+<!ENTITY type.filter.accesskey "B">
+<!ENTITY type.whitelist.label "Išimties taisyklė">
+<!ENTITY type.whitelist.accesskey "š">
+<!ENTITY pattern.label "Ieškoti atitikmens">
+<!ENTITY pattern.explanation "Atitikmuo gali būti betkuri adreso dalis; žvaigždutė (*) veiks kaip „wildcards“. Filtras bus pritaikytas tik tuo atveju jei adrese bus rastas atitikmuo.">
+<!ENTITY regexp.warning "Atitikmuo kurį įvedėte bus interpretuojamas kaip reguliarioji išraiška, Adblock Plus negali jo efektyviai pritaikyti, todėl gali sulėtėti naršymas. Jei nenorėjote naudoti reguliariųjų išraiškų, atitikmens pabaigoje pridėkite žvaigždutę (*).">
+<!ENTITY shortpattern.warning "Atitikmuo kurį įvedėte yra per trumpas, kad būtų galima optimizuoti ir gali sulėtinti naršymą. Rekomenduojama šiam filtrui pasirinkti ilgesnę eilutę, kad Adblock Plus galėtų efektyviau išnaudoti šį filtrą.">
+<!ENTITY match.warning "Atitikmuo kurį įvedėte nebeatitinka adreso kurį reikia įdėti į baltąjį/juodąjį sąrašą todėl jis nebeturės jokio efekto.">
+<!ENTITY custom.pattern.label "Pasirinktas:">
+<!ENTITY custom.pattern.accesskey "P">
+<!ENTITY anchors.label "Priimti tik atitikmenį:">
+<!ENTITY anchor.start.label "adreso pradžioje">
+<!ENTITY anchor.start.accesskey "d">
+<!ENTITY anchor.start.flexible.label "domeno pradžioje">
+<!ENTITY anchor.start.flexible.accesskey "d">
+<!ENTITY anchor.end.label "adreso pabaigoje">
+<!ENTITY anchor.end.accesskey "e">
+<!ENTITY options.label "Parinktys">
+<!ENTITY domainRestriction.label "Apribojimai domenui:">
+<!ENTITY domainRestriction.accesskey "n">
+<!ENTITY domainRestriction.help "Naudokite šią pasirinkty nurodyti vieną ar kelis domenus atskirtus |. Filtras bus pritaikytas tik pasirinktiems domenams. ~ prieš domeną parodo jog filtras nebus pritaikytas tam domenui.">
+<!ENTITY firstParty.label "Tik pagrindinių">
+<!ENTITY firstParty.accesskey "g">
+<!ENTITY thirdParty.label "Tik trečiųjų šalių">
+<!ENTITY thirdParty.accesskey "T">
+<!ENTITY matchCase.label "Skirti didžiąsias ir mažąsias raides">
+<!ENTITY matchCase.accesskey "S">
+<!ENTITY types.label "Pritaikyti tipams:">
+<!ENTITY selectAllTypes.label "Pasirinkti visus">
+<!ENTITY unselectAllTypes.label "Nieko nepasirinkti">
+<!ENTITY collapse.label "Suskleisti užblokuotus:">
+<!ENTITY collapse.accesskey "o">
+<!ENTITY collapse.default.yes.label "Naudoti numatytą (taip)">
+<!ENTITY collapse.default.no.label "Naudoti numatytą (ne)">
+<!ENTITY collapse.yes.label "Taip">
+<!ENTITY collapse.no.label "Ne">
diff --git a/chrome/adblockplus.jar!/locale/lt/filters.dtd b/chrome/adblockplus.jar!/locale/lt/filters.dtd
new file mode 100644
index 0000000..1acc9ab
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/filters.dtd
@@ -0,0 +1,88 @@
+<!ENTITY dialog.title "Adblock Plus filtrų nustatymai">
+<!ENTITY subscriptions.tab.label "Filtrų prenumeratos">
+<!ENTITY filters.tab.label "Pasirinktiniai filtrai">
+<!ENTITY addSubscription.label "Pridėti filtro prenumeratą">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Pridėti">
+<!ENTITY addSubscriptionCancel.label "Atšaukti">
+<!ENTITY addSubscriptionOther.label "Pridėti kitą prenumeratą">
+<!ENTITY noSubscriptions.text "	Kol kas jūs nepridėjote jokių filtrų prenumeratų. Be filtrų Adblock Plus nieko neblokuos, 
+norėdami pridėti kelis naudokite 
+"Pridėti filtrų prenumeratą".">
+<!ENTITY subscription.homepage.label "Namų puslapis">
+<!ENTITY subscription.external.label "Atnaujino kitas plėtinys">
+<!ENTITY subscription.source.label "Filtrų sąrašas">
+<!ENTITY subscription.enabled.label "Įjungta">
+<!ENTITY subscription.lastDownload.label "Paskutinis atsiuntimas:">
+<!ENTITY subscription.lastDownload.inProgress "Atsiunčiama...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Nepavyko, netinkamas adresas">
+<!ENTITY subscription.lastDownload.connectionError "Nepavyko, atsiuntimo klaida">
+<!ENTITY subscription.lastDownload.invalidData "Nepavyko, netinkamas filtrų sąrašas">
+<!ENTITY subscription.lastDownload.checksumMismatch "Nepavyko, bloga kontrolinė suma">
+<!ENTITY subscription.lastDownload.success "Sėkmingai">
+<!ENTITY subscription.minVersion.warning "Ši filtrų prenumerata reikalauja naujesnės Adblock Plus versijos, turėtume atsinaujinti savo Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Kai kurie filtrai, šioje prenumeratoje, išjungti.">
+<!ENTITY subscription.disabledFilters.enable "Įjungti išjungtus filtrus">
+<!ENTITY subscription.actions.label "Veiksmai">
+<!ENTITY subscription.update.label "Atnaujinti filtrus">
+<!ENTITY subscription.editTitle.label "Keisti pavadinimą">
+<!ENTITY subscription.delete.label "Ištrinti">
+<!ENTITY subscription.showHideFilters.label "Rodyti/slėpti filtrų taisykles">
+<!ENTITY subscription.moveUp.label "Pakelti aukštyn">
+<!ENTITY subscription.moveDown.label "Perkelti žemyn">
+<!ENTITY acceptableAds.label "Leisti neatkaklias reklamas">
+<!ENTITY acceptableAds.accesskey "t">
+<!ENTITY readMore.label "Skaityti daugiau">
+<!ENTITY addGroup.label "Pridėti filtrų grupę">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "	Kol kas jūs neturite jokių pasirinktinių filtrų.">
+<!ENTITY addFilter.label "Pridėti filtrą">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "Filtro veiksmai">
+<!ENTITY filter.edit.label "Keisti">
+<!ENTITY filter.cut.label "Iškirpti">
+<!ENTITY filter.copy.label "Kopijuoti">
+<!ENTITY filter.paste.label "Įdėti">
+<!ENTITY filter.delete.label "Pašalinti">
+<!ENTITY filter.selectAll.label "Pasirinkti visas">
+<!ENTITY filter.resetHitCounts.label "Atstatyti blokavimų statistiką">
+<!ENTITY filter.moveUp.label "Pakelti aukštyn">
+<!ENTITY filter.moveDown.label "Perkelti žemyn">
+<!ENTITY viewMenu.label "Rodymas">
+<!ENTITY filter.column "Filtro taisyklė">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Lėti filtrai">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "Įjungta">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "Blokavimai">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Paskutinis blokavimas">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Rikiuoti pagal">
+<!ENTITY sort.accesskey "k">
+<!ENTITY sort.none.label "Nerikiuojama">
+<!ENTITY sort.none.accesskey "e">
+<!ENTITY sort.ascending.label "Rikiavimo tvarka „A > Z“">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Rikiavimo tvarka „Z > A“">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Jūs turite pasirinkti filtrų grupę, tik tada bus galima parodyti tos grupės filtrus.">
+<!ENTITY noFiltersInGroup.text "Pasirinkta grupė yra tuščia">
+<!ENTITY filters.remove.warning "Ar tikrai norite pašalinti visus pasirinktus filtrus?">
+<!ENTITY backupButton.label "Atsarginių kopijų kūrimas ir atkūrimas">
+<!ENTITY backupButton.accesskey "A">
+<!ENTITY backup.label "Sukurti naują atsarginę kopiją">
+<!ENTITY restore.default.label "Atstatyti atsarginę kopiją iš ?1?">
+<!ENTITY restore.own.label "Atstatyti savo atsarginę kopiją">
+<!ENTITY backup.complete.title "Visi filtrai ir prenumeratos">
+<!ENTITY backup.custom.title "Tik pasirinktiniai filtrai">
+<!ENTITY backup.error "Įvyko klaida rašant filtrus į failą. Įsitikinkite jog tas failas neapsaugotas nuo rašymo ir jo nenaudoja kita programa.">
+<!ENTITY restore.error "Neįmanoma panaudoti failo duomenų, gal tai ne Adblock PLus atsarginės kopijos failas?">
+<!ENTITY restore.complete.warning "Visi jūsų filtrų nustatymai bus pakeisti pasirinkto failo turiniu. Ar norite tęsti?">
+<!ENTITY restore.custom.warning "Visi jūsų pasirinktiniai filtrai bus pakeisti pasirinkto failo turiniu. Ar norite tęsti?">
+<!ENTITY restore.minVersion.warning "Įspėjimas: failas sukurtas naudojant naujesnę Adblock Plus versiją. Prieš atstatant iš šio failo, turėtumėte atnaujinti savo Adblock Plus iki naujausios versijos.">
+<!ENTITY find.label "Rasti">
+<!ENTITY find.accesskey "s">
+<!ENTITY close.label "Užverti">
diff --git a/chrome/adblockplus.jar!/locale/lt/firstRun.dtd b/chrome/adblockplus.jar!/locale/lt/firstRun.dtd
new file mode 100644
index 0000000..6e6d1ea
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/firstRun.dtd
@@ -0,0 +1,10 @@
+<!ENTITY dialog.title "Adblock Plus įdiegimas baigtas">
+<!ENTITY confirmation "	Dėkui jog įdiegėte Adblock Plus. Nuo šiol bus blokuojamos reklamos. 
+Mėgaukitės!">
+<!ENTITY advancedSection "Papildomos parinktys">
+<!ENTITY listSelection1 "	Reklamų blokavimui buvo sukonfigūruotas filtrų sąrašas:">
+<!ENTITY noList "Nėra filtrų sąrašo">
+<!ENTITY visitHomepage.label "Aplankyti sąrašo namų puslapį">
+<!ENTITY acceptableAds "	Adblock Plus taipogi sukonfigūruotas taip jog leistų neatkaklias reklamas.">
+<!ENTITY readMore.label "Sužinokite daugiau apie tai">
+<!ENTITY listSelection2 "	Jūs betkada galite pakeisti šį pasirinkimą [link]Filtrų nustatymuose[/link].">
diff --git a/chrome/adblockplus.jar!/locale/lt/global.properties b/chrome/adblockplus.jar!/locale/lt/global.properties
new file mode 100644
index 0000000..f1d9cfd
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/global.properties
@@ -0,0 +1,39 @@
+default_dialog_title=Adblock Plus
+action0_tooltip=Spragtelėkite, norėdami iškviesti kontekstinį meniu; spragtelėkite viduriniuoju klavišu norėdami įjungti/išjungti.
+action1_tooltip=Spragtelėkite, norėdami atverti/užverti blokuojamus elementus; spragtelėkite viduriniuoju klavišu norėdami įjungti/išjungti.
+action2_tooltip=Spragtelėkite, norėdami atverti nustatymus; spragtelėkite viduriniuoju klavišu norėdami įjungti/išjungti.
+action3_tooltip=Spragtelėkite, norėdami įjungti/išjungti „Adblock Plus“.
+disabled_tooltip=„Adblock Plus“ išjungtas.
+active_tooltip=„Adblock Plus“ įjungtas, naudojama(os) ?1? filtro prenumerata(os) ir ?2? pasirinktinis(ai) filtras(ai).
+whitelisted_tooltip=„Adblock Plus“ aktyvus, bet išjungtas dabartiniam tinklalapiui.
+blocked_count_tooltip=?1? iš ?2?
+blocked_count_addendum=(išimčių: ?1?, paslėpta: ?2?)
+no_blocking_suggestions=Šiame puslapyje nėra jokių blokuojamų elementų
+whitelisted_page=„Adblock Plus“ yra išjungtas dabartiniam tinklalapiui
+newGroup_title=Nauja filtrų grupė
+whitelistGroup_title=Išimčių taisyklės
+blockingGroup_title=Reklamų blokavimo taisyklės
+elemhideGroup_title=Elementų slėpimo taisyklės
+remove_subscription_warning=Ar tikrai norite atsisakyti šios prenumeratos?
+clearStats_warning=Bus atstatyta visų filtrų blokavimų statistika ir išjungtas blokavimų skaičiavimas. Ar norite tęsti?
+filter_regexp_tooltip=Šis filtras yra reguliarioji išraiška arba per trumpas, kad būtų galima optimizuoti. Jei yra daug tokių filtrų jie gali sulėtinti naršymą.
+filter_elemhide_duplicate_id=Gali būti nurodytas tik vienas elemento ID kurį reikia paslėpti
+filter_elemhide_nocriteria=Nėra kriterijaus pagal kurį galima būtų nuspręsti kurį elementą paslėpti
+subscription_invalid_location=Filtrų sąrašo adresas nėra taisyklingas URL ar failo vardas.
+type_label_other=kita
+type_label_script=scenarijus
+type_label_image=paveikslėlis
+type_label_stylesheet=stilius
+type_label_object=objektas
+type_label_subdocument=kadras
+type_label_document=dokumentas
+type_label_elemhide=paslėpta
+type_label_popup=iššokantis langas
+type_label_xmlhttprequest=XML užklausa
+type_label_object_subrequest=papildoma objekto užklausa
+type_label_media=audio/video
+type_label_font=šriftas
+fennec_status_enabled=„Adblock Plus“ yra įjungtas.
+fennec_status_disabled=„Adblock Plus“ yra išjungtas.
+fennec_status_enabled_site=„Adblock Plus“ yra įjungtas tinklalapiui ?1?.
+fennec_status_disabled_site=„Adblock Plus“ yra išjungtas tinklalapiui ?1?.
diff --git a/chrome/adblockplus.jar!/locale/lt/overlay.dtd b/chrome/adblockplus.jar!/locale/lt/overlay.dtd
new file mode 100644
index 0000000..b331a16
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/overlay.dtd
@@ -0,0 +1,42 @@
+<!ENTITY status.tooltip "Būsena:">
+<!ENTITY blocked.tooltip "Šiame tinklalapyje užblokuoti elementai:">
+<!ENTITY filters.tooltip "Aktyviausi filtrai:">
+<!ENTITY menuitem.label "„Adblock Plus nustatymai“">
+<!ENTITY menuitem.accesskey "A">
+<!ENTITY toolbarbutton.label "„Adblock Plus“">
+<!ENTITY context.image.label "„Adblock Plus“: Blokuoti paveikslėlį">
+<!ENTITY context.object.label "„Adblock Plus“: Blokuoti objektą">
+<!ENTITY context.frame.label "„Adblock Plus“: Blokuoti kadrą">
+<!ENTITY context.media.label "„Adblock Plus“: Blokuoti audio/video">
+<!ENTITY context.removeWhitelist.label "„Adblock Plus“: iš naujo įjungti šiame puslapyje">
+<!ENTITY sidebar.title "Blokuojami elementai dabartiniame tinklalapyje">
+<!ENTITY sendReport.label "Pranešti apie problemą šiame puslapyje">
+<!ENTITY sendReport.accesskey "r">
+<!ENTITY filters.label "Filtrų nustatymai">
+<!ENTITY filters.accesskey "F">
+<!ENTITY opensidebar.label "Atverti blokuojamus elementus">
+<!ENTITY opensidebar.accesskey "b">
+<!ENTITY closesidebar.label "Užverti blokuojamus elementus">
+<!ENTITY closesidebar.accesskey "b">
+<!ENTITY whitelist.site.label "Išjungti ?1?">
+<!ENTITY whitelist.page.label "Išjungti šiam tinklalapiui">
+<!ENTITY disable.label "Išjungti visur">
+<!ENTITY options.label "Pasirinktys">
+<!ENTITY options.accesskey "P">
+<!ENTITY contribute.label "Prisidėti prie Adblock Plus">
+<!ENTITY showintoolbar.label "Rodyti priemonių juostoje">
+<!ENTITY showintoolbar.accesskey "r">
+<!ENTITY showinstatusbar.label "Rodyti būsenos juostoje">
+<!ENTITY showinstatusbar.accesskey "b">
+<!ENTITY showinaddonbar.label "Rodyti priedų juostoje">
+<!ENTITY showinaddonbar.accesskey "r">
+<!ENTITY objecttabs.label "Rodyti korteles Flash ir Java elementams">
+<!ENTITY objecttabs.accesskey "F">
+<!ENTITY hideplaceholders.label "Slėpti užblokuotų elementų vietos laikiklius">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Suskaičiuoti filtro blokavimus">
+<!ENTITY counthits.accesskey "k">
+<!ENTITY sync.label "Adblock Plus Sync nustatymai">
+<!ENTITY sync.accesskey "c">
+<!ENTITY objecttab.title "Blokuoti">
+<!ENTITY objecttab.tooltip "Spragtelėkite čia norėdami užblokuoti šį objektą su „Adblock Plus“">
diff --git a/chrome/adblockplus.jar!/locale/lt/sendReport.dtd b/chrome/adblockplus.jar!/locale/lt/sendReport.dtd
new file mode 100644
index 0000000..626864e
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/sendReport.dtd
@@ -0,0 +1,105 @@
+<!ENTITY wizard.title "Klaidos pranešimas">
+<!ENTITY privacyPolicy.label "Privatumo politika">
+<!ENTITY dataCollector.heading "Sveiki atvykę į klaidų pranešėją">
+<!ENTITY dataCollector.description "Palaukite kelias akimirkas, kol Adblock Plus surinks reikalingus duomenis.">
+<!ENTITY typeSelector.heading "Pasirinkite tipą">
+<!ENTITY typeSelector.description "	Šis langas padės įvykdyti kelis žingsnius kurie reikalingi pranešti apie Adblock Plus 
+problemą. Pirmiausia, šiame puslapyje, pasirinkite problemos su kuria susidūrėte 
+tipą:">
+<!ENTITY typeSelector.falsePositive.label "Adblock Plus blokuoja per daug">
+<!ENTITY typeSelector.falsePositive.accesskey "d">
+<!ENTITY typeSelector.falsePositive.description "	Pasirinkite šią pasirinkty jei puslapyje trūksta svarbaus turinio, jei atvaizduojama netinkamai ar
+puslapis nefunkcionuoja taip kaip turėtų. Norėdami įsitikinti jog problemą sukėlė Adblock Plus galite
+trumpam išjungti Adblock Plus.">
+<!ENTITY typeSelector.falseNegative.label "Adblock Plus neblokuoja reklamų">
+<!ENTITY typeSelector.falseNegative.accesskey "r">
+<!ENTITY typeSelector.falseNegative.description "	Pasirinkite šią pasirinkty jei reklama rodoma, net ir 
+įjungus Adblock Plus.">
+<!ENTITY typeSelector.other.label "Kita bėda">
+<!ENTITY typeSelector.other.accesskey "t">
+<!ENTITY typeSelector.other.description "	Pasirinkite šią pasirinkty jei manote jog tai pačio Ablock Plus bėda,
+o ne filtrų.">
+<!ENTITY showRecentReports.label "Rodyti nesenai praneštas problemas">
+<!ENTITY recentReports.label "Jūsų nesenai praneštos problemos">
+<!ENTITY recentReports.clear.label "Pašalinti visus pranešimus">
+<!ENTITY recentReports.clear.accesskey "P">
+<!ENTITY issues.description "	Adblock Plus nustatė klaidų jūsų konfigūracijoje kurios gali būti atsakingos 
+dėl šios problemos arba gali apsunkinti problemų sprendimą.">
+<!ENTITY issues.whitelist.description "	Šiuo metu, šiame puslapyje Adblock Plus yra išjungtas. Prašau įjungti jį 
+ir perkrauti puslapį prieš pranešant apie problemą kuriai 
+spręsti norite pagalbos.">
+<!ENTITY issues.whitelist.remove.label "Šiame puslapyje pakartotinai įjungti Adblock Plus">
+<!ENTITY issues.disabled.description "	Adblock Plus yra išjungtas, tokioje būsenoje jis nieko neužblokuos.">
+<!ENTITY issues.disabled.enable.label "Įjungti Adblock Plus">
+<!ENTITY issues.nofilters.description "	Adblock Plus dabartiniame puslapyje nieko neblokuoja. Problema kurią matote tikriausiai nėra susijusi su Adblock Plus.">
+<!ENTITY issues.nosubscriptions.description "	Atrodo jūs neprenumeruojate jokių sukurtų filtrų sąrašų kurie automatiškai šalintų nepageidaujamą turinį iš puslapių.">
+<!ENTITY issues.nosubscriptions.add.label "Pridėti filtro prenumeratą">
+<!ENTITY issues.subscriptionCount.description "	Atrodo jūs prenumeruojate perdaug filtrų prenumeratų. Tokie nustatymai 
+rekomenduojami, nes tai sumažins problemų tikimybes.
+Taipogi mes negalime priimti jūsų pranešimo, nes
+neaišku kurio filtro autorius turėtų imtis veiksmų. Prašome 
+pašalinti visus tikrai reikalingas filtrų prenumeratas ir 
+patikrinti ar problema vis dar yra.">
+<!ENTITY issues.openPreferences.label "Atverti filtro nustatymus">
+<!ENTITY issues.ownfilters.description "	Kai kurie filtrai pritaikyti šiam puslapiui yra sukurti naudotojo. Išjunkite 
+filtrus kurie galėjo sukelti problemą:">
+<!ENTITY issues.ownfilters.disable.label "Išjungti filtrą">
+<!ENTITY issues.disabledgroups.description "	Šios filtrų prenumeratos / filtrų grupės yra išjungtos, nors jos gali 
+turėti įtakos šiam puslapiui:">
+<!ENTITY issues.disabledgroups.enable.label "Įjungti filtro prenumeratą / filtrų grupę">
+<!ENTITY issues.disabledfilters.description "	Šie filtrai yra išjungti, nors jie gali turėti įtakos šiam puslapiui:">
+<!ENTITY issues.disabledfilters.enable.label "Įjungti filtrą">
+<!ENTITY issues.override.label "Konfigūracija teisinga, tęskite su pranešimu">
+<!ENTITY issues.override.accesskey "g">
+<!ENTITY issues.change.description "	Jūsų konfigūracija pakeista. Perkraukite puslapį ir išbandykite keitimus 
+ir jei problema neišsisprendė praneškite apie ją.">
+<!ENTITY typeWarning.description "	Jūs pareiškėte jog problemą sukėlė Adblock Plus, o ne filtrai. 
+Turėkite omeny jog tokias problemas geriausia pranešti 
+[link]Adblock Plus forume[/link]. Šį problemų pranešėją turėtumėte naudoti 
+tik papildyti esamas diskusijas, niekas nepastebės jūsų pranešimo 
+nebent duosite nuorodą į jį. Automatiškai sukurta nuoroda 
+bus parodyta kai išsiųsite pranešimą.">
+<!ENTITY typeWarning.override.label "Aš suprantu ir vistiek noriu pranešti">
+<!ENTITY typeWarning.override.accesskey "A">
+<!ENTITY reloadButton.label "Įkelti iš naujo">
+<!ENTITY reloadButton.accesskey "Į">
+<!ENTITY screenshot.heading "Pridėti ekranvaizdį">
+<!ENTITY screenshot.description "	Tas pats puslapis skirtingiems žmonėms, atrodo skirtingai. Mums gali padėti 
+prisegtas ekrano vaizdas. Jūs galite pašalinti sritis kuriose 
+gali būti neviešos informacijos, taip pat ir tas kuriose 
+nesimato problemos. Norint tai padaryti paspauskite atitinkamą mygtuką ir pasirinkite 
+reikalingą paveiksliuko dalį su pele.">
+<!ENTITY screenshot.attach.label "Prie pranešimo pridėti puslapio vaizdą">
+<!ENTITY screenshot.attach.accesskey "r">
+<!ENTITY screenshot.mark.label "Pažymėti problemą">
+<!ENTITY screenshot.mark.accesskey "Y">
+<!ENTITY screenshot.remove.label "Pašalinti neviešus duomenis">
+<!ENTITY screenshot.remove.accesskey "P">
+<!ENTITY screenshot.undo.label "Atšaukti">
+<!ENTITY screenshot.undo.accesskey "A">
+<!ENTITY commentPage.heading "Parašykite komentarą">
+<!ENTITY commentPage.description "	Teksto įvedimo laukelis leidžia jums įvesti komentarą kuris mums padės suprasti jūsų problemą. 
+Šis žingsnis nebūtinas, bet rekomenduojamas jei problema neaiški. 
+Taipogi galite peržiūrėti pranešimą prieš jį siunčiant.">
+<!ENTITY comment.label "Komentaras (nebūtinas):">
+<!ENTITY comment.accesskey "K">
+<!ENTITY comment.lengthWarning "Jūsų komentaras ilgesnis nei 1000 simbolių. Bus išsiųsti tik pirmi 1000 simbolių.">
+<!ENTITY email.label "El. paštas tolesnei informacijai (nebūtinas):">
+<!ENTITY email.accesskey "t">
+<!ENTITY attachExtensions.label "Prie pranešimo prisegti aktyvių plėtinių sąrašą, jei kartais problema kilo dėl plėtinių nesuderinamumo">
+<!ENTITY attachExtensions.accesskey "s">
+<!ENTITY sendButton.label "Siųsti pranešimą">
+<!ENTITY sendButton.accesskey "r">
+<!ENTITY showData.label "Rodyti pranešimo duomenis">
+<!ENTITY data.label "Pranešimo duomenys:">
+<!ENTITY data.accesskey "i">
+<!ENTITY sendPage.heading "Siųsti pranešimą">
+<!ENTITY sendPage.waitMessage "Palaukite kol Adblock Plus siunčia jūsų pranešimą.">
+<!ENTITY sendPage.confirmation "Jūsų pranešimas išsaugotas. Jį pasiekti galite šiuo adresu:">
+<!ENTITY sendPage.knownIssue "Pranešta klaida turbūt žinoma. Daugiau informacijos:">
+<!ENTITY sendPage.errorMessage "	Bandymas išsiųsti pranešimą nepavyko, buvo gauta klaida "?1?". Įsitikinkite jog 
+esate prisijungę prie interneto ir bandykite dar kartą. Jei problema vis dar yra paprašykite
+pagalbos forume [link]Adblock Plus forumas[/link].">
+<!ENTITY sendPage.retry.label "Siųsti dar kartą">
+<!ENTITY copyLink.label "Kopijuoti pranešimo nuorodą">
+<!ENTITY copyLink.accesskey "K">
diff --git a/chrome/adblockplus.jar!/locale/lt/sidebar.dtd b/chrome/adblockplus.jar!/locale/lt/sidebar.dtd
new file mode 100644
index 0000000..89648f5
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/sidebar.dtd
@@ -0,0 +1,36 @@
+<!ENTITY detached.title "„Adblock Plus“ blokuojami elementai (iškelta)">
+<!ENTITY detach.label "Iškelti">
+<!ENTITY reattach.label "Iš naujo įkelti">
+<!ENTITY search.label "Ieškoti:">
+<!ENTITY search.accesskey "I">
+<!ENTITY type.label "Tipas">
+<!ENTITY address.label "Adresas">
+<!ENTITY filter.label "Filtras">
+<!ENTITY state.label "Būsena">
+<!ENTITY size.label "Dydis">
+<!ENTITY filterSource.label "Filtruoti pirminį kodą">
+<!ENTITY docDomain.label "Dokumento šaltinis">
+<!ENTITY docDomain.thirdParty "(trečioji šalis)">
+<!ENTITY docDomain.firstParty "(pagrindinis)">
+<!ENTITY noitems.label "Nėra blokuojamų elementų">
+<!ENTITY whitelisted.label "Tinklalapis įtrauktas į išimtis">
+<!ENTITY tooltip.address.label "Adresas:">
+<!ENTITY tooltip.type.label "Tipas:">
+<!ENTITY tooltip.type.blocked "(užblokuota)">
+<!ENTITY tooltip.type.whitelisted "(įtraukta į išimtis)">
+<!ENTITY tooltip.size.label "Dydis:">
+<!ENTITY tooltip.docDomain.label "Dokumento šaltinis:">
+<!ENTITY tooltip.filter.label "Galiojantys filtrai:">
+<!ENTITY tooltip.filter.disabled "(išjungta)">
+<!ENTITY tooltip.filterSource.label "Filtro šaltinis:">
+<!ENTITY context.block.label "Blokuoti šį elementą">
+<!ENTITY context.editfilter.label "Redaguoti aktyvų filtrą">
+<!ENTITY context.whitelist.label "Pridėti išimties taisyklę šiam elementui">
+<!ENTITY context.disablefilter.label "Išjungti filtrą ?1?">
+<!ENTITY context.enablefilter.label "Iš naujo įjungti filtrą ?1?">
+<!ENTITY context.disablefilteronsite.label "Išjungti šį filtrą tinklalapiui ?1?">
+<!ENTITY context.open.label "Atverti naujoje kortelėje">
+<!ENTITY context.flash.label "Paryškinti elemento rėmelį">
+<!ENTITY context.copy.label "Kopijuoti elemento adresą">
+<!ENTITY context.copyFilter.label "Kopijuoti filtrą">
+<!ENTITY context.selectAll.label "Pažymėti viską">
diff --git a/chrome/adblockplus.jar!/locale/lt/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/lt/subscriptionSelection.dtd
new file mode 100644
index 0000000..43a5263
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lt/subscriptionSelection.dtd
@@ -0,0 +1,16 @@
+<!ENTITY dialog.title "Pridėti „Adblock Plus“ filtro prenumeratą">
+<!ENTITY subscriptionSelector.label "Pasirinkite filtro prenumeratą iš šio sąrašo:">
+<!ENTITY viewList.label "Rodyti filtrus">
+<!ENTITY visitHomepage.label "Aplankyti tinklalapį">
+<!ENTITY addSubscription.label "Pridėti prenumeratą">
+<!ENTITY list.download.failed "Adblock Plus nepavyko gauti prenumeratų sąrašo.">
+<!ENTITY list.download.retry "Bandykite dar kartą">
+<!ENTITY list.download.website "Rodyti tinklalapį">
+<!ENTITY fromWeb.description "Patvirtinkite jog norite pridėti šią prenumeratą. Prieš įdedant prenumeratą jūs galite pakeisti jos pavadinimą ar vietą.">
+<!ENTITY title.label "Prenumeratos pavadinimas:">
+<!ENTITY title.accesskey "P">
+<!ENTITY location.label "Filtrų sąrašo vieta:">
+<!ENTITY location.accesskey "v">
+<!ENTITY supplementMessage "Ši filtrų prenumerata skirta naudoti kartu su "?1?" filtrų prenumerata, kurios jūs kol kas nenaudojate.">
+<!ENTITY addMain.label "Taip pat pridėti filtro prenumeratą "?1?"">
+<!ENTITY addMain.accesskey "a">
diff --git a/chrome/adblockplus.jar!/locale/lv/about.dtd b/chrome/adblockplus.jar!/locale/lv/about.dtd
index 37d1b4d..efab940 100644
--- a/chrome/adblockplus.jar!/locale/lv/about.dtd
+++ b/chrome/adblockplus.jar!/locale/lv/about.dtd
@@ -1,10 +1,8 @@
 <!ENTITY dialog.title "Par Adblock Plus">
 <!ENTITY version.title "Versija">
-<!ENTITY description "Adblock Plus ļauj Jums izlemt, ko Jūs vēlaties redzēt internetā.
-	Jums vairs nevajag lejupielādēt reklāmas un banerus; ja jūs tos
-	nevēlaties - noņemiet tos ar Adblock Plus!">
-<!ENTITY homepage.label "Adblock Plus mājas lapa:">
-<!ENTITY author.label "Autors:">
-<!ENTITY contributors.label "Ieguldītāji:">
-<!ENTITY subscriptionAuthors.label "Filtru abonementu autori:">
-<!ENTITY translators.label "Tulkotāji:">
+<!ENTITY description "  Adblock Plus ļauj jums izlemt, ko vēlaties redzēt Internetā.  Jums vairs nav nepieciešams lejupielādēt reklāmu un reklāmkarogus, ja jūs  nevēlaties tos - aizvāciet ar Adblock Plus!">
+<!ENTITY homepage.label "Adblock Plus mājaslapa:">
+<!ENTITY author.label "Autori:">
+<!ENTITY contributors.label "Atbalstītāji:">
+<!ENTITY translators.label "Translators:">
+<!ENTITY subscriptionAuthors.label "Filter subscription authors:">
diff --git a/chrome/adblockplus.jar!/locale/lv/composer.dtd b/chrome/adblockplus.jar!/locale/lv/composer.dtd
index 91a5640..5f6561a 100644
--- a/chrome/adblockplus.jar!/locale/lv/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/lv/composer.dtd
@@ -1,47 +1,47 @@
-<!ENTITY dialog.title "Pievienot Adblock Plus filtra noteikumu">
+<!ENTITY dialog.title "Pievienot Adblock Plus filtra nosacījumu">
 <!ENTITY accept.label "Pievienot filtru">
-<!ENTITY advanced.label "Uzlabotais skats">
-<!ENTITY basic.label "Pamata skats">
-<!ENTITY disabled.warning "Adblock Plus šobrīd ir atspējots. Jūs joprojām varat pievienot filtrus, bet tie netiks pielietoti, ja vien Jūs [link]neiespējosiet Adblock Plus[/link].">
-<!ENTITY groupDisabled.warning "Filtru grupa "?1?", kurai tiks pievienots šis filtrs pašlaik ir atspējota.Jūs joprojām varat pievienot filtrus, bet tie netiks pielietoti, ja vien Jūs [link]neiespējosiet filtru grupu[/link].">
+<!ENTITY advanced.label "Paplašināts skatījums">
+<!ENTITY basic.label "Pamata skatījums">
+<!ENTITY disabled.warning "Adblock Plus šobrīd ir atspējots. Jūs joprojām varat pievienot filtrus, bet tie netiks piemēroti tik ilgi, kamēr jūs [link] neiespējosiet Adblock Plus [/ link].">
+<!ENTITY groupDisabled.warning "Filtrs grupa "?1?" kurai šis filtrs būs jāpievieno pašlaik ir atspējota. Jūs joprojām varat pievienot filtru, taču tas nav piemērojams, kamēr jūs [link] neiespējosiet filtra grupu [/link].">
 <!ENTITY filter.label "Jauns filtrs:">
 <!ENTITY filter.accesskey "f">
 <!ENTITY preferences.label "Rādīt esošos filtrus...">
-<!ENTITY preferences.accesskey "e">
-<!ENTITY type.filter.label "Bloķējošais filtrs">
+<!ENTITY preferences.accesskey "S">
+<!ENTITY type.filter.label "Bloķēšanas filtrs">
 <!ENTITY type.filter.accesskey "B">
-<!ENTITY type.whitelist.label "Izņēmuma noteikums">
-<!ENTITY type.whitelist.accesskey "z">
-<!ENTITY pattern.label "Meklēt shēmu">
-<!ENTITY pattern.explanation "Shēma var būt jebkurā adreses daļā; zvaigznītes (*) funkcionē kā aizstājējzīmes. Filtrs tiks pielietots tikai adresēm, kas atbilst shēmai.">
-<!ENTITY regexp.warning "Jūsu ievadītā shēma tiks interpretēta kā regulārā izteiksme, kuru Adblock Plus nevar veiksmīgi apstrādāt un tā var palēnināt Jūsu pārlūkošanas pieredzi. Ja Jūs nevēlējāties izmantot regulāro izteiksme, pievienojiet zvaigznīti (*) shēmas galā.">
-<!ENTITY shortpattern.warning "Jūsu ievadītā shēma ir pārāk īsa, lai tiktu optimizēta un tā var palēnināt Jūsu pārlūkošanas pieredzi. Tiek rekomendēts izvēlēties garāku rindu šim filtram, lai Adblock Plus varētu to efektīvāk apstrādāt.">
-<!ENTITY match.warning "Jūsu ievadītā shēma vairs neatbilst bloķējamai/baltā saraksta adresei un tai uz to nebūs efekta.">
+<!ENTITY type.whitelist.label "Izņēmuma nosacījums">
+<!ENTITY type.whitelist.accesskey "x">
+<!ENTITY pattern.label "Meklēt paraugu">
+<!ENTITY pattern.explanation "Paraugs var būt jebkura daļa no adreses, zvaigznīte (*) darbojas kā aizstājējzīme. Filtrs var tikt piemērots tikai adresei, kas atbilst paredzētajam modelim.">
+<!ENTITY regexp.warning "Modelis jūs ievadījāt tiks interpretēts kā regulāra izteiksme, ko Adblock Plus nevar efektīvi apstrādāt un tas var palēnināt jūsu pārlūkošanu. Ja jūs neplānojat izmantot regulāra izteiksmi, pievienojiet zvaigznīti (*) parauga beigās.">
+<!ENTITY shortpattern.warning "Paraugs, kuru jūs ievadījāt, ir pārāk īss, lai būtu optimizēts un tas var palēnināt jūsu pārlūkošanu. Ieteicams izvēlēties garāku virkni šim filtram, lai Adblock Plus varētu apstrādāt filtru efektīvāk.">
 <!ENTITY custom.pattern.label "Pielāgots:">
-<!ENTITY custom.pattern.accesskey "P">
-<!ENTITY anchors.label "Akceptēt tikai shēmu:">
+<!ENTITY custom.pattern.accesskey "C">
+<!ENTITY anchors.label "Apstiprināt tiaki paraugus:">
 <!ENTITY anchor.start.label "adreses sākumā">
-<!ENTITY anchor.start.accesskey "s">
+<!ENTITY anchor.start.accesskey "g">
 <!ENTITY anchor.start.flexible.label "domēna vārda sākumā">
-<!ENTITY anchor.start.flexible.accesskey "s">
+<!ENTITY anchor.start.flexible.accesskey "g">
 <!ENTITY anchor.end.label "adreses beigās">
-<!ENTITY anchor.end.accesskey "d">
+<!ENTITY anchor.end.accesskey "n">
 <!ENTITY options.label "Opcijas">
-<!ENTITY domainRestriction.label "Ierobežot domēnā:">
-<!ENTITY domainRestriction.accesskey "I">
-<!ENTITY domainRestriction.help "Izmantojiet šo iespēju, lai norādītu vienu vai vairākus domēnus atdalītus ar joslu līniju (|). Filtrs tiks pielietots tikai norādītajiem domēniem. Tilde (~) pirms domēna norāda, ka filtrs netiks pielietots uz šo domēnu.">
-<!ENTITY firstParty.label "tikai pirmās-puses">
-<!ENTITY firstParty.accesskey "u">
-<!ENTITY thirdParty.label "tikai trešās-puses">
-<!ENTITY thirdParty.accesskey "t">
-<!ENTITY matchCase.label "Reģistr-jutīgs">
-<!ENTITY matchCase.accesskey "R">
+<!ENTITY domainRestriction.label "Ierobežot līdz domēnam:">
+<!ENTITY domainRestriction.accesskey "d">
+<!ENTITY domainRestriction.help "Izmantojiet šo opciju, lai precizētu vienu vai vairākus domēnus, atdalītus ar joslu līniju (|). Filtrs tiks attiecināts tikai uz izvēlēto domēnu(-iem). Tilde (~) pirms domēna vārda norāda, ka filtrs netiek piemērots attiecībā uz šo domēnu.">
+<!ENTITY firstParty.label "Tikai pirmās puses">
+<!ENTITY firstParty.accesskey "r">
+<!ENTITY thirdParty.label "Tikai trešās puses">
+<!ENTITY thirdParty.accesskey "T">
+<!ENTITY matchCase.label "Saderīgs gadījums">
+<!ENTITY matchCase.accesskey "M">
 <!ENTITY types.label "Pielietot tipiem:">
-<!ENTITY selectAllTypes.label "Iezīmēt visu">
-<!ENTITY unselectAllTypes.label "Neiezīmēt neko">
-<!ENTITY collapse.label "Sakļaut bloķētos:">
+<!ENTITY selectAllTypes.label "Izvēlēties visu">
+<!ENTITY unselectAllTypes.label "Izvēlēties nevienu ">
+<!ENTITY collapse.label "Collapse blocked:">
 <!ENTITY collapse.accesskey "l">
-<!ENTITY collapse.default.yes.label "Izmantot noklusējumu (jā)">
-<!ENTITY collapse.default.no.label "Izmantot noklusējumu (nē)">
+<!ENTITY collapse.default.yes.label "Lietot noklusēto vērtību (jā)">
+<!ENTITY collapse.default.no.label "Lietot noklusēto vērtību (nē)">
 <!ENTITY collapse.yes.label "Jā">
 <!ENTITY collapse.no.label "Nē">
+<!ENTITY match.warning "The pattern you entered no longer matches the address to be blocked/whitelisted and will have no effect on it.">
diff --git a/chrome/adblockplus.jar!/locale/lv/filters.dtd b/chrome/adblockplus.jar!/locale/lv/filters.dtd
new file mode 100644
index 0000000..d917264
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lv/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Pievienot filtra abonēšanu">
+<!ENTITY addSubscriptionOther.label "Pievienot citu abonementu">
+<!ENTITY subscription.lastDownload.label "Pēdējā lejupielāde:">
+<!ENTITY subscription.lastDownload.inProgress "Lejupielādē...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Neizdevās, nav derīga adrese">
+<!ENTITY subscription.lastDownload.connectionError "Neizdevās, lejupielāde neizdevās">
+<!ENTITY subscription.lastDownload.invalidData "Neizdevās, nav derīgs filtru saraksts">
+<!ENTITY subscription.lastDownload.checksumMismatch "Neizdevās, kontrolsummas neatbilstība">
+<!ENTITY subscription.lastDownload.success "Izdevās">
+<!ENTITY addFilter.label "Pievienot Filtru">
+<!ENTITY filter.cut.label "Izgriezt">
+<!ENTITY filter.copy.label "Kopēt">
+<!ENTITY filter.paste.label "Ielīmēt">
+<!ENTITY filter.delete.label "Dzēst">
+<!ENTITY viewMenu.label "Skatīt">
+<!ENTITY filter.column "Filtra noteikumi">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Lēni filtri">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "Iespējots">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "Klikšķi">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Pēdējai klikšķis">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Kārtot pēc">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Nesakārtots">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "A > Z kārtošanas secība">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A kārtošanas secība">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Meklēt">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/lv/firstRun.dtd b/chrome/adblockplus.jar!/locale/lv/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/lv/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/lv/global.properties b/chrome/adblockplus.jar!/locale/lv/global.properties
index b6844fc..1c96ce2 100644
--- a/chrome/adblockplus.jar!/locale/lv/global.properties
+++ b/chrome/adblockplus.jar!/locale/lv/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? no ?2?
 blocked_count_addendum=(arī, baltajā sarakstā: ?1?, slēpti: ?2?)
 no_blocking_suggestions=Pašreizējā lapā nav bloķējamu vienību
 whitelisted_page=Pašreizējā lapā Adblock Plus ir ticis deaktivizēts.
-whitelist_description=Mani izņēmumu noteikumi
-filterlist_description=Mani reklāmu bloķēšanas noteikumi
-invalid_description=Mani nederīgie noteikumi
-elemhide_description=Mani elementu slēpšanas noteikumi
-subscription_description=Filtru abonements
-subscription_wrong_version=Lai pareizi darbotos, dažiem filtriem šajā abonementā nepieciešams Adblock Plus ?1?.
-subscription_source=Avots:
-subscription_status=Statuss:
-subscription_status_autodownload=Automātiski atjaunināts
-subscription_status_manualdownload=Manuāli atjaunināts
-subscription_status_externaldownload=Atjaunināts ārēji (cits papildinājums)
-subscription_status_lastdownload=Pēdējā lejupielāde:
-subscription_status_lastdownload_inprogress=Lejupielādē...
-subscription_status_lastdownload_unknown=N/A
 remove_subscription_warning=Vai Jūs tiešām vēlaties noņemt šo abonementu?
-import_filters_wrong_version=Brīdinājums: lai pareizi darbotos, dažiem filtriem šajā sarakstā nepieciešams Adblock Plus ?1?. Jums vajadzētu atjaunināt uz jaunāku Adblock Plus versiju pirms šī saraksta importēšanas.
-import_filters_warning=Vai Jūs vēlaties aizvietot Jūsu pašreizējos filtrus vai pievienot jaunos filtrus saraksta galā?
-import_filters_title=Importēt filtrus
-export_filters_title=Eksportēt filtrus
-invalid_filters_file=Nav derīgs Adblock Plus filtru fails.
-filters_write_error=Rakstot filtrus failā radā kļūda. Pārliecinieties, ka fails nav aizsargāts pret rakstīšanu vai atvērts citā programmā.
-clearall_warning=Vai Jūs tiešām vēlaties noņemt visus filtrus no saraksta?
-resethitcounts_warning=Vai Jūs tiešām vēlaties atiestatīt trāpījumu skaitu atpakaļ uz nulli? Piezīme: šī operācija nevar tik atsaukta.
-resethitcounts_selected_warning=Vai Jūs tiešām vēlaties atiestatīt trāpījumu skaitu izvēlētajiem filtriem atpakaļ uz nulli? Piezīme: šī operācija nevar tik atsaukta.
 filter_regexp_tooltip=Šis filtrs ir vai nu regulārā izteiksme vai arī pārāk īss, lai tiktu optimizēts. Pārāk daudz šādu filtru var palēnināt Jūsu parlūkošanu.
 filter_elemhide_duplicate_id=Tikai viens paslēpjamā elementa ID drīkst tikt norādīts.
 filter_elemhide_nocriteria=Elementa paslēpšanai nav norādīts neviens kritērijs
-subscription_notAdded_warning=Jūs nepievienojāt filtru abonementu. Bez filtru abonementa Jums vajadzēs pievienot manuāli pievienot Adblock Plus filtrus.
-subscription_notAdded_warning_addendum=Vai vēlaties turpināt?
 subscription_invalid_location=Filtru saraksta atrašanās vieta nav ne derīgs URL ne arī derīgs faila nosaukums.
-synchronize_invalid_url=Neizdevās, nav derīga adrese
-synchronize_connection_error=Neizdevās, lejupielāde neizdevās
-synchronize_invalid_data=Neizdevās, nav derīgs filtru saraksts
-synchronize_checksum_mismatch=Neizdevās, kontrolsummas neatbilstība
-synchronize_ok=Izdevās
-overwrite=Pārrakstīt
-append=Pievienot
-new_filter_group_title=Jauns filtrs
 type_label_other=cits
 type_label_script=skripts
 type_label_image=attēls
@@ -56,15 +23,17 @@ type_label_object=objekts
 type_label_subdocument=rāmis
 type_label_document=dokuments
 type_label_elemhide=paslēpts
-type_label_xbl=XBL sasaiste
-type_label_ping=saites ping
 type_label_xmlhttprequest=XML pieprasījums
 type_label_object_subrequest=objekta apakš-pieprasījums
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=fonts
 fennec_status_enabled=Adblock Plus ir iespējots.
 fennec_status_disabled=Adblock Plus ir atspējots.
 fennec_status_enabled_site=Adblock Plus ir iespējots uz ?1?.
 fennec_status_disabled_site=Adblock Plus ir atspējots uz ?1?.
-sync_engine_title=Adblock Plus dati
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/lv/overlay.dtd b/chrome/adblockplus.jar!/locale/lv/overlay.dtd
index 0cd24fd..8f04146 100644
--- a/chrome/adblockplus.jar!/locale/lv/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/lv/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus Iestatījumi">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Bloķējamās vienības">
 <!ENTITY context.image.label "Adblock Plus: Bloķēt attēlu">
 <!ENTITY context.object.label "Adblock Plus: Bloķēt objektu">
 <!ENTITY context.frame.label "Adblock Plus: Bloķēt rāmi">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Bloķējamās vienības šajā lapā">
 <!ENTITY sendReport.label "Iesniegt ziņojumu par šo lapu">
 <!ENTITY sendReport.accesskey "z">
-<!ENTITY settings.label "Iestatījumi">
-<!ENTITY settings.accesskey "t">
 <!ENTITY opensidebar.label "Atvērt bloķējamās vienības">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Aizvērt bloķējamās vienības">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Atspējot uz ?1?">
 <!ENTITY whitelist.page.label "Atspējot tikai šajā lapā">
 <!ENTITY disable.label "Atspējot visur">
-<!ENTITY recommend.label "Rekomendēt mūs Facebook">
+<!ENTITY options.label "Iespējas">
+<!ENTITY options.accesskey "O">
+<!ENTITY showintoolbar.label "Rādīt rīkjoslā">
+<!ENTITY showintoolbar.accesskey "b">
+<!ENTITY showinstatusbar.label "Rādīt stāvokļa joslā">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY objecttabs.label "Rādīt cilnes Flash un Java">
+<!ENTITY objecttabs.accesskey "t">
 <!ENTITY objecttab.title "Bloķēt">
 <!ENTITY objecttab.tooltip "Klikšķini šeit, lai bloķētu šo objektu ar Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY sync.accesskey "c">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY sync.label "Sync Adblock Plus settings">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/lv/sendReport.dtd b/chrome/adblockplus.jar!/locale/lv/sendReport.dtd
index 5e95544..c51cf9a 100644
--- a/chrome/adblockplus.jar!/locale/lv/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/lv/sendReport.dtd
@@ -6,8 +6,7 @@
 <!ENTITY typeSelector.description "Šis log Jūs vedīs cauri nepieciešamajiem soļiem, lai nosūtītu Adblock Plus problēmu ziņojumu. Vispirms, lūdzu izvēlieties tipu problēmai, ko Jūs pieredzat šajā lapā:">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus bloķē pārāk daudz">
 <!ENTITY typeSelector.falsePositive.accesskey "d">
-<!ENTITY typeSelector.falsePositive.description "Izvēlaties šo opciju, ja lai trūkst svarīga saturam tā tiek nepareizi attēlota vai nefunkcionē pareizi. Jūs varat noteikt vai to izraisa Adblock Plus, to 
-īslaicīgi atslēdzot.">
+<!ENTITY typeSelector.falsePositive.description "Izvēlaties šo opciju, ja lai trūkst svarīga saturam tā tiek nepareizi attēlota vai nefunkcionē pareizi. Jūs varat noteikt vai to izraisa Adblock Plus, to nnnīslaicīgi atslēdzot.">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus nebloķē reklāmu">
 <!ENTITY typeSelector.falseNegative.accesskey "r">
 <!ENTITY typeSelector.falseNegative.description "Izvēlaties šo opciju ja reklāma tiek attēlota neskatoties uz to ka Adblock Plus ir ieslēgts.">
diff --git a/chrome/adblockplus.jar!/locale/lv/settings.dtd b/chrome/adblockplus.jar!/locale/lv/settings.dtd
deleted file mode 100644
index 7811359..0000000
--- a/chrome/adblockplus.jar!/locale/lv/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus Iestatījumi">
-<!ENTITY filters.label "Filtri">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Pievienot filtru">
-<!ENTITY add.accesskey "P">
-<!ENTITY addsubscription.label "Pievienot filtru abonementu">
-<!ENTITY addsubscription.accesskey "a">
-<!ENTITY synchsubscriptions.label "Atjaunināt visus abonementus">
-<!ENTITY synchsubscriptions.accesskey "v">
-<!ENTITY import.label "Importēt filtrus">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Eksportēt pielāgotos filtrus">
-<!ENTITY export.accesskey "k">
-<!ENTITY clearall.label "Noņemt visus pielāgotos filtrus">
-<!ENTITY clearall.accesskey "l">
-<!ENTITY resethitcounts.label "Atiestatīt trāpījumu statistiku">
-<!ENTITY resethitcounts.accesskey "t">
-<!ENTITY edit.label "Rediģēt">
-<!ENTITY edit.accesskey "e">
-<!ENTITY cut.label "Izgriezt">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Kopēt">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Ielīmēt">
-<!ENTITY paste.accesskey "I">
-<!ENTITY remove.label "Dzēst">
-<!ENTITY remove.accesskey "D">
-<!ENTITY menu.find.label "Meklēt">
-<!ENTITY menu.find.accesskey "M">
-<!ENTITY menu.findagain.label "Meklēt atkal">
-<!ENTITY menu.findagain.accesskey "l">
-<!ENTITY view.label "Skats">
-<!ENTITY view.accesskey "S">
-<!ENTITY sort.label "Šķirot pēc">
-<!ENTITY sort.accesskey "o">
-<!ENTITY sort.none.label "Nešķirots">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "A > Z šķirošanas secība">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A šķirošanas secība">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opcijas">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Iespējot Adblock Plus">
-<!ENTITY enable.accesskey "I">
-<!ENTITY showintoolbar.label "Rādīt rīkjoslā">
-<!ENTITY showintoolbar.accesskey "r">
-<!ENTITY showinstatusbar.label "Rādīt statusa joslā">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Rādīt cilnes uz Flash un Java">
-<!ENTITY objecttabs.accesskey "c">
-<!ENTITY collapse.label "Sakļaut bloķētos elementus">
-<!ENTITY collapse.accesskey "b">
-<!ENTITY sync.label "Sinhronizēt Adblock Plus iestatījumus">
-<!ENTITY sync.accesskey "n">
-<!ENTITY help.label "Palīdzība">
-<!ENTITY help.accesskey "l">
-<!ENTITY gettingStarted.label "Sākšana">
-<!ENTITY gettingStarted.accesskey "S">
-<!ENTITY faq.label "Bieži uzdotie jautājumi">
-<!ENTITY faq.accesskey "B">
-<!ENTITY filterdoc.label "Adblock Plus filtru veidošana">
-<!ENTITY filterdoc.accesskey "f">
-<!ENTITY about.label "Par Adblock Plus">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Sekojošie filtri nosaka, kuras adreses ir jābloķē un kuras jāatļauj:">
-<!ENTITY filter.column "Filtra noteikums">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Rādīt filtrus">
-<!ENTITY slow.accesskey "d">
-<!ENTITY enabled.column "Iespējots">
-<!ENTITY enabled.accesskey "j">
-<!ENTITY hitcount.column "Trāpījumi">
-<!ENTITY hitcount.accesskey "T">
-<!ENTITY lasthit.column "Pēdējais trāpījums">
-<!ENTITY lasthit.accesskey "P">
-<!ENTITY context.edit.label "Rediģēt filtru">
-<!ENTITY context.resethitcount.label "Atiestatīt trāpījumu statistiku filtram">
-<!ENTITY context.synchsubscription.label "Atjaunināt abonementu tagad">
-<!ENTITY context.editsubscription.label "Rediģēt abonementu">
-<!ENTITY context.moveup.label "Pārvietot filtru uz augšu">
-<!ENTITY context.movedown.label "Pārvietot filtru uz leju">
-<!ENTITY context.movegroupup.label "Pārvietot grupu uz augšu">
-<!ENTITY context.movegroupdown.label "Pārvietot grupu uz leju">
-<!ENTITY context.enable.label "Iespējot">
-<!ENTITY context.disable.label "Atspējot">
-<!ENTITY apply.label "Pielietot">
-<!ENTITY apply.accesskey "i">
-<!ENTITY fennec.subscription.label "Filtru abonements">
diff --git a/chrome/adblockplus.jar!/locale/lv/sidebar.dtd b/chrome/adblockplus.jar!/locale/lv/sidebar.dtd
index 3ce9052..8900be5 100644
--- a/chrome/adblockplus.jar!/locale/lv/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/lv/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Kopēt vienības adresi">
 <!ENTITY context.copyFilter.label "Kopēt filtru">
 <!ENTITY context.selectAll.label "Iezīmēt visu">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/lv/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/lv/subscriptionSelection.dtd
index f0d3eda..f18de3d 100644
--- a/chrome/adblockplus.jar!/locale/lv/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/lv/subscriptionSelection.dtd
@@ -1,27 +1,16 @@
-<!ENTITY dialog.title "Pievienot Adblock Plus filtru abonementu">
-<!ENTITY dialog.title.edit "Rediģēt filtru abonementu">
-<!ENTITY description.newInstall "Adblock Plus visefektīvāk darbosies, ja Jūs pievienosiet filtru abonementu.
-	Filtru abonementus bez maksas piedāvā Adblock Plus lietotāji. Jūsu valodai
-	vispiemērotākais abonements jau ir izvēlēts.">
-<!ENTITY subscriptionSelector.label "Lūdzu izvēlieties filtru abonementu no saraksta:">
+<!ENTITY dialog.title "Pievienot Adblock Plus filtra abonementu">
+<!ENTITY subscriptionSelector.label "Lūdzu, izvēlieties filtru abonementu no saraksta:">
 <!ENTITY viewList.label "Skatīt filtrus">
-<!ENTITY visitHomepage.label "Apmeklēt mājas lapu">
+<!ENTITY visitHomepage.label "Apmeklēt mājaslapu">
 <!ENTITY addSubscription.label "Pievienot abonementu">
-<!ENTITY saveSubscription.label "Saglabāt abonementu">
-<!ENTITY other.label "Pievienot citu abonementu">
-<!ENTITY other.accesskey "c">
-<!ENTITY list.download.failed "Adblock Plus neizdevās iegūt sarakstu ar abonementiem.">
-<!ENTITY list.download.retry "Mēģināt vēlreiz">
-<!ENTITY list.download.website "Apskatīt mājas lapu">
-<!ENTITY fromWeb.description "Lūdzu apstipriniet, ka vēlaties pievienot šo filtru abonementu. Jūs varat izmanīt abonementa nosaukumu vai atrašanās vietu pirms pievienošanas.">
-<!ENTITY edit.description "Ja nepieciešams jūs varat izmanīt abonementa nosaukumu vai atrašanās vietu.">
-<!ENTITY external.description "Šis ir ārējais filtru abonements, tas tiks atjaunināts ar papildinājumu, kas radīja šo abonementu.">
+<!ENTITY list.download.failed "Adblock Plus neizdevās ielādēt abonentu sarakstu.">
+<!ENTITY list.download.retry "Mēģiniet vēlreiz">
+<!ENTITY list.download.website "Skatīt tīmekļa vietni">
+<!ENTITY fromWeb.description "Lūdzu, apstipriniet, ka vēlaties pievienot šī filtra abonementu. Jūs varat mainīt abonementa nosaukumu vai atrašanās vietu pirms pievienošanas.">
 <!ENTITY title.label "Abonementa nosaukums:">
-<!ENTITY title.accesskey "n">
+<!ENTITY title.accesskey "t">
 <!ENTITY location.label "Filtru saraksta atrašanās vieta:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "Automātiski atjaunināt filtrus">
-<!ENTITY autodownload.accesskey "a">
-<!ENTITY supplementMessage "Šo filtru abonementu ir paredzēts lietot kopā ar filtru abonementu "?1?", kuru Jūs vēl nelietojat.">
-<!ENTITY addMain.label "Pievienot arī filtru abonementu "?1?"">
-<!ENTITY addMain.accesskey "f">
+<!ENTITY supplementMessage "Šī filtra abonements ir paredzēts lietošanai kopā ar filtra abonementu "?1?" kuru jūs vēl neizmantojat.">
+<!ENTITY addMain.label "Pievienot arī filtra abonementu "?1?"">
+<!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/mn/about.dtd b/chrome/adblockplus.jar!/locale/mn/about.dtd
index 6970106..d539326 100644
--- a/chrome/adblockplus.jar!/locale/mn/about.dtd
+++ b/chrome/adblockplus.jar!/locale/mn/about.dtd
@@ -1,8 +1,6 @@
 <!ENTITY dialog.title "Adblock Plus-ийн тухай">
 <!ENTITY version.title "Хувилбар">
-<!ENTITY description "Adblock Plus нь вэб хуудас дээр таны харахыг хүсэхгүй байгааг тань шийдэж өгнө.
-	Хэрэв та хүсээгүй зүйлсээ Adblock Plus-д хэлснээр, тэдгээр сурталчилгаа, баннер
-	болон бусад зүйлсийг татах хэрэггүй болно!">
+<!ENTITY description "Adblock Plus нь вэб хуудас дээр таны харахыг хүсэхгүй байгааг тань шийдэж өгнө.nnn	Хэрэв та хүсээгүй зүйлсээ Adblock Plus-д хэлснээр, тэдгээр сурталчилгаа, баннерnn	болон бусад зүйлсийг татах хэрэггүй болно!">
 <!ENTITY homepage.label "Adblock Plus-ийн вэб хуудас:">
 <!ENTITY author.label "Зохиогч:">
 <!ENTITY contributors.label "Дэмжигчид:">
diff --git a/chrome/adblockplus.jar!/locale/mn/filters.dtd b/chrome/adblockplus.jar!/locale/mn/filters.dtd
new file mode 100644
index 0000000..2e27643
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/mn/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Шүүлтүүр мэдээлэгч нэмэх">
+<!ENTITY addSubscriptionOther.label "Өөр мэдээлэгч нэмэх">
+<!ENTITY subscription.lastDownload.label "Сүүлийн таталт:">
+<!ENTITY subscription.lastDownload.inProgress "Татаж байна...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Бүтэлгүйтэв, буруу хаяг">
+<!ENTITY subscription.lastDownload.connectionError "Бүтэлгүйтэв, таталтын бүтэлгүйтэл">
+<!ENTITY subscription.lastDownload.invalidData "Бүтэлгүйтэв, буруу шүүлтүүрийн жагсаалт">
+<!ENTITY subscription.lastDownload.checksumMismatch "Бүтэлгүйтлээ, шалгалт таарсангүй">
+<!ENTITY subscription.lastDownload.success "Амжилттай">
+<!ENTITY addFilter.label "Шүүлт нэмэх">
+<!ENTITY filter.cut.label "Хайчлах">
+<!ENTITY filter.copy.label "Хуулах">
+<!ENTITY filter.paste.label "Тавих">
+<!ENTITY filter.delete.label "Устгах">
+<!ENTITY viewMenu.label "Харах">
+<!ENTITY filter.column "Шүүх дүрэм">
+<!ENTITY filter.accesskey "Ш">
+<!ENTITY slow.column "Удаан шүүлтүүрүүд">
+<!ENTITY slow.accesskey "У">
+<!ENTITY enabled.column "Идэвхтэй">
+<!ENTITY enabled.accesskey "И">
+<!ENTITY hitcount.column "Хандалт">
+<!ENTITY hitcount.accesskey "Х">
+<!ENTITY lasthit.column "Сүүлийн хандалт">
+<!ENTITY lasthit.accesskey "С">
+<!ENTITY sort.label "Эрэмбэлэх нь">
+<!ENTITY sort.accesskey "Э">
+<!ENTITY sort.none.label "Эрэмбэ үгүй">
+<!ENTITY sort.none.accesskey "Ү">
+<!ENTITY sort.ascending.label "А > Я эрэмбэлэх">
+<!ENTITY sort.ascending.accesskey "А">
+<!ENTITY sort.descending.label "Я > А эрэмбэлэх">
+<!ENTITY sort.descending.accesskey "Я">
+<!ENTITY find.label "Хайх">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/mn/firstRun.dtd b/chrome/adblockplus.jar!/locale/mn/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/mn/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/mn/global.properties b/chrome/adblockplus.jar!/locale/mn/global.properties
index 6627b05..dc24434 100644
--- a/chrome/adblockplus.jar!/locale/mn/global.properties
+++ b/chrome/adblockplus.jar!/locale/mn/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? хэтрэлт ?2?
 blocked_count_addendum=(зөвшөөрөгдсөн: ?1?, нууцлагдсан: ?2?)
 no_blocking_suggestions=Тухайн хуудсанд хашигдах зүйлс алга
 whitelisted_page=Adblock Plus нь тухайн хуудсанд хаалттай байна
-whitelist_description=Онцгой дүрмүүд
-filterlist_description=Сурталчилгааны шүүлтүүр
-invalid_description=Буруу шүүлтүүр
-elemhide_description=Элемент хайх дүрмүүд
-subscription_description=Шүүлтүүр мэдээлэгч:
-subscription_wrong_version=Уг мэдээлэгч дэх зарим шүүлтүүр нь Adblock Plus-ийг шаардана ?1? зөв ажиллахын тулд!
-subscription_source=Эх сурвалж:
-subscription_status=Төлөв:
-subscription_status_autodownload=Автоаматаар шинэчлэгдсэн
-subscription_status_manualdownload=Гараар шинэчлэгдсэн
-subscription_status_externaldownload=Бусдаар (өөр нэмэлт) шинэчлэгдсэн
-subscription_status_lastdownload=Сүүлийн таталт:
-subscription_status_lastdownload_inprogress=Татаж байна...
-subscription_status_lastdownload_unknown=N/A
 remove_subscription_warning=Та үнэхээр уг мэдээлэгчийг устгамаар байна уу?
-import_filters_wrong_version=Анхааруулга: уг жагсаалт дах шүүлтүүрүүдийн зарим нь Adblock Plus-ийг шаардана ?1? зөв ажиллахын тулд. Энэ жагсаалтыг оруулахаасаа өмнө магадгүй та Adblock Plus-ийн сүүлийн байдлаарх хувилбараар шинэчлэх хэрэгтэй.
-import_filters_warning=Та тухайн шүүлтүүрүүдийг солих эсвэл шинэ шүүлтүүрүүдийг жагсаалтын төгсгөлд нэмэхийг хүсэж байна уу?
-import_filters_title=Шүүлтүүрүүд оруулах
-export_filters_title=Шүүлтүүрүүд гаргах
-invalid_filters_file=Adblock Plus-ийн шүүлтүүрийн зөв файл биш байна.
-filters_write_error=Шүүлтүүрүүдийг файл руу бичих үест алдаа гарлаа. Файл нь бичигдэх эрхтэй эсвэл өөр програм ашиглаж буй эсэхийг шалгана уу.
-clearall_warning=Та жагсаалтаас бүх шүүлтүүрүүдийг устгамаар байна уу?
-resethitcounts_warning=Та бүх шүүлтүүрийн хандалтын тоог буцааж тэг болгомоор байна уу? Уг үйлдлийг буцааж болдоггүй!
-resethitcounts_selected_warning=Та сонгогдсон шүүлтүүрийн хандалтын тоог буцааж тэг болгомоор байна уу? Уг үйлдлийг буцааж болдоггүй!
 filter_regexp_tooltip=Шүүлтүүр нь энгийн илэрхийлэл эсвэл богино байвал зохимжтой. Хэт их шүүлтүүр нь таны хөтчийг удаашруулах магадлалтай.
 filter_elemhide_duplicate_id=Нуух элементүүдийн зөвхөн нэг ID нь тодорхойлогдох боломжтой
 filter_elemhide_nocriteria=Нуух элементийг таних шалгуур тодорхойлогдоогүй байна
-subscription_notAdded_warning=Та шүүлтүүр мэдээлэгч нэмээгүй байна.  Шүүлтүүр мэдээлэгчгүй бол та Adblock Plus шүүлтүүр гараар нэмэх хэрэгтэй.
-subscription_notAdded_warning_addendum=Та үргэлжлүүлэх үү?
 subscription_invalid_location=Шүүлтүүрийн жагсаалтын байрлал нь буруу URL эсвэл файлын нэр буруу.
-synchronize_invalid_url=Бүтэлгүйтэв, буруу хаяг
-synchronize_connection_error=Бүтэлгүйтэв, таталтын бүтэлгүйтэл
-synchronize_invalid_data=Бүтэлгүйтэв, буруу шүүлтүүрийн жагсаалт
-synchronize_checksum_mismatch=Бүтэлгүйтлээ, шалгалт таарсангүй
-synchronize_ok=Амжилттай
-overwrite=Давхарлах
-append=Нэмэх
-new_filter_group_title=Шинэ шүүлтүүр
 type_label_other=бусад
 type_label_script=скрипт
 type_label_image=зураг
@@ -56,15 +23,17 @@ type_label_object=объект
 type_label_subdocument=хүрээ
 type_label_document=баримт
 type_label_elemhide=нууц
-type_label_xbl=XBL боолт
-type_label_ping=холбоос шалгах
 type_label_xmlhttprequest=XML хүсэлт
 type_label_object_subrequest=объект дэдхүсэлт
-type_label_dtd=ДТД
 type_label_media=дуу/дүрс
 type_label_font=үсэг
 fennec_status_enabled=Adblock Идэвхтэй
 fennec_status_disabled=Adblock хаалттай
 fennec_status_enabled_site=Adblock Plus ?1?-д нээлттэй.
 fennec_status_disabled_site=Adblock Plus ?1?-д хаалттай.
-sync_engine_title=Adblock Plus өгөгдөл
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/mn/overlay.dtd b/chrome/adblockplus.jar!/locale/mn/overlay.dtd
index 05adaab..e8311c4 100644
--- a/chrome/adblockplus.jar!/locale/mn/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/mn/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Нэмэх">
-<!ENTITY view.blockableItems.label "Adblock Нэмэх:Хашигдахуйц зүйлс">
 <!ENTITY context.image.label "Adblock Зураг">
 <!ENTITY context.object.label "Adblock Объект">
 <!ENTITY context.frame.label "Adblock Хүрээ">
@@ -13,15 +12,31 @@
 <!ENTITY sidebar.title "Тухайн хуудас дахь хашигдаж болох зүйлс">
 <!ENTITY sendReport.label "Энэ хуудас дахь асуудлыг мэдэгдэх">
 <!ENTITY sendReport.accesskey "М">
-<!ENTITY settings.label "Тохиргоонууд">
-<!ENTITY settings.accesskey "Т">
 <!ENTITY opensidebar.label "Хашигдах зүйлсийг нээх">
 <!ENTITY opensidebar.accesskey "Х">
 <!ENTITY closesidebar.label "Хашигдах зүйлсийг хаах">
 <!ENTITY closesidebar.accesskey "Х">
 <!ENTITY whitelist.site.label "Хаах нь ?1?">
 <!ENTITY whitelist.page.label "Зөвхөн уг хуудсанд хаах">
+<!ENTITY options.label "Сонголтууд">
+<!ENTITY options.accesskey "О">
+<!ENTITY showintoolbar.label "Хэрэгслийн мөрт харуулах">
+<!ENTITY showintoolbar.accesskey "М">
+<!ENTITY showinstatusbar.label "Төлвийн мөрт харуулах">
+<!ENTITY showinstatusbar.accesskey "Т">
+<!ENTITY objecttabs.label "Flash болон Java-д tab харуулах">
+<!ENTITY objecttabs.accesskey "Х">
 <!ENTITY objecttab.title "Хаших">
 <!ENTITY objecttab.tooltip "Энд дарвал уг объектийг Adblock Plus-аар хаших болно">
+<!ENTITY filters.label "Filter preferences">
 <!ENTITY disable.label "Disable everywhere">
-<!ENTITY recommend.label "Recommend us on Facebook">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY sync.accesskey "c">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY sync.label "Sync Adblock Plus settings">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/mn/settings.dtd b/chrome/adblockplus.jar!/locale/mn/settings.dtd
deleted file mode 100644
index 35c3003..0000000
--- a/chrome/adblockplus.jar!/locale/mn/settings.dtd
+++ /dev/null
@@ -1,91 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus Тохиргоонууд">
-<!ENTITY filters.label "Шүүлтүүрүүд">
-<!ENTITY filters.accesskey "Ш">
-<!ENTITY add.label "Шүүлт нэмэх">
-<!ENTITY add.accesskey "Н">
-<!ENTITY addsubscription.label "Шүүлтүүр мэдээлэгч нэмэх">
-<!ENTITY addsubscription.accesskey "М">
-<!ENTITY synchsubscriptions.label "Бүх мэдээлэгчийг шинэчлэх">
-<!ENTITY synchsubscriptions.accesskey "Б">
-<!ENTITY import.label "Шүүлтүүр оруулах">
-<!ENTITY import.accesskey "О">
-<!ENTITY export.label "Шүүлтүүр гаргах">
-<!ENTITY export.accesskey "Г">
-<!ENTITY clearall.label "Бүх шүүлтүүрүүдийг хасах">
-<!ENTITY clearall.accesskey "С">
-<!ENTITY resethitcounts.label "Хандалтын төлвийг эхлүүлэх">
-<!ENTITY resethitcounts.accesskey "Т">
-<!ENTITY edit.label "Засвар">
-<!ENTITY edit.accesskey "З">
-<!ENTITY cut.label "Хайчлах">
-<!ENTITY cut.accesskey "Ч">
-<!ENTITY copy.label "Хуулах">
-<!ENTITY copy.accesskey "Х">
-<!ENTITY paste.label "Тавих">
-<!ENTITY paste.accesskey "Т">
-<!ENTITY remove.label "Устгах">
-<!ENTITY remove.accesskey "У">
-<!ENTITY menu.find.label "Хайх">
-<!ENTITY menu.find.accesskey "А">
-<!ENTITY menu.findagain.label "Дахин хайх">
-<!ENTITY menu.findagain.accesskey "Д">
-<!ENTITY view.label "Харах">
-<!ENTITY view.accesskey "Х">
-<!ENTITY sort.label "Эрэмбэлэх нь">
-<!ENTITY sort.accesskey "Э">
-<!ENTITY sort.none.label "Эрэмбэ үгүй">
-<!ENTITY sort.none.accesskey "Ү">
-<!ENTITY sort.ascending.label "А > Я эрэмбэлэх">
-<!ENTITY sort.ascending.accesskey "А">
-<!ENTITY sort.descending.label "Я > А эрэмбэлэх">
-<!ENTITY sort.descending.accesskey "Я">
-<!ENTITY options.label "Сонголтууд">
-<!ENTITY options.accesskey "О">
-<!ENTITY enable.label "Adblock Plus идэвхтэй">
-<!ENTITY enable.accesskey "И">
-<!ENTITY showintoolbar.label "Хэрэгслийн мөрт харуулах">
-<!ENTITY showintoolbar.accesskey "М">
-<!ENTITY showinstatusbar.label "Төлвийн мөрт харуулах">
-<!ENTITY showinstatusbar.accesskey "Т">
-<!ENTITY objecttabs.label "Flash болон Java-д tab харуулах">
-<!ENTITY objecttabs.accesskey "Х">
-<!ENTITY collapse.label "Хашигдсан элементийг хумих">
-<!ENTITY collapse.accesskey "Э">
-<!ENTITY help.label "Тусламж">
-<!ENTITY help.accesskey "Т">
-<!ENTITY gettingStarted.label "Эхлэл">
-<!ENTITY gettingStarted.accesskey "Э">
-<!ENTITY faq.label "Түгээмэл Асуултын Хариултууд">
-<!ENTITY faq.accesskey "А">
-<!ENTITY filterdoc.label "Adblock Plus шүүлтүүрүүд бичих">
-<!ENTITY filterdoc.accesskey "Б">
-<!ENTITY about.label "Adblock Plus-ийн тухай">
-<!ENTITY about.accesskey "Т">
-<!ENTITY description "Хашихыг хүссэн хаягаа нэмэхдээ, доош унжих жагсаалтаас авч боломжтой.
-		Та * ашиглан илүү ерөнхий шүүлтүүр үүсгэж болно. Илүү хэрэглэгчид
-		энгийн илэрхийлэл (regexpression) ашиглаж чадна. Ж: /banner\d+\.gif$/.">
-<!ENTITY filter.column "Шүүх дүрэм">
-<!ENTITY filter.accesskey "Ш">
-<!ENTITY slow.column "Удаан шүүлтүүрүүд">
-<!ENTITY slow.accesskey "У">
-<!ENTITY enabled.column "Идэвхтэй">
-<!ENTITY enabled.accesskey "И">
-<!ENTITY hitcount.column "Хандалт">
-<!ENTITY hitcount.accesskey "Х">
-<!ENTITY lasthit.column "Сүүлийн хандалт">
-<!ENTITY lasthit.accesskey "С">
-<!ENTITY context.edit.label "Шүүлтүүр засах">
-<!ENTITY context.resethitcount.label "Шүүлтүүрийн хандалтын статистикийг эхлүүлэх">
-<!ENTITY context.synchsubscription.label "Мэдээлэгчийг одоо шинэчлэх">
-<!ENTITY context.editsubscription.label "Мэдээлэгч засах">
-<!ENTITY context.moveup.label "Дээшлүүлэх">
-<!ENTITY context.movedown.label "Доошлуулах">
-<!ENTITY context.movegroupup.label "Бүлгийг дээшлүүлэх">
-<!ENTITY context.movegroupdown.label "Бүлгийг доошлуулах">
-<!ENTITY context.enable.label "Нээх">
-<!ENTITY context.disable.label "Хаах">
-<!ENTITY apply.label "Хэрэглэх">
-<!ENTITY apply.accesskey "Г">
-<!ENTITY fennec.subscription.label "Шүүх мэдээлэгч">
-<!ENTITY sync.accesskey "c">
-<!ENTITY sync.label "Sync Adblock Plus settings">
diff --git a/chrome/adblockplus.jar!/locale/mn/sidebar.dtd b/chrome/adblockplus.jar!/locale/mn/sidebar.dtd
index 52b2805..64df3b5 100644
--- a/chrome/adblockplus.jar!/locale/mn/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/mn/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Зүйлийн хаягийг сануулах">
 <!ENTITY context.copyFilter.label "Шүүлтүүр хуулах">
 <!ENTITY context.selectAll.label "Бүгдийг сонгох">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/mn/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/mn/subscriptionSelection.dtd
index 80a3b99..6dd1258 100644
--- a/chrome/adblockplus.jar!/locale/mn/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/mn/subscriptionSelection.dtd
@@ -1,12 +1,8 @@
 <!ENTITY dialog.title "Adblock Plus-д тавтай морил">
-<!ENTITY dialog.title.edit "Шүүлтүүрийн мэдээлэгч засах">
 <!ENTITY subscriptionSelector.label "Жагсаалтаас шүүх мэдээлэгч сонгоно уу:">
 <!ENTITY viewList.label "Шүүлтүүрүүд харах">
 <!ENTITY visitHomepage.label "Үндсэн хуудсанд зочлох">
 <!ENTITY addSubscription.label "Мэдээлэгч нэмэх">
-<!ENTITY saveSubscription.label "Мэдээлэгч хадгалах">
-<!ENTITY other.label "Өөр мэдээлэгч нэмэх">
-<!ENTITY other.accesskey "Ө">
 <!ENTITY list.download.failed "Adblock Plus нь мэдээлэгчийн жагсаалтыг татаж чадсангүй.">
 <!ENTITY list.download.retry "Дахиж оролдох">
 <!ENTITY list.download.website "Вэбсайтыг харах">
@@ -14,17 +10,7 @@
 <!ENTITY title.accesskey "Г">
 <!ENTITY location.label "Шүүлтүүрийн жагсаалтын байршил:">
 <!ENTITY location.accesskey "Б">
-<!ENTITY autodownload.label "Автоматаар шинэчлэх">
-<!ENTITY autodownload.accesskey "В">
 <!ENTITY addMain.label "Шүүх мэдээлэгч "?1?" нэмэх">
 <!ENTITY addMain.accesskey "Ш">
-<!ENTITY description.newInstall "
-  Adblock Plus will be most effective if you add a filter subscription.
-  Filter subscriptions are provided by other Adblock Plus users free of
-  charge. The most suitable subscription for your language is already
-  selected.
-">
-<!ENTITY external.description "This is an external filter subscription; it will be updated by the extension that created this subscription.">
-<!ENTITY fromWeb.description "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it.">
 <!ENTITY supplementMessage "This filter subscription is meant to be used with the filter subscription &quot;?1?&quot; which you are not using yet.">
-<!ENTITY edit.description "You can change the subscription title or location as necessary.">
+<!ENTITY fromWeb.description "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it.">
diff --git a/chrome/adblockplus.jar!/locale/ms-MY/filters.dtd b/chrome/adblockplus.jar!/locale/ms-MY/filters.dtd
new file mode 100644
index 0000000..7f02437
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ms-MY/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Tambah langganan penapis">
+<!ENTITY addSubscriptionOther.label "Tambah langganan lain">
+<!ENTITY subscription.lastDownload.label "Muat-turun terakhir:">
+<!ENTITY subscription.lastDownload.inProgress "Memuat-turun...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Gagal, bukan alamat yang sah">
+<!ENTITY subscription.lastDownload.connectionError "Gagal, kegagalan memuat-turun">
+<!ENTITY subscription.lastDownload.invalidData "Gagal, bukan senarai penapis yang sah">
+<!ENTITY subscription.lastDownload.checksumMismatch "Gagal, checksum tidak sepadan">
+<!ENTITY subscription.lastDownload.success "Berjaya">
+<!ENTITY addFilter.label "Tambah penapis">
+<!ENTITY filter.cut.label "Potong">
+<!ENTITY filter.copy.label "Salin">
+<!ENTITY filter.paste.label "Tampal">
+<!ENTITY filter.delete.label "Padam">
+<!ENTITY viewMenu.label "Papar">
+<!ENTITY filter.column "Peraturan penapis">
+<!ENTITY filter.accesskey "r">
+<!ENTITY slow.column "Lambatkan penapis">
+<!ENTITY slow.accesskey "L">
+<!ENTITY enabled.column "Diaktifkan">
+<!ENTITY enabled.accesskey "D">
+<!ENTITY hitcount.column "Hit">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Hit terakhir">
+<!ENTITY lasthit.accesskey "e">
+<!ENTITY sort.label "Susun dengan">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Tidak disusun">
+<!ENTITY sort.none.accesskey "T">
+<!ENTITY sort.ascending.label "Susunan A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Susunan Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Cari">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/ms-MY/firstRun.dtd b/chrome/adblockplus.jar!/locale/ms-MY/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ms-MY/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/ms-MY/global.properties b/chrome/adblockplus.jar!/locale/ms-MY/global.properties
index 75c2a6f..33eb4a8 100644
--- a/chrome/adblockplus.jar!/locale/ms-MY/global.properties
+++ b/chrome/adblockplus.jar!/locale/ms-MY/global.properties
@@ -4,50 +4,17 @@ action1_tooltip=Klik untuk membuka/menutup item yang boleh disekat, klik tengah
 action2_tooltip=Klik untuk buka tatarajah, klik tengah untuk aktifkan/nyahaktifkan.
 action3_tooltip=Klik untuk aktifkan/nyahaktifkan Adblock Plus.
 disabled_tooltip=Adblock Plus telah dinyahaktifkan.
-active_tooltip=Adblock Plus telah diaktifkan, ?1? langganan penapis dan ?2? penapis sendiri digunakan.
+active_tooltip=Adblock Plus telah dinyahaktifkan, ?1? langganan penapis dan ?2? penapis sendiri digunakan.
 whitelisted_tooltip=Adblock Plus dinyahaktifkan pada laman semasa.
 blocked_count_tooltip=?1? daripada ?2?
 blocked_count_addendum=(juga dikecualikan: ?1?, disembunyikan: ?2?
 no_blocking_suggestions=Tiada item yang boleh disekat pada laman semasa
 whitelisted_page=Adblock Plus telah dinyahaktifkan untuk laman semasa
-whitelist_description=Peraturan pengecualian saya
-filterlist_description=Peraturan penyekatan iklan saya
-invalid_description=Peraturan tidak sah saya
-elemhide_description=Peraturan menyembunyikan elemen saya
-subscription_description=Langganan penapis:
-subscription_wrong_version=Beberapa penapis dalam langganan ini memerlukan Adblock Plus ?1? untuk berfungsi.
-subscription_source=Sumber:
-subscription_status=Status:
-subscription_status_autodownload=Dikemaskini secara automatik
-subscription_status_manualdownload=Dikemaskini secara manual
-subscription_status_externaldownload=Dikemaskini secara luar (extension lain)
-subscription_status_lastdownload=Muat-turun terakhir:
-subscription_status_lastdownload_inprogress=Memuat-turun...
-subscription_status_lastdownload_unknown=N/A
 remove_subscription_warning=Adakah anda mahu membuang langganan ini?
-import_filters_wrong_version=Amaran: beberapa penapis dalam senarai ini memerlukan Adblock Plus ?1? untuk berfungsi dengan sempurna. Anda perlu menaiktaraf Adblock Plus kepada yang terbaru sebelum mengimport senarai ini.
-import_filters_warning=Adakah anda mahu menggantikan penapis sedia ada atau melampirkan penapis baru pada akhir senarai sedia ada?
-import_filters_title=Import penapis
-export_filters_title=Eksport penapis
-invalid_filters_file=Bukan fail penapis Adblock Plus yang sah.
-filters_write_error=Terdapat ralat dalam menulis penapis pada fail. Pastikan fail tidak dilindung-tulis atau dibuka dalam program lain.
-clearall_warning=Adakah anda mahu membuang semua penapis dari senarai?
-resethitcounts_warning=Adakah anda mahu reset semula pembilang hit semua penapis menjadi kosong? Operasi ini tidak boleh diundur!
-resethitcounts_selected_warning=Adakah anda mahu reset semula pembilang hit penapis yang dipilih menjadi kosong? Operasi ini tidak boleh diundur!
 filter_regexp_tooltip=Penapis ini hanya ungkapan biasa atau terlalu pendek untuk dioptimumkan. Terlalu banyak penapis mungkin akan melambatkan penjelajahan web.
 filter_elemhide_duplicate_id=Hanya satu ID elemen untuk disembunyikan boleh dinyatakan
 filter_elemhide_nocriteria=Tiada kriteria yang dinyatakan untuk mengenal pasti elemen untuk disembunyikan
-subscription_notAdded_warning=Anda belum lagi menambah langganan penapis. Tanpa langganan penapis anda perlu menambah penapis Adblock Plus secara manual.
-subscription_notAdded_warning_addendum=Adakah anda mahu mara?
 subscription_invalid_location=Lokasi senarai penapis sama ada URL atau nama fail adalah tidak sah.
-synchronize_invalid_url=Gagal, bukan alamat yang sah
-synchronize_connection_error=Gagal, kegagalan memuat-turun
-synchronize_invalid_data=Gagal, bukan senarai penapis yang sah
-synchronize_checksum_mismatch=Gagal, checksum tidak sepadan
-synchronize_ok=Berjaya
-overwrite=Tulis atas
-append=Lampirkan
-new_filter_group_title=Penapis baru
 type_label_other=lain
 type_label_script=skrip
 type_label_image=imej
@@ -56,15 +23,17 @@ type_label_object=objek
 type_label_subdocument=bingkai
 type_label_document=dokumen
 type_label_elemhide=disembunyikan
-type_label_xbl=Ikatan XBL
-type_label_ping=pautan ping
 type_label_xmlhttprequest=permintaan XML
 type_label_object_subrequest=subpermintaan objek
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=font
 fennec_status_enabled=Adblock Plus telah diaktifkan
 fennec_status_disabled=Adblock Plus telah dinyahaktifkan
 fennec_status_enabled_site=Adblock Plus telah diaktifkan pada ?1?
 fennec_status_disabled_site=Adblock Plus telah dinyahaktifkan pada ?1?
-sync_engine_title=Data Adblock Plus
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/ms-MY/overlay.dtd b/chrome/adblockplus.jar!/locale/ms-MY/overlay.dtd
index e43ce47..5d18c64 100644
--- a/chrome/adblockplus.jar!/locale/ms-MY/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/ms-MY/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Pilihan Adblock Plus">
 <!ENTITY menuitem.accesskey "P">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Item yang boleh disekat">
 <!ENTITY context.image.label "Adblock Plus: Sekat imej">
 <!ENTITY context.object.label "Adblock Plus: Sekat objek">
 <!ENTITY context.frame.label "Adblock Plus: Sekat bingkai">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Item yang boleh disekat pada laman semasa">
 <!ENTITY sendReport.label "Lapor isu pada laman ini">
 <!ENTITY sendReport.accesskey "L">
-<!ENTITY settings.label "Tatarajah">
-<!ENTITY settings.accesskey "T">
 <!ENTITY opensidebar.label "Buka item yang boleh disekat">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Tutup item yang boleh disekat">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Nyahaktifkan pada ?1?">
 <!ENTITY whitelist.page.label "Nyahaktifkan pada laman ini sahaja">
 <!ENTITY disable.label "Nyahaktif di semua tempat">
-<!ENTITY recommend.label "Sarankan kami di Facebook">
+<!ENTITY options.label "Pilihan">
+<!ENTITY options.accesskey "n">
+<!ENTITY showintoolbar.label "Paparkan di bar alatan">
+<!ENTITY showintoolbar.accesskey "n">
+<!ENTITY showinstatusbar.label "Paparkan di bar status">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY objecttabs.label "Paparkan tab pada Flash dan Java">
+<!ENTITY objecttabs.accesskey "t">
+<!ENTITY sync.label "Sync tatacara Adblock Plus">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Sekat">
 <!ENTITY objecttab.tooltip "Klik di sini untuk menyekat objek ini dengan Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/ms-MY/settings.dtd b/chrome/adblockplus.jar!/locale/ms-MY/settings.dtd
deleted file mode 100644
index aa0e124..0000000
--- a/chrome/adblockplus.jar!/locale/ms-MY/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Tatarajah Adblock Plus">
-<!ENTITY filters.label "Penapis">
-<!ENTITY filters.accesskey "P">
-<!ENTITY add.label "Tambah penapis">
-<!ENTITY add.accesskey "T">
-<!ENTITY addsubscription.label "Tambah langganan penapis">
-<!ENTITY addsubscription.accesskey "a">
-<!ENTITY synchsubscriptions.label "Kemaskini semua langganan">
-<!ENTITY synchsubscriptions.accesskey "K">
-<!ENTITY import.label "Import penapis">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Eksport penapis">
-<!ENTITY export.accesskey "E">
-<!ENTITY clearall.label "Buang semua penapis">
-<!ENTITY clearall.accesskey "B">
-<!ENTITY resethitcounts.label "Reset semula pembilang hit">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Ubah">
-<!ENTITY edit.accesskey "U">
-<!ENTITY cut.label "Potong">
-<!ENTITY cut.accesskey "t">
-<!ENTITY copy.label "Salin">
-<!ENTITY copy.accesskey "S">
-<!ENTITY paste.label "Tampal">
-<!ENTITY paste.accesskey "m">
-<!ENTITY remove.label "Padam">
-<!ENTITY remove.accesskey "d">
-<!ENTITY menu.find.label "Cari">
-<!ENTITY menu.find.accesskey "C">
-<!ENTITY menu.findagain.label "Cari lagi">
-<!ENTITY menu.findagain.accesskey "g">
-<!ENTITY view.label "Papar">
-<!ENTITY view.accesskey "r">
-<!ENTITY sort.label "Susun dengan">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Tidak disusun">
-<!ENTITY sort.none.accesskey "T">
-<!ENTITY sort.ascending.label "Susunan A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Susunan Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Pilihan">
-<!ENTITY options.accesskey "n">
-<!ENTITY enable.label "Aktifkan Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Paparkan di bar alatan">
-<!ENTITY showintoolbar.accesskey "n">
-<!ENTITY showinstatusbar.label "Paparkan di bar status">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Paparkan tab pada Flash dan Java">
-<!ENTITY objecttabs.accesskey "t">
-<!ENTITY collapse.label "Jatuhkan semua elemen yang disekat">
-<!ENTITY collapse.accesskey "J">
-<!ENTITY sync.label "Sync tatacara Adblock Plus">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Bantuan">
-<!ENTITY help.accesskey "B">
-<!ENTITY gettingStarted.label "Persediaan untuk mengguna">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "Soalan kerap ditanya">
-<!ENTITY faq.accesskey "o">
-<!ENTITY filterdoc.label "Menulis penapis Adblock Plus">
-<!ENTITY filterdoc.accesskey "u">
-<!ENTITY about.label "Perihal Adblock Plus">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Penapis berikut menentukan alamat mana yang perlu disekat dan mana yang perlu dibenarkan:">
-<!ENTITY filter.column "Peraturan penapis">
-<!ENTITY filter.accesskey "r">
-<!ENTITY slow.column "Lambatkan penapis">
-<!ENTITY slow.accesskey "L">
-<!ENTITY enabled.column "Diaktifkan">
-<!ENTITY enabled.accesskey "D">
-<!ENTITY hitcount.column "Hit">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "Hit terakhir">
-<!ENTITY lasthit.accesskey "e">
-<!ENTITY context.edit.label "Ubah penapis">
-<!ENTITY context.resethitcount.label "Reset semua statistik hit untuk penapis">
-<!ENTITY context.synchsubscription.label "Kemaskini langganan sekarang">
-<!ENTITY context.editsubscription.label "Ubah langganan">
-<!ENTITY context.moveup.label "Pindah penapis ke atas">
-<!ENTITY context.movedown.label "Pindah penapis ke bawah">
-<!ENTITY context.movegroupup.label "Pindah kumpulan ke atas">
-<!ENTITY context.movegroupdown.label "Pindah kumpulan ke bawah">
-<!ENTITY context.enable.label "Aktifkan">
-<!ENTITY context.disable.label "Nyahaktifkan">
-<!ENTITY apply.label "Hidupkan">
-<!ENTITY apply.accesskey "H">
-<!ENTITY fennec.subscription.label "Langganan penapis">
diff --git a/chrome/adblockplus.jar!/locale/ms-MY/sidebar.dtd b/chrome/adblockplus.jar!/locale/ms-MY/sidebar.dtd
index 97b2b9b..6422ef2 100644
--- a/chrome/adblockplus.jar!/locale/ms-MY/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/ms-MY/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Salin alamat item">
 <!ENTITY context.copyFilter.label "Salin penapis">
 <!ENTITY context.selectAll.label "Pilih semua">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/ms-MY/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ms-MY/subscriptionSelection.dtd
index 7194261..0a9cd68 100644
--- a/chrome/adblockplus.jar!/locale/ms-MY/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/ms-MY/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Tambah langganan penapis Adblock Plus">
-<!ENTITY dialog.title.edit "Ubah deskripsi penapis">
-<!ENTITY description.newInstall "Adblock Plus paling berkesan jika anda menambah langganan penapis. Langganan penapis dibekalkan pengguna Adblock Plus lain secara percuma. Langganan yang paling sesuai dengan bahasa anda telah pun dipilih.">
 <!ENTITY subscriptionSelector.label "Sila pilih langganan penapis dalam senarai berikut:">
 <!ENTITY viewList.label "Papar penapis">
 <!ENTITY visitHomepage.label "Lawat laman web Adblock Plus">
 <!ENTITY addSubscription.label "Tambah langganan">
-<!ENTITY saveSubscription.label "Simpan langganan">
-<!ENTITY other.label "Tambah langganan lain">
-<!ENTITY other.accesskey "T">
 <!ENTITY list.download.failed "Adblock Plus gagal memuat-turun senarai langganan.">
 <!ENTITY list.download.retry "Cuba lagi">
 <!ENTITY list.download.website "Papar laman web">
 <!ENTITY fromWeb.description "Sila pastikan anda mahu menambah langganan penapis ini. Anda boleh mengubah tajuk langganan atau lokasi sebelum menambahnya.">
-<!ENTITY edit.description "Anda boleh mengubah tajuk langganan atau lokasi mengikut keperluan.">
-<!ENTITY external.description "Ini adalah langganan penapis luaran; ia akan dikemaskinikan oleh extension yang mewujudkan langganan ini.">
 <!ENTITY title.label "Tajuk langganan">
 <!ENTITY title.accesskey "j">
 <!ENTITY location.label "Lokasi senarai penapis:">
 <!ENTITY location.accesskey "o">
-<!ENTITY autodownload.label "Kemaskini penapis secara automatik">
-<!ENTITY autodownload.accesskey "K">
 <!ENTITY supplementMessage "Langganan penapis ini bertujuan untuk digunakan bersama langganan penapis "?1?" yang tidak digunakan oleh anda lagi.">
 <!ENTITY addMain.label "Tambah langganan penapis "?1?" juga">
 <!ENTITY addMain.accesskey "b">
diff --git a/chrome/adblockplus.jar!/locale/nl/about.dtd b/chrome/adblockplus.jar!/locale/nl/about.dtd
index 402540b..6051945 100644
--- a/chrome/adblockplus.jar!/locale/nl/about.dtd
+++ b/chrome/adblockplus.jar!/locale/nl/about.dtd
@@ -1,7 +1,7 @@
 <!ENTITY dialog.title "Over Adblock Plus">
 <!ENTITY version.title "Versie">
 <!ENTITY description "Adblock Plus laat u zelf beslissen wat u niet wilt zien op het internet. Voortaan hoeft u geen reclames en banners meer te downloaden; als u ze niet wilt zien - verwijder ze met Adblock Plus!">
-<!ENTITY homepage.label "Adblock Plus website:">
+<!ENTITY homepage.label "Adblock Plus-website:">
 <!ENTITY author.label "Schrijver:">
 <!ENTITY contributors.label "Medewerkers:">
 <!ENTITY subscriptionAuthors.label "Filterabonnementschrijvers:">
diff --git a/chrome/adblockplus.jar!/locale/nl/filters.dtd b/chrome/adblockplus.jar!/locale/nl/filters.dtd
new file mode 100644
index 0000000..095664b
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/nl/filters.dtd
@@ -0,0 +1,90 @@
+<!ENTITY dialog.title "Adblock Plus-filtervoorkeuren">
+<!ENTITY subscriptions.tab.label "Filterabonnementen">
+<!ENTITY filters.tab.label "Aangepaste filters">
+<!ENTITY addSubscription.label "Filterabonnement toevoegen">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Toevoegen">
+<!ENTITY addSubscriptionCancel.label "Annuleren">
+<!ENTITY addSubscriptionOther.label "Een ander abonnement toevoegen">
+<!ENTITY noSubscriptions.text "
+U hebt nog geen filterabonnementen toegevoegd. Adblock Plus blokkeert niets zonder filters, gebruik ‘Filterabonnement toevoegen’ om er één toe te voegen.
+">
+<!ENTITY subscription.homepage.label "Startpagina">
+<!ENTITY subscription.external.label "Bijgewerkt door een andere extensie">
+<!ENTITY subscription.source.label "Filterlijst">
+<!ENTITY subscription.enabled.label "Ingeschakeld">
+<!ENTITY subscription.lastDownload.label "Laatste download:">
+<!ENTITY subscription.lastDownload.inProgress "Downloaden…">
+<!ENTITY subscription.lastDownload.unknown "N.B.">
+<!ENTITY subscription.lastDownload.invalidURL "Mislukt, geen geldig adres">
+<!ENTITY subscription.lastDownload.connectionError "Mislukt, downloadprobleem">
+<!ENTITY subscription.lastDownload.invalidData "Mislukt, geen geldige filterlijst">
+<!ENTITY subscription.lastDownload.checksumMismatch "Mislukt, afwijkend controlecijfer">
+<!ENTITY subscription.lastDownload.success "Gelukt">
+<!ENTITY subscription.minVersion.warning "Dit filterabonnement vereist een nieuwere versie van Adblock Plus, u dient bij te werken naar de nieuwste versie.">
+<!ENTITY subscription.disabledFilters.warning "Enkele filters in dit abonnement zijn uitgeschakeld.">
+<!ENTITY subscription.disabledFilters.enable "Uitgeschakelde filters inschakelen">
+<!ENTITY subscription.actions.label "Acties">
+<!ENTITY subscription.update.label "Filters bijwerken">
+<!ENTITY subscription.editTitle.label "Titel bewerken">
+<!ENTITY subscription.delete.label "Verwijderen">
+<!ENTITY subscription.showHideFilters.label "Filters weergeven/verbergen">
+<!ENTITY subscription.moveUp.label "Omhoog">
+<!ENTITY subscription.moveDown.label "Omlaag">
+<!ENTITY acceptableAds.label "Niet-opdringerige advertenties toestaan">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Lees meer">
+<!ENTITY addGroup.label "Filtergroep toevoegen">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+U hebt nog geen aangepaste filters.
+">
+<!ENTITY addFilter.label "Filter toevoegen">
+<!ENTITY addFilter.accesskey "t">
+<!ENTITY filter.actions.label "Filteracties">
+<!ENTITY filter.edit.label "Bewerken">
+<!ENTITY filter.cut.label "Knippen">
+<!ENTITY filter.copy.label "Kopiëren">
+<!ENTITY filter.paste.label "Plakken">
+<!ENTITY filter.delete.label "Verwijderen">
+<!ENTITY filter.selectAll.label "Alles selecteren">
+<!ENTITY filter.resetHitCounts.label "Trefferstatistieken opnieuw instellen">
+<!ENTITY filter.moveUp.label "Omhoog">
+<!ENTITY filter.moveDown.label "Omlaag">
+<!ENTITY viewMenu.label "Beeld">
+<!ENTITY filter.column "Filterregel">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Trage filters">
+<!ENTITY slow.accesskey "r">
+<!ENTITY enabled.column "Ingeschakeld">
+<!ENTITY enabled.accesskey "I">
+<!ENTITY hitcount.column "Treffers">
+<!ENTITY hitcount.accesskey "T">
+<!ENTITY lasthit.column "Laatste treffer">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Sorteren op">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Ongesorteerd">
+<!ENTITY sort.none.accesskey "O">
+<!ENTITY sort.ascending.label "A > Z sortering">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A sortering">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "U dient een filtergroep te selecteren voordat de filters kunnen worden weergegeven.">
+<!ENTITY noFiltersInGroup.text "De geselecteerde groep is leeg.">
+<!ENTITY filters.remove.warning "Wilt u echt alle geselecteerde filters verwijderen?">
+<!ENTITY backupButton.label "Back-up en herstel">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "Nieuwe back-up maken">
+<!ENTITY restore.default.label "Back-up van ?1? terugzetten">
+<!ENTITY restore.own.label "Eigen back-up terugzetten">
+<!ENTITY backup.complete.title "Alle filters en abonnementen">
+<!ENTITY backup.custom.title "Alleen aangepaste filters">
+<!ENTITY backup.error "Er is een fout opgetreden bij het wegschrijven van de filters. Zorg ervoor dat het bestand niet tegen schrijven beveiligd is of wordt gebruikt door een andere toepassing.">
+<!ENTITY restore.error "De gegevens in het bestand kunnen niet worden verwerkt, wellicht is het geen back-up-bestand van Adblock Plus?">
+<!ENTITY restore.complete.warning "Al uw filtervoorkeuren worden vervangen door de inhoud van het geselecteerde bestand. Wilt u doorgaan?">
+<!ENTITY restore.custom.warning "Al uw aangepaste filters worden vervangen door de inhoud van het geselecteerde bestand. Wilt u doorgaan?">
+<!ENTITY restore.minVersion.warning "Waarschuwing: het bestand is gemaakt met een nieuwere versie van Adblock Plus. U dient bij te werken naar de laatste versie voordat u kunt herstellen vanuit dit bestand.">
+<!ENTITY find.label "Zoeken">
+<!ENTITY find.accesskey "o">
+<!ENTITY close.label "Sluiten">
diff --git a/chrome/adblockplus.jar!/locale/nl/firstRun.dtd b/chrome/adblockplus.jar!/locale/nl/firstRun.dtd
new file mode 100644
index 0000000..7413c39
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/nl/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Installatie Adblock Plus compleet">
+<!ENTITY confirmation "
+Bedankt voor het installeren van Adblock Plus. Vanaf nu worden advertenties geblokkeerd.
+Veel plezier!">
+<!ENTITY advancedSection "Geavanceerde opties">
+<!ENTITY listSelection1 "
+De volgende lijst is ingesteld om advertenties te blokkeren:
+">
+<!ENTITY noList "Geen filterlijst">
+<!ENTITY visitHomepage.label "Bezoek de lijststartpagina">
+<!ENTITY acceptableAds "
+Adblock Plus is ook ingesteld om niet-opdringerige advertenties toe te staan.
+">
+<!ENTITY readMore.label "Meer hierover">
+<!ENTITY listSelection2 "
+U kunt deze selectie op elk gewenst moment wijzigen in de [link]Filtervoorkeuren[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/nl/global.properties b/chrome/adblockplus.jar!/locale/nl/global.properties
index 7c972ed..fe5167d 100644
--- a/chrome/adblockplus.jar!/locale/nl/global.properties
+++ b/chrome/adblockplus.jar!/locale/nl/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? van de ?2?
 blocked_count_addendum=(ook op witte lijst: ?1?, verborgen: ?2?)
 no_blocking_suggestions=Geen blokkeerbare onderdelen op deze pagina
 whitelisted_page=Adblock Plus is uitgeschakeld voor deze pagina
-whitelist_description=Mijn uitzonderingsregels
-filterlist_description=Mijn reclamefilters
-invalid_description=Mijn ongeldige filters
-elemhide_description=Mijn elementverbergingsregels
-subscription_description=Filterabonnement:
-subscription_wrong_version=Sommige filters in dit abonnement vereisen Adblock Plus ?1? om goed te werken.
-subscription_source=Bron:
-subscription_status=Status:
-subscription_status_autodownload=Automatisch bijgewerkt
-subscription_status_manualdownload=Handmatig bijgewerkt
-subscription_status_externaldownload=Extern bijgewerkt (door een andere extensie)
-subscription_status_lastdownload=Laatste download:
-subscription_status_lastdownload_inprogress=Downloaden…
-subscription_status_lastdownload_unknown=N.B.
+newGroup_title=Nieuwe filtergroep
+whitelistGroup_title=Uitzonderingsregels
+blockingGroup_title=Advertentieblokkaderegels
+elemhideGroup_title=Elementverbergingsregels
 remove_subscription_warning=Weet u zeker dat u dit abonnement wilt verwijderen?
-import_filters_wrong_version=Waarschuwing: sommige filters in dit abonnement vereisen Adblock Plus ?1? om goed te werken. U kunt het beste de nieuwste versie van Adblock Plus installeren voordat u deze lijst importeert.
-import_filters_warning=Wilt u uw huidige filters vervangen of de nieuwe filters aan het einde van de lijst toevoegen?
-import_filters_title=Filters importeren
-export_filters_title=Filters exporteren
-invalid_filters_file=Geen geldig bestand met Adblock Plus-filters.
-filters_write_error=Er is een fout opgetreden bij het schrijven van filters naar het bestand. Controleer of het bestand niet tegen schrijven beveiligd is of wordt gebruikt door een ander programma.
-clearall_warning=Weet u zeker dat u alle filters van de lijst wilt verwijderen?
-resethitcounts_warning=Weet u zeker dat u het aantal treffers voor alle filters weer op nul wilt zetten? Deze operatie kan niet ongedaan worden gemaakt!
-resethitcounts_selected_warning=Weet u zeker dat u het aantal treffers voor de geselecteerde filters weer op nul wilt zetten? Deze operatie kan niet ongedaan worden gemaakt!
+clearStats_warning=Dit stelt alle filtertrefferstatistieken opnieuw in en schakelt het tellen van filtertreffers uit. Wilt u doorgaan?
 filter_regexp_tooltip=Dit filter is een reguliere expressie of te kort om te kunnen worden geoptimaliseerd. Te veel van dit soort filters kan uw browser traag maken.
 filter_elemhide_duplicate_id=Er kan slechts één ID van het te verbergen element worden opgegeven
 filter_elemhide_nocriteria=Geen criteria opgegeven om het te verbergen element te herkennen
-subscription_notAdded_warning=U hebt geen filterabonnement toegevoegd. Zonder een filterabonnement dient u uw Adblock Plus-filters handmatig toe te voegen.
-subscription_notAdded_warning_addendum=Wilt u doorgaan?
 subscription_invalid_location=Deze filterlijstlocatie is geen geldige URL en ook geen geldige bestandsnaam.
-synchronize_invalid_url=Mislukt, geen geldig adres
-synchronize_connection_error=Mislukt, downloadprobleem
-synchronize_invalid_data=Mislukt, geen geldige filterlijst
-synchronize_checksum_mismatch=Mislukt, afwijkend controlecijfer
-synchronize_ok=Gelukt
-overwrite=Overschrijven
-append=Toevoegen
-new_filter_group_title=Nieuw filter
 type_label_other=anders
 type_label_script=script
 type_label_image=afbeelding
@@ -56,15 +28,12 @@ type_label_object=object
 type_label_subdocument=frame
 type_label_document=document
 type_label_elemhide=verborgen
-type_label_xbl=XBL-binding
-type_label_ping=koppelingsping
+type_label_popup=pop-upvenster
 type_label_xmlhttprequest=XML-verzoek
 type_label_object_subrequest=object-subverzoek
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=lettertype
 fennec_status_enabled=Adblock Plus is ingeschakeld.
 fennec_status_disabled=Adblock Plus is uitgeschakeld.
 fennec_status_enabled_site=Adblock Plus is ingeschakeld op ?1?.
 fennec_status_disabled_site=Adblock Plus is uitgeschakeld op ?1?.
-sync_engine_title=Adblock Plus-gegevens
diff --git a/chrome/adblockplus.jar!/locale/nl/overlay.dtd b/chrome/adblockplus.jar!/locale/nl/overlay.dtd
index 26014da..c4fb926 100644
--- a/chrome/adblockplus.jar!/locale/nl/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/nl/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus-voorkeuren">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokkeerbare onderdelen">
 <!ENTITY context.image.label "Adblock Plus: Afbeelding blokkeren">
 <!ENTITY context.object.label "Adblock Plus: Object blokkeren">
 <!ENTITY context.frame.label "Adblock Plus: Deelvenster blokkeren">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blokkeerbare onderdelen op deze pagina">
 <!ENTITY sendReport.label "Probleem op deze pagina rapporteren">
 <!ENTITY sendReport.accesskey "P">
-<!ENTITY settings.label "Voorkeuren">
-<!ENTITY settings.accesskey "V">
+<!ENTITY filters.label "Filtervoorkeuren">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Blokkeerbare onderdelen open">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Blokkeerbare onderdelen sluiten">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Uitschakelen op ?1?">
 <!ENTITY whitelist.page.label "Alleen op deze pagina uitschakelen">
 <!ENTITY disable.label "Overal uitschakelen">
-<!ENTITY recommend.label "Beveel ons aan op Facebook">
+<!ENTITY options.label "Opties">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Draag bij aan Adblock Plus">
+<!ENTITY showintoolbar.label "In werkbalk weergeven">
+<!ENTITY showintoolbar.accesskey "b">
+<!ENTITY showinstatusbar.label "In statusbalk weergeven">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "In add-onbalk weergeven">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Tabbladen weergeven op Flash en Java">
+<!ENTITY objecttabs.accesskey "T">
+<!ENTITY hideplaceholders.label "Plaatshouders of geblokkeerde elementen verbergen">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Filtertreffers tellen">
+<!ENTITY counthits.accesskey "f">
+<!ENTITY sync.label "Synchroniseer Adblock Plus instellingen">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Blokkeren">
 <!ENTITY objecttab.tooltip "Klik hier om dit object te blokkeren met Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/nl/settings.dtd b/chrome/adblockplus.jar!/locale/nl/settings.dtd
deleted file mode 100644
index 8f60480..0000000
--- a/chrome/adblockplus.jar!/locale/nl/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus Voorkeuren">
-<!ENTITY filters.label "Filters">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Filter toevoegen">
-<!ENTITY add.accesskey "g">
-<!ENTITY addsubscription.label "Filterabonnement toevoegen">
-<!ENTITY addsubscription.accesskey "t">
-<!ENTITY synchsubscriptions.label "Alle abonnementen bijwerken">
-<!ENTITY synchsubscriptions.accesskey "A">
-<!ENTITY import.label "Filters importeren">
-<!ENTITY import.accesskey "i">
-<!ENTITY export.label "Aangepaste filters exporteren">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "Alle aangepaste filters verwijderen">
-<!ENTITY clearall.accesskey "v">
-<!ENTITY resethitcounts.label "Trefstatistieken herstellen">
-<!ENTITY resethitcounts.accesskey "r">
-<!ENTITY edit.label "Bewerken">
-<!ENTITY edit.accesskey "W">
-<!ENTITY cut.label "Knippen">
-<!ENTITY cut.accesskey "n">
-<!ENTITY copy.label "Kopiëren">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Plakken">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Verwijderen">
-<!ENTITY remove.accesskey "V">
-<!ENTITY menu.find.label "Zoeken">
-<!ENTITY menu.find.accesskey "Z">
-<!ENTITY menu.findagain.label "Opnieuw zoeken">
-<!ENTITY menu.findagain.accesskey "w">
-<!ENTITY view.label "Beeld">
-<!ENTITY view.accesskey "l">
-<!ENTITY sort.label "Sorteren op">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Ongesorteerd">
-<!ENTITY sort.none.accesskey "O">
-<!ENTITY sort.ascending.label "A > Z sortering">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A sortering">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opties">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Adblock Plus inschakelen">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "In werkbalk weergeven">
-<!ENTITY showintoolbar.accesskey "w">
-<!ENTITY showinstatusbar.label "In statusbalk weergeven">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Tabbladen weergeven op Flash en Java">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "Geblokkeerde elementen inklappen">
-<!ENTITY collapse.accesskey "G">
-<!ENTITY sync.label "Synchroniseer Adblock Plus instellingen">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Help">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "Aan de slag">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "Veelgestelde vragen">
-<!ENTITY faq.accesskey "V">
-<!ENTITY filterdoc.label "Het schrijven van Adblock Plus filters">
-<!ENTITY filterdoc.accesskey "H">
-<!ENTITY about.label "Over Adblock Plus">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "De volgende filters bepalen welke adressen geblokkeerd worden en welke worden toegestaan:">
-<!ENTITY filter.column "Filterregel">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Trage filters">
-<!ENTITY slow.accesskey "r">
-<!ENTITY enabled.column "Ingeschakeld">
-<!ENTITY enabled.accesskey "I">
-<!ENTITY hitcount.column "Treffers">
-<!ENTITY hitcount.accesskey "T">
-<!ENTITY lasthit.column "Laatste treffer">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Filter bewerken">
-<!ENTITY context.resethitcount.label "Trefstatistieken voor filter herstellen">
-<!ENTITY context.synchsubscription.label "Abonnement nu bijwerken">
-<!ENTITY context.editsubscription.label "Abonnement bewerken">
-<!ENTITY context.moveup.label "Filter omhoog verplaatsen">
-<!ENTITY context.movedown.label "Filter omlaag verplaatsen">
-<!ENTITY context.movegroupup.label "Groep omhoog verplaatsen">
-<!ENTITY context.movegroupdown.label "Groep omlaag verplaatsen">
-<!ENTITY context.enable.label "Inschakelen">
-<!ENTITY context.disable.label "Uitschakelen">
-<!ENTITY apply.label "Toepassen">
-<!ENTITY apply.accesskey "T">
-<!ENTITY fennec.subscription.label "Filterabonnement">
diff --git a/chrome/adblockplus.jar!/locale/nl/sidebar.dtd b/chrome/adblockplus.jar!/locale/nl/sidebar.dtd
index 3b8cf7a..fdf4c5b 100644
--- a/chrome/adblockplus.jar!/locale/nl/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/nl/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filter">
 <!ENTITY state.label "Status">
 <!ENTITY size.label "Grootte">
+<!ENTITY filterSource.label "Filterbron">
 <!ENTITY docDomain.label "Documentbron">
 <!ENTITY docDomain.thirdParty "(derden)">
 <!ENTITY docDomain.firstParty "(rechtstreeks)">
diff --git a/chrome/adblockplus.jar!/locale/nl/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/nl/subscriptionSelection.dtd
index 20642e9..1105c5b 100644
--- a/chrome/adblockplus.jar!/locale/nl/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/nl/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Adblock Plus filterabonnement toevoegen">
-<!ENTITY dialog.title.edit "Filterabonnement bewerken">
-<!ENTITY description.newInstall "Adblock Plus werkt het beste als u een filterabonnement toevoegt. Filterabonnementen worden gratis door andere gebruikers van Adblock Plus aangeboden. Het voor uw taal meest geschikte abonnement is al geselecteerd.">
 <!ENTITY subscriptionSelector.label "Kies a.u.b. een filterabonnement uit de lijst:">
 <!ENTITY viewList.label "Filters bekijken">
 <!ENTITY visitHomepage.label "Startpagina bezoeken">
 <!ENTITY addSubscription.label "Abonneren">
-<!ENTITY saveSubscription.label "Abonnement opslaan">
-<!ENTITY other.label "Een ander abonnement toevoegen">
-<!ENTITY other.accesskey "E">
 <!ENTITY list.download.failed "Adblock Plus kan de lijst met abonnementen niet ophalen.">
 <!ENTITY list.download.retry "Opnieuw proberen">
 <!ENTITY list.download.website "Website bekijken">
 <!ENTITY fromWeb.description "Bevestig a.u.b. dat u dit filterabonnement wilt toevoegen. U kunt de abonnementstitel of -locatie wijzigen voor toevoegen.">
-<!ENTITY edit.description "U kunt de abonnementstitel of -locatie naar believen wijzigen.">
-<!ENTITY external.description "Dit is een extern filterabonnement; het wordt bijgewerkt door de extensie die dit abonnement heeft aangemaakt.">
 <!ENTITY title.label "Abonnementstitel:">
 <!ENTITY title.accesskey "b">
 <!ENTITY location.label "Filterlijstlocatie:">
 <!ENTITY location.accesskey "l">
-<!ENTITY autodownload.label "Filters automatisch bijwerken">
-<!ENTITY autodownload.accesskey "t">
 <!ENTITY supplementMessage "Dit filterabonnement is bedoeld om samen gebruikt te worden met het filterabonnement “?1?”, dat u nog niet gebruikt.">
 <!ENTITY addMain.label "Filterabonnement “?1?” ook toevoegen">
 <!ENTITY addMain.accesskey "k">
diff --git a/chrome/adblockplus.jar!/locale/pl/about.dtd b/chrome/adblockplus.jar!/locale/pl/about.dtd
index a6022b7..8b9aa4e 100644
--- a/chrome/adblockplus.jar!/locale/pl/about.dtd
+++ b/chrome/adblockplus.jar!/locale/pl/about.dtd
@@ -1,6 +1,6 @@
 <!ENTITY dialog.title "O Adblock Plus">
 <!ENTITY version.title "Wersja">
-<!ENTITY description "Adblock Plus pozwala decydować o tym, jak będą wyglądały strony w Twojej przeglądarce. Nie będzie już konieczności wczytywania wszystkich reklam i banerów. Jeśli nie chcesz ich oglądać - zleć to Adblock Plus!">
+<!ENTITY description "Adblock Plus umożliwia decydowanie o tym, jak będą wyglądały strony w Twojej przeglądarce. Nie będzie już konieczności wczytywania wszystkich reklam i banerów. Jeśli nie chcesz ich oglądać - zleć to Adblock Plus!">
 <!ENTITY homepage.label "Strona domowa Adblock Plusa:">
 <!ENTITY author.label "Autor:">
 <!ENTITY contributors.label "Współtwórcy:">
diff --git a/chrome/adblockplus.jar!/locale/pl/filters.dtd b/chrome/adblockplus.jar!/locale/pl/filters.dtd
new file mode 100644
index 0000000..149836e
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/pl/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Add Adblock Plus – ustawienia filtrów">
+<!ENTITY subscriptions.tab.label "Zestawy filtrów">
+<!ENTITY filters.tab.label "Własne filtry">
+<!ENTITY addSubscription.label "Dodaj zestaw filtrów">
+<!ENTITY addSubscription.accesskey "D">
+<!ENTITY addSubscriptionAdd.label "Dodaj">
+<!ENTITY addSubscriptionCancel.label "Anuluj">
+<!ENTITY addSubscriptionOther.label "Wybierz inny zestaw">
+<!ENTITY noSubscriptions.text "Jeszcze nie dodano żadnego zestawu filtrów. Adblock Plus nie może nic blokować bez filtrów. Naciśnij przycisk „Dodaj zestaw filtrów…”, by dodać jakiś filtr.">
+<!ENTITY subscription.homepage.label "Strona domowa">
+<!ENTITY subscription.external.label "Zaktualizowany przez inne rozszerzenie">
+<!ENTITY subscription.source.label "Zawartość zestawu">
+<!ENTITY subscription.enabled.label "Aktywny">
+<!ENTITY subscription.lastDownload.label "Ostatnie pobieranie:">
+<!ENTITY subscription.lastDownload.inProgress "Pobieranie…">
+<!ENTITY subscription.lastDownload.unknown "nieznane">
+<!ENTITY subscription.lastDownload.invalidURL "Nie powiodło się – nieprawidłowy adres">
+<!ENTITY subscription.lastDownload.connectionError "Nie powiodło się – błąd pobierania">
+<!ENTITY subscription.lastDownload.invalidData "Nie powiodło się – nieprawidłowy zestaw filtrów">
+<!ENTITY subscription.lastDownload.checksumMismatch "Nie powiodło się – niepoprawna suma kontrolna">
+<!ENTITY subscription.lastDownload.success "Zakończono pomyślnie">
+<!ENTITY subscription.minVersion.warning "Ten zestaw filtrów działa z najnowszą wersją Adblock Plusa. Zaktualizuj Adblock Plusa.">
+<!ENTITY subscription.disabledFilters.warning "Niektóre filtry w tym zestawie są wyłączone.">
+<!ENTITY subscription.disabledFilters.enable "Włącz wyłączone filtry">
+<!ENTITY subscription.actions.label "Czynności">
+<!ENTITY subscription.update.label "Aktualizuj filtry">
+<!ENTITY subscription.editTitle.label "Edytuj nazwę zestawu">
+<!ENTITY subscription.delete.label "Usuń">
+<!ENTITY subscription.showHideFilters.label "Wyświetl/ukryj filtry">
+<!ENTITY subscription.moveUp.label "Przenieś w górę">
+<!ENTITY subscription.moveDown.label "Przenieś w dół">
+<!ENTITY acceptableAds.label "Zezwalaj na nie natrętne reklamy">
+<!ENTITY acceptableAds.accesskey "T">
+<!ENTITY readMore.label "Dowiedz się więcej">
+<!ENTITY addGroup.label "Dodaj grupę filtrów">
+<!ENTITY addGroup.accesskey "G">
+<!ENTITY noFilters.text "Nie masz jeszcze żadnych własnych filtrów.">
+<!ENTITY addFilter.label "Dodaj filtr">
+<!ENTITY addFilter.accesskey "L">
+<!ENTITY filter.actions.label "Czynności filtrów">
+<!ENTITY filter.edit.label "Edytuj">
+<!ENTITY filter.cut.label "Wytnij">
+<!ENTITY filter.copy.label "Kopiuj">
+<!ENTITY filter.paste.label "Wklej">
+<!ENTITY filter.delete.label "Usuń">
+<!ENTITY filter.selectAll.label "Zaznacz wszystko">
+<!ENTITY filter.resetHitCounts.label "Resetuj statystyki użycia">
+<!ENTITY filter.moveUp.label "Przenieś w górę">
+<!ENTITY filter.moveDown.label "Przenieś w dół">
+<!ENTITY viewMenu.label "Widok">
+<!ENTITY filter.column "Reguła filtru">
+<!ENTITY filter.accesskey "R">
+<!ENTITY slow.column "Wolne filtry">
+<!ENTITY slow.accesskey "W">
+<!ENTITY enabled.column "Aktywny">
+<!ENTITY enabled.accesskey "K">
+<!ENTITY hitcount.column "Użycie">
+<!ENTITY hitcount.accesskey "U">
+<!ENTITY lasthit.column "Ostatnie użycie">
+<!ENTITY lasthit.accesskey "O">
+<!ENTITY sort.label "Sortuj wg">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Nieposortowane">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "Kierunek sortowania A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Kierunek sortowania Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Aby filtry mogły być wyświetlane , należy najpierw wybrać grupę.">
+<!ENTITY noFiltersInGroup.text "Wybrana grupa jest pusta">
+<!ENTITY filters.remove.warning "Czy na pewno chcesz usunąć wszystkie wybrane filtry?">
+<!ENTITY backupButton.label "Tworzenie i odtwarzanie kopii">
+<!ENTITY backupButton.accesskey "T">
+<!ENTITY backup.label "Utwórz nową kopię">
+<!ENTITY restore.default.label "Odtwórz kopię z dnia ?1?">
+<!ENTITY restore.own.label "Odtwórz własną kopię">
+<!ENTITY backup.complete.title "Wszystkie filtry i zestawy">
+<!ENTITY backup.custom.title "Tylko własne filtry">
+<!ENTITY backup.error "W trakcie zapisu filtrów wystąpił błąd. Sprawdź, czy czasami plik nie ma zabezpieczenia przed zapisem lub nie jest używany przez inną aplikację.">
+<!ENTITY restore.error "Nie można przetworzyć danych filtru. Może to nie jest plik kopii zapasowej Adblock Plusa?">
+<!ENTITY restore.complete.warning "Wszystkie ustawienia filtrów zostaną zastąpione zawartością wybranego pliku. Czy chcesz kontynuować?">
+<!ENTITY restore.custom.warning "Wszystkie własne filtry zostaną zastąpione zawartością wybranego pliku. Czy chcesz kontynuować?">
+<!ENTITY restore.minVersion.warning "Ostrzeżenie! Plik został utworzony za pomocą najnowszej wersji Adblock Plusa. Przed odtworzeniem zawartości tego pliku, należy zainstalować najnowszą wersję Adblock Plusa.">
+<!ENTITY find.label "Znajdź">
+<!ENTITY find.accesskey "N">
+<!ENTITY close.label "Zamknij">
diff --git a/chrome/adblockplus.jar!/locale/pl/firstRun.dtd b/chrome/adblockplus.jar!/locale/pl/firstRun.dtd
new file mode 100644
index 0000000..a1c38a4
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/pl/firstRun.dtd
@@ -0,0 +1,9 @@
+<!ENTITY dialog.title "Adblock Plus został zainstalowany">
+<!ENTITY confirmation "Dziękuję za zainstalowanie Adblock Plusa. Od teraz reklamy będą blokowane. Baw się dobrze!">
+<!ENTITY advancedSection "Opcje zaawansowane">
+<!ENTITY listSelection1 "Do blokowania reklam został wstępnie wybrany poniższy zestaw filtrów:">
+<!ENTITY noList "Brak zestawu filtrów">
+<!ENTITY visitHomepage.label "Strona domowa zestawu">
+<!ENTITY acceptableAds "Adblock Plusa można również skonfigurować tak, by zezwalał na wyświetlanie nie natrętnych reklam.">
+<!ENTITY readMore.label "Dowiedz się więcej na ten temat">
+<!ENTITY listSelection2 "W każdej chwili można wyłączyć tę funkcję z poziomu [link]ustawień filtrów[/link].">
diff --git a/chrome/adblockplus.jar!/locale/pl/global.properties b/chrome/adblockplus.jar!/locale/pl/global.properties
index 685f9e5..9e1aa3e 100644
--- a/chrome/adblockplus.jar!/locale/pl/global.properties
+++ b/chrome/adblockplus.jar!/locale/pl/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? z ?2?
 blocked_count_addendum=(dozwolone:?1?, ukryte:?2?)
 no_blocking_suggestions=Nieblokowalne elementy na aktywnej stronie
 whitelisted_page=Adblock Plus został wyłączony dla tej strony
-whitelist_description=Reguły wyjątków
-filterlist_description=Filtry reklam
-invalid_description=Nieprawidłowy filtr
-elemhide_description=Reguły ukrywanych elementów
-subscription_description=Zestaw filtrów:
-subscription_wrong_version=Niektóre filtry z tego zestawu, aby pracowały poprawnie, wymagają Adblock Plusa ?1?
-subscription_source=Źródło:
-subscription_status=Status:
-subscription_status_autodownload=Zaktualizowano automatycznie
-subscription_status_manualdownload=Zaktualizowano ręcznie
-subscription_status_externaldownload=Zaktualizowano zewnętrznie (poprzez inne rozszerzenie)
-subscription_status_lastdownload=Ostatnie pobieranie:
-subscription_status_lastdownload_inprogress=Pobieranie…
-subscription_status_lastdownload_unknown=nieznane
+newGroup_title=Nowa grupa filtrów
+whitelistGroup_title=Reguły wyjątków
+blockingGroup_title=Reguły blokowania reklam
+elemhideGroup_title=Reguły ukrywania elementów
 remove_subscription_warning=Czy chcesz usunąć ten zestaw?
-import_filters_wrong_version=Ostrzeżenie! Niektóre filtry z tego zestawu, aby pracowały poprawnie, wymagają Adblock Plusa ?1?. Przed zaimportowaniem tego zestawu, należy wykonać aktualizację Adblock Plusa.
-import_filters_warning=Czy chcesz zamienić obecne filtry? Naciśnij Anuluj, aby dodać filtry na końcu listy.
-import_filters_title=Import filtrów
-export_filters_title=Eksport filtrów
-invalid_filters_file=Nieprawidłowy plik filtrów Adblock Plusa
-filters_write_error=Wystąpił błąd podczas zapisu filtrów do pliku. Sprawdź czy plik nie jest używany przez inny program lub nie ma zabezpieczenia przed zapisem.
-clearall_warning=Czy na pewno chcesz usunąć wszystkie filtry z zestawu?
-resethitcounts_warning=Czy na pewno chcesz wyzerować liczniki użycia wszystkich filtrów? Tej operacji nie można cofnąć.
-resethitcounts_selected_warning=Czy na pewno chcesz wyzerować liczniki użycia wybranych filtrów? Ta operacja jest nieodwracalna.
+clearStats_warning=Spowoduje to zresetowanie wszystkich statystyk użycia filtra i wyłączenie zliczania kolejnych użyć. Czy chcesz kontynuować?
 filter_regexp_tooltip=Ten filtr jest wyrażeniem regularnym albo jest za krótki, aby go zoptymalizować. Zbyt dużo filtrów tego rodzaju może powodować spowolnienie przeglądania internetu.
 filter_elemhide_duplicate_id=Może być określony tylko jeden ID elementu do ukrycia
 filter_elemhide_nocriteria=Nie określono kryteriów rozpoznania elementu do ukrycia
-subscription_notAdded_warning=Nie dokonano zestawu filtrów. Trzeba będzie dodawać filtry ręcznie.
-subscription_notAdded_warning_addendum=\nCzy chcesz kontynuować?
 subscription_invalid_location=Lokalizacja zestawu filtrów ma niewłaściwą nazwę pliku, albo adres URL
-synchronize_invalid_url=Nie powiodło się – nieprawidłowy adres
-synchronize_connection_error=Nie powiodło się – błąd pobierania
-synchronize_invalid_data=Nie powiodło się – nieprawidłowy zestaw filtrów
-synchronize_checksum_mismatch=Nie powiodło się – niepoprawna suma kontrolna
-synchronize_ok=Zakończono
-overwrite=Nadpisz
-append=Dodaj
-new_filter_group_title=Nowy filtr
 type_label_other=inne
 type_label_script=skrypt
 type_label_image=obrazek
@@ -56,15 +28,12 @@ type_label_object=obiekt
 type_label_subdocument=ramka
 type_label_document=dokument
 type_label_elemhide=ukryty
-type_label_xbl=powiązanie XBL
-type_label_ping=ping odnośnika
+type_label_popup=wyskakujące okno
 type_label_xmlhttprequest=żądanie XML
 type_label_object_subrequest=subżądanie obiektu
-type_label_dtd=DTD
 type_label_media=audio/wideo
 type_label_font=czcionka
 fennec_status_enabled=Adblock Plus jest włączony.
 fennec_status_disabled=Adblock Plus jest wyłączony.
 fennec_status_enabled_site=Adblock Plus jest włączony na ?1?.
 fennec_status_disabled_site=Adblock Plus jest wyłączony na ?1?.
-sync_engine_title=Adblock Plus – dane
diff --git a/chrome/adblockplus.jar!/locale/pl/overlay.dtd b/chrome/adblockplus.jar!/locale/pl/overlay.dtd
index 5d775df..c5f4c7c 100644
--- a/chrome/adblockplus.jar!/locale/pl/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/pl/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus - ustawienia">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Elementy blokowalne">
 <!ENTITY context.image.label "Zablokuj obrazek">
 <!ENTITY context.object.label "Zablokuj obiekt">
 <!ENTITY context.frame.label "Zablokuj ramkę">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blokowalne elementy na aktywnej stronie">
 <!ENTITY sendReport.label "Zgłoś problem na tej stronie">
 <!ENTITY sendReport.accesskey "Z">
-<!ENTITY settings.label "Ustawienia">
-<!ENTITY settings.accesskey "U">
+<!ENTITY filters.label "Ustawienia filtra">
+<!ENTITY filters.accesskey "U">
 <!ENTITY opensidebar.label "Otwórz listę blokowalnych elementów">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Zamknij listę blokowalnych elementów">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Wyłącz blokowanie na ?1?">
 <!ENTITY whitelist.page.label "Wyłącz blokowanie tylko na tej stronie">
 <!ENTITY disable.label "Wyłącz wszędzie">
-<!ENTITY recommend.label "Poleć nas na Facebooku">
+<!ENTITY options.label "Opcje">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Wspomóż Adblock Plusa">
+<!ENTITY showintoolbar.label "Wyświetlaj ikonę Adblock Plusa na pasku narzędzi">
+<!ENTITY showintoolbar.accesskey "R">
+<!ENTITY showinstatusbar.label "Wyświetlaj ikonę Adblock Plusa na pasku stanu">
+<!ENTITY showinstatusbar.accesskey "W">
+<!ENTITY showinaddonbar.label "Wyświetlaj ikonę Adblock Plusa na pasku dodatków">
+<!ENTITY showinaddonbar.accesskey "T">
+<!ENTITY objecttabs.label "Wyświetlaj przyciski blokowania na elementach Flasha i Javy">
+<!ENTITY objecttabs.accesskey "K">
+<!ENTITY hideplaceholders.label "Ukryj zamienniki blokowanych elementów">
+<!ENTITY hideplaceholders.accesskey "M">
+<!ENTITY counthits.label "Zliczaj użycie filtra">
+<!ENTITY counthits.accesskey "C">
+<!ENTITY sync.label "Synchronizuj ustawienia Adblock Plusa">
+<!ENTITY sync.accesskey "S">
 <!ENTITY objecttab.title "Zablokuj">
 <!ENTITY objecttab.tooltip "Kliknij tutaj, aby zablokować ten obiekt">
diff --git a/chrome/adblockplus.jar!/locale/pl/settings.dtd b/chrome/adblockplus.jar!/locale/pl/settings.dtd
deleted file mode 100644
index 9a9f4bd..0000000
--- a/chrome/adblockplus.jar!/locale/pl/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus - ustawienia">
-<!ENTITY filters.label "Filtry">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Dodaj filtr">
-<!ENTITY add.accesskey "D">
-<!ENTITY addsubscription.label "Dodaj zestaw filtrów">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "Aktualizuj zestawy">
-<!ENTITY synchsubscriptions.accesskey "U">
-<!ENTITY import.label "Importuj filtry">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Eksportuj filtry">
-<!ENTITY export.accesskey "E">
-<!ENTITY clearall.label "Usuń wszystkie filtry">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "Wyzeruj licznik użycia filtru">
-<!ENTITY resethitcounts.accesskey "W">
-<!ENTITY edit.label "Edycja">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Wytnij">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "Kopiuj">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Wklej">
-<!ENTITY paste.accesskey "E">
-<!ENTITY remove.label "Usuń">
-<!ENTITY remove.accesskey "U">
-<!ENTITY menu.find.label "Znajdź">
-<!ENTITY menu.find.accesskey "Z">
-<!ENTITY menu.findagain.label "Znajdź następne">
-<!ENTITY menu.findagain.accesskey "N">
-<!ENTITY view.label "Widok">
-<!ENTITY view.accesskey "W">
-<!ENTITY sort.label "Sortuj wg">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Nieposortowane">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "Kierunek sortowania A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Kierunek sortowania Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opcje">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Włącz Adblock Plus">
-<!ENTITY enable.accesskey "W">
-<!ENTITY showintoolbar.label "Wyświetlaj ikonę Adblock Plusa na pasku narzędzi">
-<!ENTITY showintoolbar.accesskey "D">
-<!ENTITY showinstatusbar.label "Wyświetlaj ikonę Adblock Plusa na pasku stanu">
-<!ENTITY showinstatusbar.accesskey "N">
-<!ENTITY objecttabs.label "Wyświetlaj przyciski blokowania na elementach Flasha i Javy">
-<!ENTITY objecttabs.accesskey "K">
-<!ENTITY collapse.label "Ukrywaj zablokowane elementy">
-<!ENTITY collapse.accesskey "U">
-<!ENTITY sync.label "Synchronizuj ustawienia Adblock Plusa">
-<!ENTITY sync.accesskey "S">
-<!ENTITY help.label "Pomoc">
-<!ENTITY help.accesskey "P">
-<!ENTITY gettingStarted.label "Wprowadzenie">
-<!ENTITY gettingStarted.accesskey "W">
-<!ENTITY faq.label "Często zadawane pytania">
-<!ENTITY faq.accesskey "C">
-<!ENTITY filterdoc.label "O tworzeniu filtrów">
-<!ENTITY filterdoc.accesskey "O">
-<!ENTITY about.label "Adblock Plus - informacje">
-<!ENTITY about.accesskey "A">
-<!ENTITY description "Poniższe filtry określają, na których witrynach reklamy są blokowane, a na których dozwolone">
-<!ENTITY filter.column "Reguła filtru">
-<!ENTITY filter.accesskey "R">
-<!ENTITY slow.column "Wolne filtry">
-<!ENTITY slow.accesskey "W">
-<!ENTITY enabled.column "Aktywny">
-<!ENTITY enabled.accesskey "K">
-<!ENTITY hitcount.column "Użycie">
-<!ENTITY hitcount.accesskey "U">
-<!ENTITY lasthit.column "Ostatnie użycie">
-<!ENTITY lasthit.accesskey "O">
-<!ENTITY context.edit.label "Edytuj filtr">
-<!ENTITY context.resethitcount.label "Wyzeruj licznik użycia dla filtru">
-<!ENTITY context.synchsubscription.label "Aktualizuj zestaw teraz">
-<!ENTITY context.editsubscription.label "Edytuj zestaw">
-<!ENTITY context.moveup.label "Przesuń w górę">
-<!ENTITY context.movedown.label "Przesuń w dół">
-<!ENTITY context.movegroupup.label "Przesuń grupę w górę">
-<!ENTITY context.movegroupdown.label "Przesuń grupę w dól">
-<!ENTITY context.enable.label "Włącz">
-<!ENTITY context.disable.label "Wyłącz">
-<!ENTITY apply.label "Zastosuj">
-<!ENTITY apply.accesskey "S">
-<!ENTITY fennec.subscription.label "Zestawy filtrów">
diff --git a/chrome/adblockplus.jar!/locale/pl/sidebar.dtd b/chrome/adblockplus.jar!/locale/pl/sidebar.dtd
index 882dac0..f1333f4 100644
--- a/chrome/adblockplus.jar!/locale/pl/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/pl/sidebar.dtd
@@ -8,9 +8,10 @@
 <!ENTITY filter.label "Filtr">
 <!ENTITY state.label "Stan">
 <!ENTITY size.label "Rozmiar">
-<!ENTITY docDomain.label "Źródło dokumentu">
-<!ENTITY docDomain.thirdParty "(trzecia część)">
-<!ENTITY docDomain.firstParty "(pierwsza część)">
+<!ENTITY filterSource.label "Źródło filtra">
+<!ENTITY docDomain.label "Źródło elementu">
+<!ENTITY docDomain.thirdParty "(trzecia część adresu)">
+<!ENTITY docDomain.firstParty "(pierwsza część adresu)">
 <!ENTITY noitems.label "Elementy nieblokowalne">
 <!ENTITY whitelisted.label "Nieblokowana strona">
 <!ENTITY tooltip.address.label "Adres:">
diff --git a/chrome/adblockplus.jar!/locale/pl/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/pl/subscriptionSelection.dtd
index d7d10d4..aa5eb2d 100644
--- a/chrome/adblockplus.jar!/locale/pl/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/pl/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Add Adblock Plus – zestawy filtrów">
-<!ENTITY dialog.title.edit "Edycja zestawów filtrów">
-<!ENTITY description.newInstall "Dla Adblock Plusa najbardziej efektywnym sposobem pozyskania filtrów jest dodanie subskrypcji zestawu filtrów. Znajdujące się w rozwijanym menu zestawy filtrów są udostępniane przez innych użytkowników Adblock Plusa za darmo. Najodpowiedniejsze zestawy filtrów dla Twojego języka są wyróżnione.">
 <!ENTITY subscriptionSelector.label "Wybierz z listy zestaw filtrów:">
 <!ENTITY viewList.label "Zobacz filtry">
 <!ENTITY visitHomepage.label "Przejdź na stronę zestawu">
 <!ENTITY addSubscription.label "Subskrybuj zestaw">
-<!ENTITY saveSubscription.label "Zapisz zestaw">
-<!ENTITY other.label "Wybierz inny zestaw">
-<!ENTITY other.accesskey "W">
 <!ENTITY list.download.failed "Nie udało się pobrać listy zestawów.">
 <!ENTITY list.download.retry "Spróbuj jeszcze raz">
 <!ENTITY list.download.website "Zobacz witrynę">
 <!ENTITY fromWeb.description "Potwierdź zamiar dodania tego zestawu filtrów. Przed dodaniem zestawu możesz zmienić jego nazwę lub lokalizację.">
-<!ENTITY edit.description "Jeśli zachodzi potrzeba, możesz zmienić nazwę lub lokalizację zestawu.">
-<!ENTITY external.description "To jest zewnętrzny zestaw filtrów. Zestaw będzie aktualizowany przez rozszerzenie za pomocą, którego został utworzony.">
 <!ENTITY title.label "Nazwa zestawu:">
 <!ENTITY title.accesskey "N">
 <!ENTITY location.label "Lokalizacja zestawu:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Aktualizuj automatycznie">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Ten zestaw filtrów musi być używany z zestawem „;?1?”, który nie jest jeszcze subskrybowany.">
 <!ENTITY addMain.label "Dodaj także zestaw „;?1?”">
 <!ENTITY addMain.accesskey "S">
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/about.dtd b/chrome/adblockplus.jar!/locale/pt-BR/about.dtd
index b4fd181..af6e30d 100644
--- a/chrome/adblockplus.jar!/locale/pt-BR/about.dtd
+++ b/chrome/adblockplus.jar!/locale/pt-BR/about.dtd
@@ -1,6 +1,6 @@
 <!ENTITY dialog.title "Sobre o Adblock Plus">
 <!ENTITY version.title "Versão">
-<!ENTITY description "O Adblock Plus permite que você decida o que você quer ver na internet. Você não precisa mais baixar todas as propagandas e banners; se você não os quer, remova-os com o Adblock Plus!">
+<!ENTITY description "O Adblock Plus permite decidir o que você quer ver na internet. Você não precisa mais baixar todas os anúncios e banners dos sites; se você não quer propaganda, remova com o Adblock Plus!">
 <!ENTITY homepage.label "Página do Adblock Plus:">
 <!ENTITY author.label "Autor:">
 <!ENTITY contributors.label "Colaboradores:">
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/filters.dtd b/chrome/adblockplus.jar!/locale/pt-BR/filters.dtd
new file mode 100644
index 0000000..6e2ddcc
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/pt-BR/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Opções de Filtros do Adblock Plus">
+<!ENTITY subscriptions.tab.label "Inscrições de filtros">
+<!ENTITY filters.tab.label "Filtros personalizados">
+<!ENTITY addSubscription.label "Adicionar inscrição de filtros">
+<!ENTITY addSubscription.accesskey "A">
+<!ENTITY addSubscriptionAdd.label "Adicionar">
+<!ENTITY addSubscriptionCancel.label "Cancelar">
+<!ENTITY addSubscriptionOther.label "Adicionar outra inscrição">
+<!ENTITY noSubscriptions.text "Você ainda não adicionou nenhuma inscrição de filtros. O Adblock Plus não vai bloquear nada sem filtros. Por favor, clique em "Adicionar inscrição de filtros".">
+<!ENTITY subscription.homepage.label "página da inscrição">
+<!ENTITY subscription.external.label "Atualizado por outra extensão">
+<!ENTITY subscription.source.label "lista de filtros">
+<!ENTITY subscription.enabled.label "Ativado">
+<!ENTITY subscription.lastDownload.label "Último download:">
+<!ENTITY subscription.lastDownload.inProgress "Fazendo download...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Falhou, não é um endereço válido">
+<!ENTITY subscription.lastDownload.connectionError "Falhou, falha no download">
+<!ENTITY subscription.lastDownload.invalidData "Falhou, não é uma lista de filtros válida">
+<!ENTITY subscription.lastDownload.checksumMismatch "Falhou, checksum deu errado">
+<!ENTITY subscription.lastDownload.success "Êxito">
+<!ENTITY subscription.minVersion.warning "Esta inscrição de filtros exige uma versão mais nova do Adblock Plus. Por favor, atualize o Adblock Plus para a versão mais recente.">
+<!ENTITY subscription.disabledFilters.warning "Alguns filtros nesta inscrição estão desativados.">
+<!ENTITY subscription.disabledFilters.enable "Ativar filtros desativados">
+<!ENTITY subscription.actions.label "Ações">
+<!ENTITY subscription.update.label "Atualizar filtros">
+<!ENTITY subscription.editTitle.label "Alterar título">
+<!ENTITY subscription.delete.label "Excluir">
+<!ENTITY subscription.showHideFilters.label "Exibir/ocultar filtros">
+<!ENTITY subscription.moveUp.label "Para cima">
+<!ENTITY subscription.moveDown.label "Para baixo">
+<!ENTITY acceptableAds.label "Permitir publicidade não-invasiva">
+<!ENTITY acceptableAds.accesskey "P">
+<!ENTITY readMore.label "Saiba mais">
+<!ENTITY addGroup.label "Adicionar grupo de filtros">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "Você ainda não tem nenhum filtro personalizado.">
+<!ENTITY addFilter.label "Adicionar filtro">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "Ações de filtros">
+<!ENTITY filter.edit.label "Editar">
+<!ENTITY filter.cut.label "Recortar">
+<!ENTITY filter.copy.label "Copiar">
+<!ENTITY filter.paste.label "Colar">
+<!ENTITY filter.delete.label "Excluir">
+<!ENTITY filter.selectAll.label "Selecionar tudo">
+<!ENTITY filter.resetHitCounts.label "Limpar estatística de acertos">
+<!ENTITY filter.moveUp.label "Para cima">
+<!ENTITY filter.moveDown.label "Para baixo">
+<!ENTITY viewMenu.label "Visualizar">
+<!ENTITY filter.column "Regra de Filtro">
+<!ENTITY filter.accesskey "R">
+<!ENTITY slow.column "Filtros lentos">
+<!ENTITY slow.accesskey "e">
+<!ENTITY enabled.column "Ativado">
+<!ENTITY enabled.accesskey "A">
+<!ENTITY hitcount.column "Acertos">
+<!ENTITY hitcount.accesskey "C">
+<!ENTITY lasthit.column "Último acerto">
+<!ENTITY lasthit.accesskey "l">
+<!ENTITY sort.label "Organizar por">
+<!ENTITY sort.accesskey "O">
+<!ENTITY sort.none.label "Desorganizado">
+<!ENTITY sort.none.accesskey "D">
+<!ENTITY sort.ascending.label "Ordem A > Z">
+<!ENTITY sort.ascending.accesskey "M">
+<!ENTITY sort.descending.label "Ordem Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Você precisa selecionar um grupo de filtros para poder exibir os filtros dele.">
+<!ENTITY noFiltersInGroup.text "O grupo selecionado está vazio">
+<!ENTITY filters.remove.warning "Você realmente deseja remover todos os filtros selecionados?">
+<!ENTITY backupButton.label "Backup e restauração">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "Criar novo backup">
+<!ENTITY restore.default.label "Restaurar backup de ?1?">
+<!ENTITY restore.own.label "Restaurar backup específico">
+<!ENTITY backup.complete.title "Todos os filtros e inscrições">
+<!ENTITY backup.custom.title "Somente filtros personalizados">
+<!ENTITY backup.error "Ocorreu um erro ao gravar os filtros no arquivo. Verifique se o arquivo está protegido contra gravação ou se está em uso por outro programa.">
+<!ENTITY restore.error "Não foi possível processar os dados desse arquivo. Talvez ele não seja um arquivo de backup do Adblock Plus.">
+<!ENTITY restore.complete.warning "Todas as suas opções de filtros serão substituídas pelo conteúdo do arquivo selecionado. Você deseja continuar?">
+<!ENTITY restore.custom.warning "Todos os seus filtros personalizados serão substituídos pelo conteúdo do arquivo selecionado. Você deseja continuar?">
+<!ENTITY restore.minVersion.warning "Atenção! O arquivo foi criado com um versão mais nova do Adblock Plus. Por favor, atualize o Adblock Plus para a versão mais recente antes de restaurar esse arquivo.">
+<!ENTITY find.label "Localizar">
+<!ENTITY find.accesskey "L">
+<!ENTITY close.label "Fechar">
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/firstRun.dtd b/chrome/adblockplus.jar!/locale/pt-BR/firstRun.dtd
new file mode 100644
index 0000000..52222d0
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/pt-BR/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Instalação do Adblock Plus concluída">
+<!ENTITY confirmation "
+	Obrigado por instalar o Adblock Plus. As propagandas serão bloqueadas a partir de agora.
+	Aproveite!">
+<!ENTITY advancedSection "Opções Avançadas">
+<!ENTITY listSelection1 "
+	A seguinte lista de filtros foi selecionada para bloquear as propagandas:
+">
+<!ENTITY noList "Nenhuma lista de filtros">
+<!ENTITY visitHomepage.label "Abrir página da lista">
+<!ENTITY acceptableAds "
+	O Adblock Plus também foi configurado para permitir publicidade não-invasiva.
+">
+<!ENTITY readMore.label "Saiba mais sobre isso">
+<!ENTITY listSelection2 "
+	Você pode mudar essas configurações a qualquer momento nas [link]opções de filtros[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/global.properties b/chrome/adblockplus.jar!/locale/pt-BR/global.properties
index 3e6feaa..d5681b3 100644
--- a/chrome/adblockplus.jar!/locale/pt-BR/global.properties
+++ b/chrome/adblockplus.jar!/locale/pt-BR/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? de ?2?
 blocked_count_addendum=(e também liberados: ?1?, ocultos: ?2?)
 no_blocking_suggestions=Nenhum item bloqueável na página atual
 whitelisted_page=O Adblock Plus foi desativado para a página atual
-whitelist_description=Regras de exceção
-filterlist_description=Filtros de propaganda
-invalid_description=Filtros Inválidos
-elemhide_description=Regras para ocultar elementos
-subscription_description=Inscrição do filtro:
-subscription_wrong_version=Alguns filtros nessa inscrição requerem o Adblock Plus ?1? para funcionar corretamente!
-subscription_source=Fonte:
-subscription_status=Status:
-subscription_status_autodownload=Atualizado automaticamente
-subscription_status_manualdownload=Atualizado manualmente
-subscription_status_externaldownload=Atualizado externamente (outra extensão)
-subscription_status_lastdownload=Último download:
-subscription_status_lastdownload_inprogress=Fazendo download...
-subscription_status_lastdownload_unknown=N/A
+newGroup_title=Novo grupo de filtros
+whitelistGroup_title=Regras de exceção
+blockingGroup_title=Regras de bloqueio de propaganda
+elemhideGroup_title=Regras de ocultamento de elementos
 remove_subscription_warning=Você realmente deseja remover esta inscrição?
-import_filters_wrong_version=Aviso: alguns dos filtros nessa lista requerem o Adblock Plus ?1? para funcionar corretamente. Você deveria provavelmente atualizar para a última versão do Adblock Plus antes de importar essa lista.
-import_filters_warning=Você deseja substituir os seus filtros atuais ou adicionar os novos filtros no fim da lista?
-import_filters_title=Importar filtros
-export_filters_title=Exportar filtros
-invalid_filters_file=Não é um arquivo de filtro válido do Adblock Plus.
-filters_write_error=Houve um erro na gravação dos filtros no arquivo. Certifique-se de que o arquivo não esteja protegido contra gravação ou sendo usado por outro programa.
-clearall_warning=Você deseja realmente remover todos os filtros da lista?
-resethitcounts_warning=Você deseja realmente limpar as estatísticas de acertos para todos os filtros? Esta operação não poderá ser desfeita!
-resethitcounts_selected_warning=Você deseja realmente limpar as estatísticas de acertos para os filtros selecionados? Esta operação não poderá ser desfeita!
+clearStats_warning=Isso vai reiniciar todas as estatísticas de acertos dos filtros e desativar o contador de acertos dos filtros. Você deseja continuar?
 filter_regexp_tooltip=Este filtro é também uma expressão regular ou curta demais para ser otimizada. Muitos desses filtros podem causar lentidão na navegação.
 filter_elemhide_duplicate_id=Somente uma ID do elemento a ser ocultado pode ser especificada
 filter_elemhide_nocriteria=Nenhum critério especificado para reconhecer o elemento a ser ocultado
-subscription_notAdded_warning=Você não adicionou nenhuma inscrição de filtros. Sem uma inscrição, você vai ter que adicionar filtros manualmente.
-subscription_notAdded_warning_addendum=Você deseja prosseguir mesmo assim?
 subscription_invalid_location=O local da lista de filtros não é nem uma URL válida nem um nome válido de arquivo.
-synchronize_invalid_url=Falhou, não é um endereço válido
-synchronize_connection_error=Falhou, falha no download
-synchronize_invalid_data=Falhou, não é uma lista de filtros válida
-synchronize_checksum_mismatch=Falhou, checksum deu errado
-synchronize_ok=Êxito
-overwrite=Sobrescrever
-append=Marcador
-new_filter_group_title=Novo filtro
 type_label_other=outro
 type_label_script=script
 type_label_image=imagem
@@ -56,15 +28,12 @@ type_label_object=objeto
 type_label_subdocument=frame
 type_label_document=documento
 type_label_elemhide=oculto
-type_label_xbl=XBL binding
-type_label_ping=ping do link
+type_label_popup=janela popup
 type_label_xmlhttprequest=requisição XML
 type_label_object_subrequest=sub-requisição do objeto
-type_label_dtd=DTD
 type_label_media=áudio/vídeo
 type_label_font=fonte
 fennec_status_enabled=O Adblock Plus está ativado.
 fennec_status_disabled=O Adblock Plus está desativado.
 fennec_status_enabled_site=O Adblock Plus está ativado para ?1?.
 fennec_status_disabled_site=O Adblock Plus está desativado para ?1?.
-sync_engine_title=Dados do Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/overlay.dtd b/chrome/adblockplus.jar!/locale/pt-BR/overlay.dtd
index 3ef983d..8ba1e13 100644
--- a/chrome/adblockplus.jar!/locale/pt-BR/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/pt-BR/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Itens Bloqueáveis">
 <!ENTITY context.image.label "Adblock Imagem">
 <!ENTITY context.object.label "Adblock Objeto">
 <!ENTITY context.frame.label "Adblock Frame">
@@ -13,15 +12,31 @@
 <!ENTITY sidebar.title "Itens bloqueáveis na página atual.">
 <!ENTITY sendReport.label "Reportar problema com esta página">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Preferências">
-<!ENTITY settings.accesskey "F">
+<!ENTITY filters.label "Opções de filtros">
+<!ENTITY filters.accesskey "f">
 <!ENTITY opensidebar.label "Abrir itens bloqueáveis">
-<!ENTITY opensidebar.accesskey "B">
+<!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Fechar itens bloqueáveis">
-<!ENTITY closesidebar.accesskey "B">
+<!ENTITY closesidebar.accesskey "b">
 <!ENTITY whitelist.site.label "Desativar em ?1?">
 <!ENTITY whitelist.page.label "Desativar somente nesta página">
 <!ENTITY disable.label "Desativar em todas as páginas">
-<!ENTITY recommend.label "Recomendar no Facebook">
+<!ENTITY options.label "Opções">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Contribuir com o Adblock Plus">
+<!ENTITY showintoolbar.label "Mostrar na barra de ferramentas">
+<!ENTITY showintoolbar.accesskey "f">
+<!ENTITY showinstatusbar.label "Mostrar na barra de status">
+<!ENTITY showinstatusbar.accesskey "M">
+<!ENTITY showinaddonbar.label "Mostrar na barra de extensões">
+<!ENTITY showinaddonbar.accesskey "x">
+<!ENTITY objecttabs.label "Mostrar abas em Flash e Java">
+<!ENTITY objecttabs.accesskey "J">
+<!ENTITY hideplaceholders.label "Comprimir espaço de elementos bloqueados">
+<!ENTITY hideplaceholders.accesskey "C">
+<!ENTITY counthits.label "Contar acertos de filtros">
+<!ENTITY counthits.accesskey "a">
+<!ENTITY sync.label "Sincronizar configurações do Adblock Plus">
+<!ENTITY sync.accesskey "i">
 <!ENTITY objecttab.title "Bloquear">
 <!ENTITY objecttab.tooltip "Clique aqui para bloquear este objeto com o Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/settings.dtd b/chrome/adblockplus.jar!/locale/pt-BR/settings.dtd
deleted file mode 100644
index 697ddeb..0000000
--- a/chrome/adblockplus.jar!/locale/pt-BR/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Preferências do Adblock Plus">
-<!ENTITY filters.label "Filtros">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Adicionar filtro">
-<!ENTITY add.accesskey "D">
-<!ENTITY addsubscription.label "Adicionar inscrição de filtros">
-<!ENTITY addsubscription.accesskey "A">
-<!ENTITY synchsubscriptions.label "Atualizar todas as inscrições">
-<!ENTITY synchsubscriptions.accesskey "T">
-<!ENTITY import.label "Importar filtros">
-<!ENTITY import.accesskey "I">
-<!ENTITY export.label "Exportar filtros">
-<!ENTITY export.accesskey "E">
-<!ENTITY clearall.label "Remover todos os filtros">
-<!ENTITY clearall.accesskey "R">
-<!ENTITY resethitcounts.label "Limpar estatísticas de acerto">
-<!ENTITY resethitcounts.accesskey "L">
-<!ENTITY edit.label "Editar">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Recortar">
-<!ENTITY cut.accesskey "R">
-<!ENTITY copy.label "Copiar">
-<!ENTITY copy.accesskey "c">
-<!ENTITY paste.label "Colar">
-<!ENTITY paste.accesskey "o">
-<!ENTITY remove.label "Excluir">
-<!ENTITY remove.accesskey "x">
-<!ENTITY menu.find.label "Localizar">
-<!ENTITY menu.find.accesskey "z">
-<!ENTITY menu.findagain.label "Localizar novamente">
-<!ENTITY menu.findagain.accesskey "n">
-<!ENTITY view.label "Visualizar">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Organizar por">
-<!ENTITY sort.accesskey "O">
-<!ENTITY sort.none.label "Desorganizado">
-<!ENTITY sort.none.accesskey "D">
-<!ENTITY sort.ascending.label "Ordem A > Z">
-<!ENTITY sort.ascending.accesskey "M">
-<!ENTITY sort.descending.label "Ordem Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opções">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Ativar o Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Mostrar na barra de ferramentas">
-<!ENTITY showintoolbar.accesskey "f">
-<!ENTITY showinstatusbar.label "Mostrar na barra de status">
-<!ENTITY showinstatusbar.accesskey "M">
-<!ENTITY objecttabs.label "Mostrar abas em Flash e Java">
-<!ENTITY objecttabs.accesskey "J">
-<!ENTITY collapse.label "Comprimir elementos bloqueados">
-<!ENTITY collapse.accesskey "C">
-<!ENTITY sync.label "Sincronizar configurações do Adblock Plus">
-<!ENTITY sync.accesskey "i">
-<!ENTITY help.label "Ajuda">
-<!ENTITY help.accesskey "U">
-<!ENTITY gettingStarted.label "Aprendendo a usar">
-<!ENTITY gettingStarted.accesskey "u">
-<!ENTITY faq.label "Perguntas mais frequentes">
-<!ENTITY faq.accesskey "f">
-<!ENTITY filterdoc.label "Criando filtros para o Adblock Plus">
-<!ENTITY filterdoc.accesskey "C">
-<!ENTITY about.label "Sobre o Adblock Plus">
-<!ENTITY about.accesskey "S">
-<!ENTITY description "Os filtros seguintes determinam que endereços devem ser bloqueados e os que devem ser permitidos:">
-<!ENTITY filter.column "Regra de Filtro">
-<!ENTITY filter.accesskey "R">
-<!ENTITY slow.column "Filtros lentos">
-<!ENTITY slow.accesskey "e">
-<!ENTITY enabled.column "Ativado">
-<!ENTITY enabled.accesskey "A">
-<!ENTITY hitcount.column "Acertos">
-<!ENTITY hitcount.accesskey "C">
-<!ENTITY lasthit.column "Último acerto">
-<!ENTITY lasthit.accesskey "l">
-<!ENTITY context.edit.label "Editar filtro">
-<!ENTITY context.resethitcount.label "Limpar estatísticas de acerto para o filtro">
-<!ENTITY context.synchsubscription.label "Atualizar inscrição agora">
-<!ENTITY context.editsubscription.label "Editar inscrição">
-<!ENTITY context.moveup.label "Para cima">
-<!ENTITY context.movedown.label "Para baixo">
-<!ENTITY context.movegroupup.label "Grupo para cima">
-<!ENTITY context.movegroupdown.label "Grupo para baixo">
-<!ENTITY context.enable.label "Ativar">
-<!ENTITY context.disable.label "Desativar">
-<!ENTITY apply.label "Aplicar">
-<!ENTITY apply.accesskey "A">
-<!ENTITY fennec.subscription.label "Inscrição de filtros">
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/sidebar.dtd b/chrome/adblockplus.jar!/locale/pt-BR/sidebar.dtd
index 49210d8..54c565a 100644
--- a/chrome/adblockplus.jar!/locale/pt-BR/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/pt-BR/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtro">
 <!ENTITY state.label "Estado">
 <!ENTITY size.label "Tamanho">
+<!ENTITY filterSource.label "Fonte do filtro">
 <!ENTITY docDomain.label "Origem do documento">
 <!ENTITY docDomain.thirdParty "(domínio diferente)">
 <!ENTITY docDomain.firstParty "(mesmo domínio)">
@@ -21,7 +22,7 @@
 <!ENTITY tooltip.docDomain.label "Origem do documento:">
 <!ENTITY tooltip.filter.label "Filtro em ação:">
 <!ENTITY tooltip.filter.disabled "desativado">
-<!ENTITY tooltip.filterSource.label "Fonte do Filtro:">
+<!ENTITY tooltip.filterSource.label "Fonte do filtro:">
 <!ENTITY context.block.label "Bloquear este item">
 <!ENTITY context.editfilter.label "Editar filtro em efeito">
 <!ENTITY context.whitelist.label "Adicionar exceção para o item">
diff --git a/chrome/adblockplus.jar!/locale/pt-BR/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/pt-BR/subscriptionSelection.dtd
index 6dbb64c..5003185 100644
--- a/chrome/adblockplus.jar!/locale/pt-BR/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/pt-BR/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Adicionar inscrição de filtros do Adblock Plus">
-<!ENTITY dialog.title.edit "Editar inscrição de filtros do Adblock Plus">
-<!ENTITY description.newInstall "O Adblock Plus funciona melhor quando você adiciona uma inscrição de filtros. As inscrições de filtros são fornecidas gratuitamente por outros usuários do Adblock Plus. A inscrição mais adequada para o seu idioma já está selecionada.">
 <!ENTITY subscriptionSelector.label "Por favor, escolha uma inscrição de filtros da lista:">
 <!ENTITY viewList.label "Visualizar filtros">
 <!ENTITY visitHomepage.label "Abrir página da inscrição">
 <!ENTITY addSubscription.label "Adicionar inscrição">
-<!ENTITY saveSubscription.label "Salvar inscrição">
-<!ENTITY other.label "Adicionar outra inscrição">
-<!ENTITY other.accesskey "O">
 <!ENTITY list.download.failed "O Adblock Plus não conseguiu obter a lista de inscrições.">
 <!ENTITY list.download.retry "Tentar novamente">
 <!ENTITY list.download.website "Abrir página da lista de inscrições">
 <!ENTITY fromWeb.description "Por favor, confirme que você deseja adicionar essa inscrição de filtros. Você pode alterar o título ou o endereço da inscrição antes de adicionar.">
-<!ENTITY edit.description "Você pode alterar o título ou o endereço da inscrição conforme necessário.">
-<!ENTITY external.description "Esta é uma da inscrição de filtros externa, que será atualizada pela extensão que a criou.">
 <!ENTITY title.label "Título da inscrição:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Endereço da lista de filtros:">
 <!ENTITY location.accesskey "E">
-<!ENTITY autodownload.label "Atualizar automaticamente">
-<!ENTITY autodownload.accesskey "A">
 <!ENTITY supplementMessage "Essa inscrição de filtros foi feita para ser usada com inscrição "?1?", que você não está usando ainda.">
 <!ENTITY addMain.label "Adicionar também a inscrição de filtros "?1?"">
 <!ENTITY addMain.accesskey "f">
diff --git a/chrome/adblockplus.jar!/locale/pt-PT/filters.dtd b/chrome/adblockplus.jar!/locale/pt-PT/filters.dtd
new file mode 100644
index 0000000..ddfd3da
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/pt-PT/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Preferências de filtros do Adblock Plus">
+<!ENTITY subscriptions.tab.label "Subscrições de filtros">
+<!ENTITY filters.tab.label "Filtros personalizados">
+<!ENTITY addSubscription.label "Adicionar subscrição de filtros">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Adicionar">
+<!ENTITY addSubscriptionCancel.label "Cancelar">
+<!ENTITY addSubscriptionOther.label "Adicionar outra subscrição">
+<!ENTITY noSubscriptions.text "
+	Ainda não adicionou nenhuma subscrição de filtros. O Adblock Plus não bloqueará
+	nada sem filtros, por favor utilize "Adicionar subscrição de filtros" para
+	adicionar algum.
+">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY subscription.external.label "Actualizado por outra extensão">
+<!ENTITY subscription.source.label "Lista de filtros">
+<!ENTITY subscription.enabled.label "Activo">
+<!ENTITY subscription.lastDownload.label "Último download:">
+<!ENTITY subscription.lastDownload.inProgress "A fazer download...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Falhou, endereço inválido">
+<!ENTITY subscription.lastDownload.connectionError "Falhou, download inválido">
+<!ENTITY subscription.lastDownload.invalidData "Falhou, lista de filtros inválida">
+<!ENTITY subscription.lastDownload.checksumMismatch "Falhou. Checksum errado.">
+<!ENTITY subscription.lastDownload.success "Sucesso">
+<!ENTITY subscription.minVersion.warning "Esta subscrição de filtros requer uma versão mais recente do Adblock Plus, deve actualizar para a versão mais recente do Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Alguns filtros desta subscrição estão desactivados.">
+<!ENTITY subscription.disabledFilters.enable "Activar filtros desactivados.">
+<!ENTITY subscription.actions.label "Acções">
+<!ENTITY subscription.update.label "Actualizar filtros">
+<!ENTITY subscription.editTitle.label "Editar título">
+<!ENTITY subscription.delete.label "Apagar">
+<!ENTITY subscription.showHideFilters.label "Mostrar/ esconder filtros">
+<!ENTITY subscription.moveUp.label "Mover para cima">
+<!ENTITY subscription.moveDown.label "Mover para baixo">
+<!ENTITY acceptableAds.label "Permitir publicidade não-intrusiva">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Ler mais">
+<!ENTITY addGroup.label "Adicionar grupo de filtros">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+	Ainda não tem qualquer filtro personalizado.
+">
+<!ENTITY addFilter.label "Adicionar filtro">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "Acções de filtros">
+<!ENTITY filter.edit.label "Editar">
+<!ENTITY filter.cut.label "Recortar">
+<!ENTITY filter.copy.label "Copiar">
+<!ENTITY filter.paste.label "Colar">
+<!ENTITY filter.delete.label "Excluir">
+<!ENTITY filter.selectAll.label "Seleccionar todos">
+<!ENTITY filter.resetHitCounts.label "Apagar estatísticas">
+<!ENTITY filter.moveUp.label "Mover para cima">
+<!ENTITY filter.moveDown.label "Mover para baixo">
+<!ENTITY viewMenu.label "Ver">
+<!ENTITY filter.column "Regra de filtro">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Filtros lentos">
+<!ENTITY slow.accesskey "l">
+<!ENTITY enabled.column "Activado">
+<!ENTITY enabled.accesskey "t">
+<!ENTITY hitcount.column "Contagem">
+<!ENTITY hitcount.accesskey "C">
+<!ENTITY lasthit.column "Última utilização">
+<!ENTITY lasthit.accesskey "U">
+<!ENTITY sort.label "Organizar por">
+<!ENTITY sort.accesskey "O">
+<!ENTITY sort.none.label "Não organizado">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "Organizar A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Organizar Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "É necessário seleccionar um grupo de filtros para que estes sejam exibidos.">
+<!ENTITY noFiltersInGroup.text "O grupo seleccionado está vazio">
+<!ENTITY filters.remove.warning "Deseja, realmente, remover todos os filtros seleccionados?">
+<!ENTITY backupButton.label "Backup e Restaurar">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "Criar novo backup">
+<!ENTITY restore.default.label "Restaurar backup de ?1?">
+<!ENTITY restore.own.label "Restaurar outro backup">
+<!ENTITY backup.complete.title "Todos os filtros e subscrições">
+<!ENTITY backup.custom.title "Apenas filtros personalizados">
+<!ENTITY backup.error "Ocorreu um erro ao guardar os filtros para ficheiro. Certifique-se que o ficheiro não está protegido contra escrita ou em utilização por outra aplicação.">
+<!ENTITY restore.error "A informação do ficheiro não foi processada com sucesso, tem a certeza que é um ficheiro de backup do Adblock Plus?">
+<!ENTITY restore.complete.warning "Todas as preferências de filtros serão substituídas pelos conteúdos do ficheiro seleccionado. Tem a certeza que deseja prosseguir?">
+<!ENTITY restore.custom.warning "Todas os seus filtros personalizados serão substituídas pelos conteúdos do ficheiro seleccionado. Tem a certeza que deseja prosseguir?">
+<!ENTITY restore.minVersion.warning "Atenção: o ficheiro foi criado com uma versão mais recente do Adblock Plus. Deve actualizar para a versão mais recente do Adblock Plus antes de restaurar a partir deste ficheiro.">
+<!ENTITY find.label "Localizar">
+<!ENTITY find.accesskey "n">
+<!ENTITY close.label "Fechar">
diff --git a/chrome/adblockplus.jar!/locale/pt-PT/firstRun.dtd b/chrome/adblockplus.jar!/locale/pt-PT/firstRun.dtd
new file mode 100644
index 0000000..4036a4a
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/pt-PT/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus - instalação completa">
+<!ENTITY confirmation "
+	Obrigado por instalar o Adblock Plus. A publicidade será bloqueada a partir de agora.
+	Divirta-se!">
+<!ENTITY advancedSection "Opções avançadas">
+<!ENTITY listSelection1 "
+	A seguinte lista de filtros foi configurada para bloquear publicidade:
+">
+<!ENTITY noList "Não existe lista de filtros">
+<!ENTITY visitHomepage.label "Visitar homepage da lista">
+<!ENTITY acceptableAds "
+	O Adblock Plus foi configurado para permitir publicidade não-intrusiva.
+">
+<!ENTITY readMore.label "Ler mais acerca disto">
+<!ENTITY listSelection2 "
+	Pode alterar esta selecção a qualquer momento através das [link]Preferências de filtros[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/pt-PT/global.properties b/chrome/adblockplus.jar!/locale/pt-PT/global.properties
index dbba98c..cf341e5 100644
--- a/chrome/adblockplus.jar!/locale/pt-PT/global.properties
+++ b/chrome/adblockplus.jar!/locale/pt-PT/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? de ?2?
 blocked_count_addendum=(também na lista branca: ?1?, escondido: ?2?)
 no_blocking_suggestions=Não há itens bloqueáveis na página actual
 whitelisted_page=O Adblock Plus foi desactivado para a página actual
-whitelist_description=Regras de excepção
-filterlist_description=Filtros de publicidade
-invalid_description=Filtros inválidos
-elemhide_description=Regras para esconder elementos
-subscription_description=Subscrição de filtros:
-subscription_wrong_version=Alguns filtros desta subscrição requerem o Adblock Plus ?1? para funcionar devidamente!
-subscription_source=Fonte:
-subscription_status=Estado:
-subscription_status_autodownload=Actualizado automaticamente
-subscription_status_manualdownload=Actualizado manualmente
-subscription_status_externaldownload=Actualizado externamente (outra extensão)
-subscription_status_lastdownload=Último download:
-subscription_status_lastdownload_inprogress=A fazer download...
-subscription_status_lastdownload_unknown=N/A
+newGroup_title=Novo grupo de filtros
+whitelistGroup_title=Regras de excepção
+blockingGroup_title=Regras de bloqueio de publicidade
+elemhideGroup_title=Regras de bloqueio de elementos
 remove_subscription_warning=Deseja, realmente, remover esta subscrição?
-import_filters_wrong_version=Aviso: alguns dos filtros desta lista requerem o Adblock Plus ?1? para funcionar devidamente. Provavelmente devia actualizar para a última versão do Adblock Plus antes de importar esta lista.
-import_filters_warning=Deseja substituir os filtros actuais ou adicionar os filtros novos ao final da lista?
-import_filters_title=Importar filtros
-export_filters_title=Exportar filtros
-invalid_filters_file=Não é um ficheiro de filtros válido para o Adblock Plus.
-filters_write_error=Houve um erro ao guardar os filtros para ficheiro. Certifique-se que o ficheiro não está protegido contra escrita ou em utilização por outro programa.
-clearall_warning=Deseja, realmente, remover todos os filtros da lista?
-resethitcounts_warning=Deseja, mesmo, apagar a contagem para todos os filtros? Esta operação não poderá ser revertida!
-resethitcounts_selected_warning=Deseja, mesmo, apagar a contagem para os filtros seleccionados? Esta operação não poderá ser revertida!
+clearStats_warning=Isto irá reiniciar a estatística de todos os filtros e desactivar a contabilização de bloqueios. Deseja continuar?
 filter_regexp_tooltip=Este filtro é uma expressão regular ou demasiado curto para ser optimizado. Demasiados filtros com estas características podem lentificar o browser.
 filter_elemhide_duplicate_id=Apenas uma ID do elemento a bloquear pode ser especificado.
 filter_elemhide_nocriteria=Sem critério especificado para reconhecer o elemento a bloquear.
-subscription_notAdded_warning=Não adicionou subscrições de filtros. Sem subscrições é necessário adicionar filtros manualmente.
-subscription_notAdded_warning_addendum=Deseja continuar?
 subscription_invalid_location=A localização da lista de filtros não é um endereço ou nome de ficheiro válido.
-synchronize_invalid_url=Falhou, endereço inválido
-synchronize_connection_error=Falhou, download inválido
-synchronize_invalid_data=Falhou, lista de filtros inválida
-synchronize_checksum_mismatch=Falhou. Checksum errado.
-synchronize_ok=Sucesso
-overwrite=Substituir
-append=Adicionar
-new_filter_group_title=Novo filtro
 type_label_other=outro
 type_label_script=script
 type_label_image=imagem
@@ -56,15 +28,12 @@ type_label_object=objecto
 type_label_subdocument=moldura
 type_label_document=documento
 type_label_elemhide=escondido
-type_label_xbl=XBL binding
-type_label_ping=link ping
+type_label_popup=janela pop-up
 type_label_xmlhttprequest=pedido XML
 type_label_object_subrequest=subpedido de objecto
-type_label_dtd=DTD
 type_label_media=audio/ vídeo
 type_label_font=fonte
 fennec_status_enabled=O Adblock Plus está activo.
 fennec_status_disabled=O Adblock Plus está inactivo.
 fennec_status_enabled_site=O Adblock Plus está activo em ?1?.
 fennec_status_disabled_site=O Adblock Plus está inactivo em ?1?.
-sync_engine_title=Informação Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/pt-PT/overlay.dtd b/chrome/adblockplus.jar!/locale/pt-PT/overlay.dtd
index 079e84b..60f2da5 100644
--- a/chrome/adblockplus.jar!/locale/pt-PT/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/pt-PT/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Itens Bloqueáveis">
 <!ENTITY context.image.label "Bloquear Imagem">
 <!ENTITY context.object.label "Bloquear Objecto">
 <!ENTITY context.frame.label "Bloquear Moldura">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Elementos bloqueáveis na página actual">
 <!ENTITY sendReport.label "Reportar problema com esta página">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Preferências">
-<!ENTITY settings.accesskey "F">
+<!ENTITY filters.label "Preferências de filtros">
+<!ENTITY filters.accesskey "f">
 <!ENTITY opensidebar.label "Abrir lista de elementos bloqueáveis">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Fechar lista de elementos bloqueáveis">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Desactivar em ?1?">
 <!ENTITY whitelist.page.label "Desactivar apenas nesta página">
 <!ENTITY disable.label "Desactivar em todas as páginas">
-<!ENTITY recommend.label "Recomendar-nos no Facebook">
+<!ENTITY options.label "Opções">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "Contribuir para o Adblock Plus">
+<!ENTITY showintoolbar.label "Mostrar na barra de ferramentas">
+<!ENTITY showintoolbar.accesskey "M">
+<!ENTITY showinstatusbar.label "Mostrar na barra de estado">
+<!ENTITY showinstatusbar.accesskey "S">
+<!ENTITY showinaddonbar.label "Mostrar na barra de add-ons">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Mostrar etiquetas em Flash e Java">
+<!ENTITY objecttabs.accesskey "T">
+<!ENTITY hideplaceholders.label "Esconder locais de elementos bloqueados">
+<!ENTITY hideplaceholders.accesskey "i">
+<!ENTITY counthits.label "Contabilizar bloqueios do filtro">
+<!ENTITY counthits.accesskey "C">
+<!ENTITY sync.label "Sincronizar configuração Adblock Plus">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Bloquear">
 <!ENTITY objecttab.tooltip "Clique aqui para bloquear este objecto com o Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/pt-PT/settings.dtd b/chrome/adblockplus.jar!/locale/pt-PT/settings.dtd
deleted file mode 100644
index da40ba2..0000000
--- a/chrome/adblockplus.jar!/locale/pt-PT/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Preferências do Adblock Plus">
-<!ENTITY filters.label "Filtros">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Adicionar filtro">
-<!ENTITY add.accesskey "D">
-<!ENTITY addsubscription.label "Adicionar subscrição de filtros">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "Actualizar todas as subscrições">
-<!ENTITY synchsubscriptions.accesskey "Z">
-<!ENTITY import.label "Importar filtros">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Exportar filtros">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "Remover todos os filtros">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "Apagar estatísticas">
-<!ENTITY resethitcounts.accesskey "A">
-<!ENTITY edit.label "Editar">
-<!ENTITY edit.accesskey "e">
-<!ENTITY cut.label "Recortar">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "Copiar">
-<!ENTITY copy.accesskey "c">
-<!ENTITY paste.label "Colar">
-<!ENTITY paste.accesskey "o">
-<!ENTITY remove.label "Excluir">
-<!ENTITY remove.accesskey "x">
-<!ENTITY menu.find.label "Localizar">
-<!ENTITY menu.find.accesskey "L">
-<!ENTITY menu.findagain.label "Localizar seguinte">
-<!ENTITY menu.findagain.accesskey "S">
-<!ENTITY view.label "Ver">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Organizar por">
-<!ENTITY sort.accesskey "O">
-<!ENTITY sort.none.label "Não organizado">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "Organizar A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Organizar Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opções">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Activar Adblock Plus">
-<!ENTITY enable.accesskey "V">
-<!ENTITY showintoolbar.label "Mostrar na barra de ferramentas">
-<!ENTITY showintoolbar.accesskey "M">
-<!ENTITY showinstatusbar.label "Mostrar na barra de estado">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "Mostrar etiquetas em Flash e Java">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "Colapsar elementos bloqueados">
-<!ENTITY collapse.accesskey "L">
-<!ENTITY sync.label "Sincronizar configuração Adblock Plus">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Ajuda">
-<!ENTITY help.accesskey "J">
-<!ENTITY gettingStarted.label "Começar a utilizar">
-<!ENTITY gettingStarted.accesskey "C">
-<!ENTITY faq.label "Questões Frequentemente Colocadas">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Escrever filtros Adblock Plus">
-<!ENTITY filterdoc.accesskey "E">
-<!ENTITY about.label "Acerca do Adblock Plus">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "Adicione os endereços que pretende bloquear, para sugestões verifique a lista. Pode usar * para criar filtros mais genéricos. Utilizadores avançados podem usar expressões regulares como /banner\d+\.gif$/.">
-<!ENTITY filter.column "Regra de filtro">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Filtros lentos">
-<!ENTITY slow.accesskey "l">
-<!ENTITY enabled.column "Activado">
-<!ENTITY enabled.accesskey "t">
-<!ENTITY hitcount.column "Contagem">
-<!ENTITY hitcount.accesskey "C">
-<!ENTITY lasthit.column "Última utilização">
-<!ENTITY lasthit.accesskey "U">
-<!ENTITY context.edit.label "Editar filtro">
-<!ENTITY context.resethitcount.label "Apagar estatísticas por filtro">
-<!ENTITY context.synchsubscription.label "Actualizar subscrição agora">
-<!ENTITY context.editsubscription.label "Editar subscrição">
-<!ENTITY context.moveup.label "Mover para cima">
-<!ENTITY context.movedown.label "Mover para baixo">
-<!ENTITY context.movegroupup.label "Mover grupo para cima">
-<!ENTITY context.movegroupdown.label "Mover grupo para baixo">
-<!ENTITY context.enable.label "Activar">
-<!ENTITY context.disable.label "Desactivar">
-<!ENTITY apply.label "Aplicar">
-<!ENTITY apply.accesskey "P">
-<!ENTITY fennec.subscription.label "Subscripção de filtro">
diff --git a/chrome/adblockplus.jar!/locale/pt-PT/sidebar.dtd b/chrome/adblockplus.jar!/locale/pt-PT/sidebar.dtd
index deaf384..ab28fbc 100644
--- a/chrome/adblockplus.jar!/locale/pt-PT/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/pt-PT/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filtro">
 <!ENTITY state.label "Estado">
 <!ENTITY size.label "Tamanho">
+<!ENTITY filterSource.label "Código fonte do filtro">
 <!ENTITY docDomain.label "Origem do documento">
 <!ENTITY docDomain.thirdParty "(terceira parte)">
 <!ENTITY docDomain.firstParty "(primeira parte)">
diff --git a/chrome/adblockplus.jar!/locale/pt-PT/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/pt-PT/subscriptionSelection.dtd
index 3605f0a..71a596c 100644
--- a/chrome/adblockplus.jar!/locale/pt-PT/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/pt-PT/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Adicionar subscrição de filtro Adblock Plus">
-<!ENTITY dialog.title.edit "Editar subscrição de filtros">
-<!ENTITY description.newInstall "O Adblock Plus é mais eficaz se adicionar subscrição de filtros. As subscrições de filtros são fornecidas gratuitamente por outros utilizadores do Adblock Plus. A subscrição mais acertada para o seu idioma já está seleccionada.">
 <!ENTITY subscriptionSelector.label "Por favor escolha uma subscrição de filtros da lista:">
 <!ENTITY viewList.label "Ver filtros">
 <!ENTITY visitHomepage.label "Visitar página">
 <!ENTITY addSubscription.label "Adicionar subscrição">
-<!ENTITY saveSubscription.label "Guardar subscrição">
-<!ENTITY other.label "Adicionar outra subscrição">
-<!ENTITY other.accesskey "O">
 <!ENTITY list.download.failed "Adblock Plus não conseguiu recuperar a lista de subscrições.">
 <!ENTITY list.download.retry "Tentar novamente">
 <!ENTITY list.download.website "Visitar website">
 <!ENTITY fromWeb.description "Por favor confirme que deseja adicionar esta subscrição de filtros. Pode alterar o título ou a localização da subscrição antes de adicioná-la.">
-<!ENTITY edit.description "Pode alterar o título ou localização da subscrição se necessário.">
-<!ENTITY external.description "Esta é uma subscrição de filtros externa; será actualizada pela extensão que criou a subscrição.">
 <!ENTITY title.label "Título da subscrição:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Localização de lista de filtros:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Actualizar automaticamente">
-<!ENTITY autodownload.accesskey "Z">
 <!ENTITY supplementMessage "Esta subscrição de filtros deve ser usada em conjunto com a subscrição "?1?" que não está a usar neste momento.">
 <!ENTITY addMain.label "Adicionar subscrição de filtros "?1?" também">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/ro/filters.dtd b/chrome/adblockplus.jar!/locale/ro/filters.dtd
new file mode 100644
index 0000000..0443265
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ro/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Adaugă abonament filtre">
+<!ENTITY addSubscriptionOther.label "Adaugă alt abonament">
+<!ENTITY subscription.lastDownload.label "Ultima descărcare:">
+<!ENTITY subscription.lastDownload.inProgress "Decărcare...">
+<!ENTITY subscription.lastDownload.unknown "Necunoscut">
+<!ENTITY subscription.lastDownload.invalidURL "Eşuat, adresa nu este validă">
+<!ENTITY subscription.lastDownload.connectionError "Eşuat, descărcare nereuşită">
+<!ENTITY subscription.lastDownload.invalidData "Eşuat, lista nu este validă">
+<!ENTITY subscription.lastDownload.checksumMismatch "Eşuat, suma de control nu se potriveşte.">
+<!ENTITY subscription.lastDownload.success "Succes">
+<!ENTITY addFilter.label "Adaugă filtru">
+<!ENTITY filter.cut.label "Taie">
+<!ENTITY filter.copy.label "Copiază">
+<!ENTITY filter.paste.label "Lipeşte">
+<!ENTITY filter.delete.label "Şterge">
+<!ENTITY viewMenu.label "Vizualizare">
+<!ENTITY filter.column "Regulă de filtrare">
+<!ENTITY filter.accesskey "R">
+<!ENTITY slow.column "Filtre lente">
+<!ENTITY slow.accesskey "l">
+<!ENTITY enabled.column "Stare">
+<!ENTITY enabled.accesskey "S">
+<!ENTITY hitcount.column "Contor">
+<!ENTITY hitcount.accesskey "C">
+<!ENTITY lasthit.column "Ultima aplicare">
+<!ENTITY lasthit.accesskey "U">
+<!ENTITY sort.label "Ordonare">
+<!ENTITY sort.accesskey "O">
+<!ENTITY sort.none.label "Neordonat">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "Crescător (A>Z)">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Descrescător (Z>A)">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Caută">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/ro/firstRun.dtd b/chrome/adblockplus.jar!/locale/ro/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ro/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/ro/global.properties b/chrome/adblockplus.jar!/locale/ro/global.properties
index 0c933e8..0616e4a 100644
--- a/chrome/adblockplus.jar!/locale/ro/global.properties
+++ b/chrome/adblockplus.jar!/locale/ro/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? din ?2?
 blocked_count_addendum=(permisiuni explicite: ?1?, elemente ascunse: ?2?)
 no_blocking_suggestions=În pagină nu se găseşte nici un element care să poată fi blocat
 whitelisted_page=Adblock Plus este inactiv pentru pagina curentă
-whitelist_description=Reguli excepţii
-filterlist_description=Filtre
-invalid_description=Filtre invalide
-elemhide_description=Reguli ascundere element
-subscription_description=Subscriere filtre:
-subscription_wrong_version=Pentru a funcţiona corespunzător, unele filtre necesită Adblock Plus ?1?.
-subscription_source=Sursa:
-subscription_status=Stare:
-subscription_status_autodownload=Actualizare automată
-subscription_status_manualdownload=Actualizare manuală
-subscription_status_externaldownload=Actualizare externă (altă extensie)
-subscription_status_lastdownload=Ultima descărcare:
-subscription_status_lastdownload_inprogress=Decărcare...
-subscription_status_lastdownload_unknown=Necunoscut
 remove_subscription_warning=Sigur doriţi să îndepărtaţi această subscriere?
-import_filters_wrong_version=Avertisment: pentru a funcţiona corespunzător, unele filtre necesită Adblock Plus ?1?. Înainte de a importa lista, este recomandat să actualizaţi extensia.
-import_filters_warning=Doriţi să suprascrieţi filtrele existente, sau să le adăugaţi la sfârşitul listei?
-import_filters_title=Import filtre
-export_filters_title=Export filtre
-invalid_filters_file=Fişierul cu lista de filtre este invalid.
-filters_write_error=Eroare la scrierea filtrelor în fişier. Asiguraţi-vă fişierul nu este protejat la scriere sau blocat de alt program.
-clearall_warning=Sigur doriţi să stergeţi toate filtrele din listă?
-resethitcounts_warning=Sigur doriţi să iniţializaţi contorul tuturor filtrelor? Această operaţie nu este reversibilă.
-resethitcounts_selected_warning=Sigur doriţi să iniţializaţi contorul filtrului ales? Această operaţie nu este reversibilă.
 filter_regexp_tooltip=Acest filtru este bazat pe expresii regulate sau este prea scurt pentru a fi optimizat. Prea multe astfel de filtre pot duce la încetinirea navigării.
 filter_elemhide_duplicate_id=Se poate specifica doar un singur identificator de element pentru ascundere.
 filter_elemhide_nocriteria=Nu s-a specificat nici un criteriu pentru a identifica elemntul pentru ascundere.
-subscription_notAdded_warning=Nu aţi adăugat un abonament filtre. În acest caz, va trebui să adăugaţi manual filtre pentru Adblock Plus.
-subscription_notAdded_warning_addendum=Doriţi să continuaţi?
 subscription_invalid_location=Locaţia pentru filtre nu este validă
-synchronize_invalid_url=Eşuat, adresa nu este validă
-synchronize_connection_error=Eşuat, descărcare nereuşită
-synchronize_invalid_data=Eşuat, lista nu este validă
-synchronize_checksum_mismatch=Eşuat, suma de control nu se potriveşte.
-synchronize_ok=Succes
-overwrite=Suprascrie
-append=Adaugă
-new_filter_group_title=Filtru nou
 type_label_other=alt element
 type_label_script=script
 type_label_image=imagine
@@ -56,15 +23,17 @@ type_label_object=obiect
 type_label_subdocument=cadru (frame)
 type_label_document=document
 type_label_elemhide=ascuns
-type_label_xbl=legare XBL
-type_label_ping=ping legătură
 type_label_xmlhttprequest=cerere XML
 type_label_object_subrequest=subcerere obiect
-type_label_dtd=DTD
 type_label_media=audio/video
 type_label_font=font
 fennec_status_enabled=Adblock Plus este activ.
 fennec_status_disabled=Adblock Plus este inactiv.
 fennec_status_enabled_site=Adblock Plus este activ în ?1?.
 fennec_status_disabled_site=Adblock Plus este inactiv în ?1?.
-sync_engine_title=Date Adblock Plus
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/ro/overlay.dtd b/chrome/adblockplus.jar!/locale/ro/overlay.dtd
index d266893..7efe41e 100644
--- a/chrome/adblockplus.jar!/locale/ro/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/ro/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: elemente blocabile">
 <!ENTITY context.image.label "Adblock Plus: blochează imagine">
 <!ENTITY context.object.label "Adblock Plus: blochează obiect">
 <!ENTITY context.frame.label "Adblock Plus: blochează frame">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Adblock Plus: elemente blocabile în pagină">
 <!ENTITY sendReport.label "Raportează probleme pe această pagină">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Particularizare">
-<!ENTITY settings.accesskey "P">
 <!ENTITY opensidebar.label "Deschide lista elementelor blocabile">
 <!ENTITY opensidebar.accesskey "l">
 <!ENTITY closesidebar.label "Închide lista elementelor blocabile">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Dezactivează Adblock Plus pe ?1?">
 <!ENTITY whitelist.page.label "Dezactivează Adblock Plus doar pe pagina curentă">
 <!ENTITY disable.label "Dezactivează peste tot">
-<!ENTITY recommend.label "Recomandă pe Facebook">
+<!ENTITY options.label "Opţiuni">
+<!ENTITY options.accesskey "O">
+<!ENTITY showintoolbar.label "Arată în bara de unelte">
+<!ENTITY showintoolbar.accesskey "u">
+<!ENTITY showinstatusbar.label "Arată în bara de stare">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY objecttabs.label "Arată panouri lângă Flash şi Java">
+<!ENTITY objecttabs.accesskey "p">
+<!ENTITY sync.label "Sincronizează setările Adblock Plus">
+<!ENTITY sync.accesskey "n">
 <!ENTITY objecttab.title "Blochează">
 <!ENTITY objecttab.tooltip "Click aici pentru a bloca obiectul utilizând Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/ro/settings.dtd b/chrome/adblockplus.jar!/locale/ro/settings.dtd
deleted file mode 100644
index b41ab98..0000000
--- a/chrome/adblockplus.jar!/locale/ro/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Particularizare Adblock Plus">
-<!ENTITY filters.label "Filtre">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Adaugă filtru">
-<!ENTITY add.accesskey "d">
-<!ENTITY addsubscription.label "Adaugă abonament filtre">
-<!ENTITY addsubscription.accesskey "b">
-<!ENTITY synchsubscriptions.label "Actualizează toate abonamentele">
-<!ENTITY synchsubscriptions.accesskey "c">
-<!ENTITY import.label "Importă filtre">
-<!ENTITY import.accesskey "m">
-<!ENTITY export.label "Exportă filtre">
-<!ENTITY export.accesskey "x">
-<!ENTITY clearall.label "Şterge toate filtrele">
-<!ENTITY clearall.accesskey "t">
-<!ENTITY resethitcounts.label "Reiniţializează contor">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Editare">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Taie">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "Copiază">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Lipeşte">
-<!ENTITY paste.accesskey "L">
-<!ENTITY remove.label "Şterge">
-<!ENTITY remove.accesskey "g">
-<!ENTITY menu.find.label "Caută">
-<!ENTITY menu.find.accesskey "u">
-<!ENTITY menu.findagain.label "Caută următorul">
-<!ENTITY menu.findagain.accesskey "m">
-<!ENTITY view.label "Vizualizare">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Ordonare">
-<!ENTITY sort.accesskey "O">
-<!ENTITY sort.none.label "Neordonat">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "Crescător (A>Z)">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Descrescător (Z>A)">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Opţiuni">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Activează Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Arată în bara de unelte">
-<!ENTITY showintoolbar.accesskey "u">
-<!ENTITY showinstatusbar.label "Arată în bara de stare">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Arată panouri lângă Flash şi Java">
-<!ENTITY objecttabs.accesskey "p">
-<!ENTITY collapse.label "Ascunde elementele blocate">
-<!ENTITY collapse.accesskey "c">
-<!ENTITY sync.label "Sincronizează setările Adblock Plus">
-<!ENTITY sync.accesskey "n">
-<!ENTITY help.label "Ajutor">
-<!ENTITY help.accesskey "A">
-<!ENTITY gettingStarted.label "Ghidul începătorului">
-<!ENTITY gettingStarted.accesskey "G">
-<!ENTITY faq.label "Întrebări frecvente (FAQ)">
-<!ENTITY faq.accesskey "Q">
-<!ENTITY filterdoc.label "Sfaturi scriere filtre Adblock Plus">
-<!ENTITY filterdoc.accesskey "f">
-<!ENTITY about.label "Despre Adblock Plus">
-<!ENTITY about.accesskey "D">
-<!ENTITY description "Adăugaţi adresele pe care doriţi să le blocaţi; puteţi alege din lista derulantă. Pentru a crea filtre generice, folosiţi caracterul * ca joker. Utilizatorii avansaţi pot folosi expresii, ca de exemplu /banner\d+\.gif$/.">
-<!ENTITY filter.column "Regulă de filtrare">
-<!ENTITY filter.accesskey "R">
-<!ENTITY slow.column "Filtre lente">
-<!ENTITY slow.accesskey "l">
-<!ENTITY enabled.column "Stare">
-<!ENTITY enabled.accesskey "S">
-<!ENTITY hitcount.column "Contor">
-<!ENTITY hitcount.accesskey "C">
-<!ENTITY lasthit.column "Ultima aplicare">
-<!ENTITY lasthit.accesskey "U">
-<!ENTITY context.edit.label "Modifică filtrul">
-<!ENTITY context.resethitcount.label "Reiniţializează contorul filtrului">
-<!ENTITY context.synchsubscription.label "Actualizează abonament">
-<!ENTITY context.editsubscription.label "Modifică abonament">
-<!ENTITY context.moveup.label "Mută în sus">
-<!ENTITY context.movedown.label "Mută în jos">
-<!ENTITY context.movegroupup.label "Mută grupul în sus">
-<!ENTITY context.movegroupdown.label "Mută grupul în jos">
-<!ENTITY context.enable.label "Activează">
-<!ENTITY context.disable.label "Dezactivează">
-<!ENTITY apply.label "Aplică">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "Abonament filtre">
diff --git a/chrome/adblockplus.jar!/locale/ro/sidebar.dtd b/chrome/adblockplus.jar!/locale/ro/sidebar.dtd
index ec4764e..e486635 100644
--- a/chrome/adblockplus.jar!/locale/ro/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/ro/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Copiază adresa elementului">
 <!ENTITY context.copyFilter.label "Copiază filtru">
 <!ENTITY context.selectAll.label "Selectează tot">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/ro/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ro/subscriptionSelection.dtd
index b2d231b..32b6930 100644
--- a/chrome/adblockplus.jar!/locale/ro/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/ro/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Adăugare abonamente pentru filtre Adblock Plus">
-<!ENTITY dialog.title.edit "Editare abonament filtre">
-<!ENTITY description.newInstall "Adblock Plus este foarte efectiv atunci când folosiţi abonamente filtre. Aceste abonamente sunt oferite gratuit de către alţi utilizatori Adblock Plus. Programul a selectat automat cel mai potrivit abonament pentru limba dvs.">
 <!ENTITY subscriptionSelector.label "Alegeţi un abonamente filtre din listă:">
 <!ENTITY viewList.label "Vizualizare filtre">
 <!ENTITY visitHomepage.label "Vizualizare pagina de start">
 <!ENTITY addSubscription.label "Adaugă abonament">
-<!ENTITY saveSubscription.label "Salvează abonament">
-<!ENTITY other.label "Adaugă alt abonament">
-<!ENTITY other.accesskey "g">
 <!ENTITY list.download.failed "Eroare la descărcarea listei de abonamente.">
 <!ENTITY list.download.retry "Încearcă din nou">
 <!ENTITY list.download.website "Arată pagina web">
 <!ENTITY fromWeb.description "Confirmaţi adăugarea acestui abonament filtre. Puteţi schimba titlul sau localizarea înainte de a-l adăuga.">
-<!ENTITY edit.description "Puteţi schimba titlul sau localizarea dacă este necesar.">
-<!ENTITY external.description "Acest abonament este extern; el va fi actualizat de către suplimentul care l-a creat.">
 <!ENTITY title.label "Titlul abonamentului:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Locaţia listei de filtre:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Actualizare automată">
-<!ENTITY autodownload.accesskey "c">
 <!ENTITY supplementMessage "Acest abonament trebuie folosit împreună cu abonamentul ?1?,pe care nu îl folosiţi încă.">
 <!ENTITY addMain.label "Adaugă şi abonamentul ?1?">
 <!ENTITY addMain.accesskey "d">
diff --git a/chrome/adblockplus.jar!/locale/ru/filters.dtd b/chrome/adblockplus.jar!/locale/ru/filters.dtd
new file mode 100644
index 0000000..7373e96
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ru/filters.dtd
@@ -0,0 +1,112 @@
+<!ENTITY dialog.title                         "Настройки фильтров Adblock Plus">
+
+<!ENTITY subscriptions.tab.label              "Подписки">
+<!ENTITY filters.tab.label                    "Собственные фильтры">
+
+<!ENTITY addSubscription.label                "Добавить подписку">
+<!ENTITY addSubscription.accesskey            "б">
+
+<!ENTITY addSubscriptionAdd.label             "Добавить">
+<!ENTITY addSubscriptionCancel.label          "Отмена">
+<!ENTITY addSubscriptionOther.label           "Добавить другую подписку">
+
+<!ENTITY noSubscriptions.text                 "
+	У вас пока нет подписок на фильтры. Без фильтров Adblock Plus ничего не будет
+	блокировать, пожалуйста воспользуйтесь кнопкой "Добавить подписку".
+">
+<!ENTITY subscription.homepage.label          "Домашняя страница">
+<!ENTITY subscription.external.label          "Обновляется другим расширением">
+<!ENTITY subscription.source.label            "Список фильтров">
+<!ENTITY subscription.enabled.label           "Включена">
+<!ENTITY subscription.lastDownload.label      "Последнее обновление:">
+<!ENTITY subscription.lastDownload.inProgress "сейчас...">
+<!ENTITY subscription.lastDownload.unknown    "никогда">
+<!ENTITY subscription.lastDownload.invalidURL "Ошибка: неверный адрес">
+<!ENTITY subscription.lastDownload.connectionError "Ошибка: невозможно загрузить">
+<!ENTITY subscription.lastDownload.invalidData "Ошибка: неверный формат списка фильтров">
+<!ENTITY subscription.lastDownload.checksumMismatch "Ошибка: проверочная сумма не совпадает, возможно произошла ошибка загрузки">
+<!ENTITY subscription.lastDownload.success    "OK">
+<!ENTITY subscription.minVersion.warning      "Этот список фильтров требует более новой версии Adblock Plus, желательно обновить Adblock Plus до последней версии.">
+<!ENTITY subscription.disabledFilters.warning "Некоторые фильтры в этой подписке отключены.">
+<!ENTITY subscription.disabledFilters.enable  "Включить отключенные фильтры">
+
+<!ENTITY subscription.actions.label           "Действия">
+<!ENTITY subscription.update.label            "Обновить фильтры">
+<!ENTITY subscription.editTitle.label         "Переименовать">
+<!ENTITY subscription.delete.label            "Удалить">
+<!ENTITY subscription.showHideFilters.label   "Спрятать/показать фильтры">
+<!ENTITY subscription.moveUp.label            "Поместить выше">
+<!ENTITY subscription.moveDown.label          "Поместить ниже">
+
+<!ENTITY acceptableAds.label                  "Разрешить ненавязчивую рекламу">
+<!ENTITY acceptableAds.accesskey              "ш">
+<!ENTITY readMore.label                       "Дополнительная информация">
+
+<!ENTITY addGroup.label                       "Добавить группу фильтров">
+<!ENTITY addGroup.accesskey                   "г">
+
+<!ENTITY noFilters.text                       "
+	У вас пока что нет собственных фильтров.
+">
+
+<!ENTITY addFilter.label                      "Добавить фильтр">
+<!ENTITY addFilter.accesskey                  "ф">
+
+<!ENTITY filter.actions.label                 "Действия с фильтрами">
+<!ENTITY filter.edit.label                    "Редактировать">
+<!ENTITY filter.cut.label                     "Вырезать">
+<!ENTITY filter.copy.label                    "Копировать">
+<!ENTITY filter.paste.label                   "Вставить">
+<!ENTITY filter.delete.label                  "Удалить">
+<!ENTITY filter.selectAll.label               "Выбрать все">
+<!ENTITY filter.resetHitCounts.label          "Обнулить статистику попаданий">
+<!ENTITY filter.moveUp.label                  "Поместить выше">
+<!ENTITY filter.moveDown.label                "Поместить ниже">
+<!ENTITY viewMenu.label                       "Вид">
+
+<!ENTITY filter.column                        "Правило">
+<!ENTITY filter.accesskey                     "П">
+<!ENTITY slow.column                          "Медленное">
+<!ENTITY slow.accesskey                       "М">
+<!ENTITY enabled.column                       "Включено">
+<!ENTITY enabled.accesskey                    "к">
+<!ENTITY hitcount.column                      "Срабатывания">
+<!ENTITY hitcount.accesskey                   "б">
+<!ENTITY lasthit.column                       "Последнее срабатывание">
+<!ENTITY lasthit.accesskey                    "л">
+
+<!ENTITY sort.label                           "Сортировка">
+<!ENTITY sort.accesskey                       "р">
+<!ENTITY sort.none.label                      "Без сортировки">
+<!ENTITY sort.none.accesskey                  "з">
+<!ENTITY sort.ascending.label                 "Сортировка по алфавиту">
+<!ENTITY sort.ascending.accesskey             "ф">
+<!ENTITY sort.descending.label                "В обратном порядке">
+<!ENTITY sort.descending.accesskey            "р">
+
+<!ENTITY noGroupSelected.text                 "Нужно выбрать группу, чтобы показать ее фильтры.">
+<!ENTITY noFiltersInGroup.text                "Выбранная группа фильтров пуста.">
+
+<!ENTITY filters.remove.warning               "Вы действительно хотите удалить все отмеченные фильтры?">
+
+<!ENTITY backupButton.label                   "Резервные копии и восстановление">
+<!ENTITY backupButton.accesskey               "к">
+
+<!ENTITY backup.label                         "Создать новую резервную копию">
+<!-- Note: the placeholder ?1? will be replaced by date/time of the automatic backup -->
+<!ENTITY restore.default.label                "Восстановить копию от ?1?">
+<!ENTITY restore.own.label                    "Восстановить собственную копию">
+
+<!ENTITY backup.complete.title                "Все фильтры и подписки">
+<!ENTITY backup.custom.title                  "Только собственные фильтры">
+
+<!ENTITY backup.error                         "При записи фильтров в файл произошла ошибка. Проверьте, может этот файл защищен от записи или используется другой программой.">
+<!ENTITY restore.error                        "Ошибка при обработке данных файла, может это не резервная копия, созданная Adblock Plus?">
+<!ENTITY restore.complete.warning             "Все ваши фильтры и подписки будут заменены данными этого файла. Продолжать?">
+<!ENTITY restore.custom.warning               "Все собственные фильтры будут заменены данными этого файла. Продолжать?">
+<!ENTITY restore.minVersion.warning           "Предупреждение: этот файл был записан более новой версией Adblock Plus. Рекомендуется обновить Adblock Plus до последней версии, прежде чем восстанавливать данные из этого файла.">
+
+<!ENTITY find.label                           "Найти фильтр">
+<!ENTITY find.accesskey                       "Н">
+
+<!ENTITY close.label                          "Закрыть">
diff --git a/chrome/adblockplus.jar!/locale/ru/firstRun.dtd b/chrome/adblockplus.jar!/locale/ru/firstRun.dtd
new file mode 100644
index 0000000..323f7e8
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/ru/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Установка Adblock Plus завершена">
+
+<!ENTITY confirmation               "
+	Спасибо, что установили Adblock Plus. Реклама теперь будет блокироваться.
+	Успехов!">
+
+<!ENTITY advancedSection            "Расширенные настройки">
+
+<!ENTITY listSelection1             "
+	Подписка на следующий список фильтров была настроена, чтобы блокировать рекламу:
+">
+
+<!ENTITY noList                     "Нет списка фильтров">
+<!ENTITY visitHomepage.label        "Посетить домашнюю страницу">
+
+<!ENTITY acceptableAds              "
+	Adblock Plus также был настроен, чтобы разрешать ненавязчивую рекламу.
+">
+
+<!ENTITY readMore.label             "Дополнительная информация об этом">
+
+<!ENTITY listSelection2             "
+	Вы можете изменить этот выбор в любой момент в [link]настройках фильтров[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/ru/global.properties b/chrome/adblockplus.jar!/locale/ru/global.properties
index 0fffd55..6dc8273 100644
--- a/chrome/adblockplus.jar!/locale/ru/global.properties
+++ b/chrome/adblockplus.jar!/locale/ru/global.properties
@@ -15,48 +15,19 @@ blocked_count_addendum=(также исключений: ?1?, спрятано:
 no_blocking_suggestions=На открытой странице нет элементов, которые можно было бы заблокировать
 whitelisted_page=Adblock Plus отключен на этой странице
 
-whitelist_description=Мои исключения
-filterlist_description=Мои правила блокирования
-invalid_description=Мои ошибочные правила
-elemhide_description=Мои правила скрытия элементов
-subscription_description=Подписка:
-subscription_wrong_version=Некоторые фильтры в этой подписке требуют как минимум Adblock Plus ?1? для корректной работы!
-subscription_source=Источник:
-subscription_status=Состояние:
-subscription_status_autodownload=Обновляется автоматически
-subscription_status_manualdownload=Обновляется вручную
-subscription_status_externaldownload=Обновляется другим расширением
-subscription_status_lastdownload=Последнее обновление:
-subscription_status_lastdownload_inprogress=сейчас...
-subscription_status_lastdownload_unknown=никогда
+newGroup_title=Новая группа фильтров
+whitelistGroup_title=Исключения
+blockingGroup_title=Правила блокирования
+elemhideGroup_title=Правила скрытия
+
 remove_subscription_warning=Вы уверены, что хотите удалить эту подписку?
-import_filters_wrong_version=Предупреждение: Некоторые фильтры в этом списке требуют как минимум Adblock Plus ?1? для корректной работы. Возможно, вам лучше обновить вашу версию Adblock Plus, прежде чем импортировать этот список.
-import_filters_warning=Вы хотите заменить существующие фильтры или добавить импортируемые фильтры в конец?
-import_filters_title=Импорт фильтров
-export_filters_title=Экспорт фильтров
-invalid_filters_file=Файл не содержит список фильтров для Adblock Plus.
-filters_write_error=При записи фильтров в файл возникла ошибка. Возможно на файле стоит защита от записи или он используется другим приложением.
-clearall_warning=Вы уверены, что хотите удалить все фильтры?
-resethitcounts_warning=Вы уверены, что хотите обнулить статистику для всех фильтров? Учтите, что это изменение необратимо!
-resethitcounts_selected_warning=Вы уверены, что хотите обнулить статистику для отмеченных фильтров? Учтите, что это изменение необратимо!
+clearStats_warning=Статистика попаданий будет обнулена для всех фильтров и в дальнейшем больше не будет записываться. Продолжать?
 
-filter_regexp_tooltip=Этот фильтр либо регулярное выражение, либо слишком короткий для оптимизации. Большое количество таких фильтров может отрицательно сказаться на быстродействии вашего браузера.
+filter_regexp_tooltip=Этот фильтр либо является регулярным выражением, либо слишком короткий для оптимизации. Большое количество таких фильтров может отрицательно сказаться на быстродействии вашего браузера.
 filter_elemhide_duplicate_id=У элемента, который нужно скрыть, может быть только один идентификатор
 filter_elemhide_nocriteria=Не указано никаких признаков, чтобы опознать элемент, который нужно скрыть
 
-subscription_notAdded_warning=Вы не добавили подписку на список фильтров. Без подписки вам придется добавлять фильтры для Adblock Plus вручную.
-subscription_notAdded_warning_addendum=Продолжить, не добавляя подписку?
 subscription_invalid_location=Не удалось распознать введенный адрес ни как адрес в интернете, ни как путь файлу.
-synchronize_invalid_url=Ошибка: неверный адрес
-synchronize_connection_error=Ошибка: невозможно скачать
-synchronize_invalid_data=Ошибка: не список фильтров
-synchronize_checksum_mismatch=Ошибка: проверочная сумма не совпадает, возможно ошибка скачивания
-synchronize_ok=OK
-
-overwrite=Заменить
-append=Добавить
-
-new_filter_group_title=Новый фильтр
 
 type_label_other=Неизвестен
 type_label_script=Скрипт
@@ -66,11 +37,9 @@ type_label_object=Объект
 type_label_subdocument=Фрейм
 type_label_document=Документ
 type_label_elemhide=Скрыто
-type_label_xbl=XBL
-type_label_ping=Щелчок на ссылке
+type_label_popup=Всплывающее окно
 type_label_xmlhttprequest=XML-запрос
 type_label_object_subrequest=Запрос объекта
-type_label_dtd=DTD
 type_label_media=Аудио/видео
 type_label_font=Шрифт
 
@@ -79,4 +48,3 @@ fennec_status_disabled=Adblock Plus отключен.
 fennec_status_enabled_site=Adblock Plus включен на ?1?.
 fennec_status_disabled_site=Adblock Plus отключен на ?1?.
 
-sync_engine_title=Данные Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/ru/overlay.dtd b/chrome/adblockplus.jar!/locale/ru/overlay.dtd
index b0e913d..7dfd25c 100644
--- a/chrome/adblockplus.jar!/locale/ru/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/ru/overlay.dtd
@@ -6,8 +6,6 @@
 <!ENTITY menuitem.accesskey     "A">
 <!ENTITY toolbarbutton.label    "Adblock Plus">
 
-<!ENTITY view.blockableItems.label  "Adblock Plus: элементы открытой страницы">
-
 <!ENTITY context.image.label    "Adblock Plus: заблокировать изображение">
 <!ENTITY context.object.label   "Adblock Plus: заблокировать объект">
 <!ENTITY context.frame.label    "Adblock Plus: заблокировать фрейм">
@@ -18,8 +16,8 @@
 
 <!ENTITY sendReport.label       "Сообщить о проблеме на этой странице">
 <!ENTITY sendReport.accesskey   "С">
-<!ENTITY settings.label         "Установки">
-<!ENTITY settings.accesskey     "т">
+<!ENTITY filters.label          "Настройки фильтров">
+<!ENTITY filters.accesskey      "ф">
 <!ENTITY opensidebar.label      "Открыть список элементов">
 <!ENTITY opensidebar.accesskey  "п">
 <!ENTITY closesidebar.label     "Закрыть список элементов">
@@ -27,7 +25,24 @@
 <!ENTITY whitelist.site.label   "Отключить на ?1?">
 <!ENTITY whitelist.page.label   "Отключить только на этой странице">
 <!ENTITY disable.label          "Отключить везде">
-<!ENTITY recommend.label        "Порекомендуйте нас на Facebook">
+<!ENTITY options.label          "Настройки">
+<!ENTITY options.accesskey      "Н">
+<!ENTITY contribute.label       "Помочь проекту Adblock Plus">
+
+<!ENTITY showintoolbar.label        "Показывать в панели инструментов">
+<!ENTITY showintoolbar.accesskey    "п">
+<!ENTITY showinstatusbar.label      "Показывать в строке состояния">
+<!ENTITY showinstatusbar.accesskey  "с">
+<!ENTITY showinaddonbar.label       "Показывать в панели дополнений">
+<!ENTITY showinaddonbar.accesskey   "п">
+<!ENTITY objecttabs.label           "Показывать ярлык на Flash и Java">
+<!ENTITY objecttabs.accesskey       "я">
+<!ENTITY hideplaceholders.label     "Прятать метки на месте заблокированных элементов">
+<!ENTITY hideplaceholders.accesskey "м">
+<!ENTITY counthits.label            "Считать срабатывания фильтров">
+<!ENTITY counthits.accesskey        "ч">
+<!ENTITY sync.label                 "Синхронизировать настройки Adblock Plus">
+<!ENTITY sync.accesskey             "х">
 
 <!ENTITY objecttab.title        "Блокировать">
 <!ENTITY objecttab.tooltip      "Нажмите здесь, чтобы Adblock Plus заблокировал этот объект">
diff --git a/chrome/adblockplus.jar!/locale/ru/settings.dtd b/chrome/adblockplus.jar!/locale/ru/settings.dtd
deleted file mode 100644
index b9708bf..0000000
--- a/chrome/adblockplus.jar!/locale/ru/settings.dtd
+++ /dev/null
@@ -1,104 +0,0 @@
-<!ENTITY dialog.title               "Установки Adblock Plus">
-
-<!ENTITY filters.label              "Фильтры">
-<!ENTITY filters.accesskey          "Ф">
-
-<!ENTITY add.label                  "Добавить фильтр">
-<!ENTITY add.accesskey              "б">
-<!ENTITY addsubscription.label      "Добавить подписку">
-<!ENTITY addsubscription.accesskey  "п">
-<!ENTITY synchsubscriptions.label      "Обновить все подписки">
-<!ENTITY synchsubscriptions.accesskey  "в">
-<!ENTITY import.label               "Импорт фильтров">
-<!ENTITY import.accesskey           "м">
-<!ENTITY export.label               "Экспорт пользовательских фильтров">
-<!ENTITY export.accesskey           "к">
-<!ENTITY clearall.label             "Удалить все пользовательские фильтры">
-<!ENTITY clearall.accesskey         "д">
-<!ENTITY resethitcounts.label       "Обнулить статистику попаданий">
-<!ENTITY resethitcounts.accesskey   "н">
-
-<!ENTITY edit.label                 "Правка">
-<!ENTITY edit.accesskey             "П">
-
-<!ENTITY cut.label                  "Вырезать">
-<!ENTITY cut.accesskey              "В">
-<!ENTITY copy.label                 "Копировать">
-<!ENTITY copy.accesskey             "К">
-<!ENTITY paste.label                "Вставить">
-<!ENTITY paste.accesskey            "с">
-<!ENTITY remove.label               "Удалить">
-<!ENTITY remove.accesskey           "У">
-<!ENTITY menu.find.label            "Найти фильтр">
-<!ENTITY menu.find.accesskey        "Н">
-<!ENTITY menu.findagain.label       "Найти следующий">
-<!ENTITY menu.findagain.accesskey   "й">
-
-<!ENTITY view.label                 "Вид">
-<!ENTITY view.accesskey             "и">
-
-<!ENTITY sort.label                 "Сортировка">
-<!ENTITY sort.accesskey             "р">
-<!ENTITY sort.none.label            "Без сортировки">
-<!ENTITY sort.none.accesskey        "з">
-<!ENTITY sort.ascending.label       "Сортировка по алфавиту">
-<!ENTITY sort.ascending.accesskey   "ф">
-<!ENTITY sort.descending.label      "В обратном порядке">
-<!ENTITY sort.descending.accesskey  "р">
-
-<!ENTITY options.label              "Настройки">
-<!ENTITY options.accesskey          "Н">
-
-<!ENTITY enable.label               "Включить Adblock Plus">
-<!ENTITY enable.accesskey           "к">
-<!ENTITY showintoolbar.label        "Показывать в панели инструментов">
-<!ENTITY showintoolbar.accesskey    "п">
-<!ENTITY showinstatusbar.label      "Показывать в строке состояния">
-<!ENTITY showinstatusbar.accesskey  "с">
-<!ENTITY objecttabs.label           "Показывать ярлык на Flash и Java">
-<!ENTITY objecttabs.accesskey       "я">
-<!ENTITY collapse.label             "Сворачивать заблокированные элементы">
-<!ENTITY collapse.accesskey         "в">
-<!ENTITY sync.label                 "Синхронизировать настройки Adblock Plus">
-<!ENTITY sync.accesskey             "х">
-
-<!ENTITY help.label                 "Справка">
-<!ENTITY help.accesskey             "С">
-
-<!ENTITY gettingStarted.label       "Первые шаги">
-<!ENTITY gettingStarted.accesskey   "ш">
-<!ENTITY faq.label                  "Часто задаваемые вопросы">
-<!ENTITY faq.accesskey              "Ч">
-<!ENTITY filterdoc.label            "Составление фильтров для Adblock Plus">
-<!ENTITY filterdoc.accesskey        "т">
-<!ENTITY about.label                "О Adblock Plus">
-<!ENTITY about.accesskey            "О">
-
-<!ENTITY description                "Следующие фильтры определяют, к каким адресам запросы нужно блокировать, а к каким разрешать:">
-
-<!ENTITY filter.column              "Правило">
-<!ENTITY filter.accesskey           "П">
-<!ENTITY slow.column                "Медленное">
-<!ENTITY slow.accesskey             "М">
-<!ENTITY enabled.column             "Включено">
-<!ENTITY enabled.accesskey          "к">
-<!ENTITY hitcount.column            "Попаданий">
-<!ENTITY hitcount.accesskey         "д">
-<!ENTITY lasthit.column             "Последнее попадание">
-<!ENTITY lasthit.accesskey          "л">
-
-<!ENTITY context.edit.label         "Редактировать фильтр">
-<!ENTITY context.resethitcount.label      "Обнулить статистику попаданий для фильтра">
-<!ENTITY context.synchsubscription.label  "Обновить фильтры подписки">
-<!ENTITY context.editsubscription.label   "Редактировать подписку">
-<!ENTITY context.moveup.label       "Сдвинуть фильтр вверх">
-<!ENTITY context.movedown.label     "Сдвинуть фильтр вниз">
-<!ENTITY context.movegroupup.label        "Сдвинуть группу вверх">
-<!ENTITY context.movegroupdown.label      "Сдвинуть группу вниз">
-<!ENTITY context.enable.label       "Включить">
-<!ENTITY context.disable.label      "Отключить">
-
-<!ENTITY apply.label                "Применить">
-<!ENTITY apply.accesskey            "р">
-
-<!ENTITY fennec.subscription.label  "Подписка на список фильтров">
diff --git a/chrome/adblockplus.jar!/locale/ru/sidebar.dtd b/chrome/adblockplus.jar!/locale/ru/sidebar.dtd
index 1ab33bd..6f9208b 100644
--- a/chrome/adblockplus.jar!/locale/ru/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/ru/sidebar.dtd
@@ -11,6 +11,7 @@
 <!ENTITY filter.label             "Фильтр">
 <!ENTITY state.label              "Статус">
 <!ENTITY size.label               "Размер">
+<!ENTITY filterSource.label       "Список фильтров">
 <!ENTITY docDomain.label          "Домен страницы">
 <!ENTITY docDomain.thirdParty     "(запрос с другого сайта)">
 <!ENTITY docDomain.firstParty     "(запрос с того же сайта)">
diff --git a/chrome/adblockplus.jar!/locale/ru/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/ru/subscriptionSelection.dtd
index 990bf60..d1de491 100644
--- a/chrome/adblockplus.jar!/locale/ru/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/ru/subscriptionSelection.dtd
@@ -1,38 +1,18 @@
 <!ENTITY dialog.title               "Добавить подписку для Adblock Plus">
-<!ENTITY dialog.title.edit          "Редактировать подписку">
-
-<!ENTITY description.newInstall     "
-	Adblock Plus будет работать наиболее эффективно, если вы добавите подписку на
-	список фильтров. Эти списки фильтров предоставляются бесплатно другими
-	пользователями Adblock Plus. Самая подходящая подписка для вашего языка уже
-	выбрана.
-">
-
 <!ENTITY subscriptionSelector.label "Пожалуйста, выберите подписку из списка:">
 
 <!ENTITY viewList.label             "Просмотреть фильтры">
 <!ENTITY visitHomepage.label        "Посетить домашнюю страницу списка">
 
 <!ENTITY addSubscription.label      "Добавить подписку">
-<!ENTITY saveSubscription.label     "Сохранить изменения">
-
 <!ENTITY list.download.failed       "При скачивании списка подписок произошла ошибка.">
 <!ENTITY list.download.retry        "Попробовать еще раз">
 <!ENTITY list.download.website      "Открыть страницу с подписками">
-<!ENTITY other.label                "Добавить другую подписку">
-<!ENTITY other.accesskey            "б">
-
 <!ENTITY fromWeb.description        "Пожалуйста, подтвердите, что вы действительно хотите добавить подписку на этот список фильтров. Вы можете изменить название и адрес подписки перед добавлением.">
-<!ENTITY edit.description           "Вы можете изменить название и адрес подписки по надобности.">
-<!ENTITY external.description       "Это внешняя подписка, эти фильтры обновляются расширением, которое добавило эту подписку.">
-
 <!ENTITY location.label             "Адрес списка фильтров:">
 <!ENTITY location.accesskey         "д">
 <!ENTITY title.label                "Название подписки:">
 <!ENTITY title.accesskey            "з">
-<!ENTITY autodownload.label         "Обновлять автоматически">
-<!ENTITY autodownload.accesskey     "т">
-
 <!ENTITY supplementMessage          "Этот список фильтров должен использоваться в комбинации со списком фильтров «?1?», который вы не используете.">
 <!ENTITY addMain.label              "Добавить подписку на список фильтров «?1?»">
 <!ENTITY addMain.accesskey          "в">
diff --git a/chrome/adblockplus.jar!/locale/sk/about.dtd b/chrome/adblockplus.jar!/locale/sk/about.dtd
index 0d9f624..4761463 100644
--- a/chrome/adblockplus.jar!/locale/sk/about.dtd
+++ b/chrome/adblockplus.jar!/locale/sk/about.dtd
@@ -1,7 +1,6 @@
 <!ENTITY dialog.title "O rozšírení Adblock Plus">
 <!ENTITY version.title "Verzia">
-<!ENTITY description "Adblock Plus vám umožní rozhodnúť sa, čo si neprajete zobrazovať na stránkach.
-	Nepotrebujete preberať všetky reklamy a titulky, ak ich nechcete - povedzte to Adblock Plus!">
+<!ENTITY description "Adblock Plus vám umožní rozhodnúť sa, čo si neprajete zobrazovať na stránkach.nnn	Nepotrebujete preberať všetky reklamy a titulky, ak ich nechcete - povedzte to Adblock Plus!">
 <!ENTITY homepage.label "Domovská stránka Adblock Plus:">
 <!ENTITY author.label "Autor:">
 <!ENTITY contributors.label "Prispievatelia:">
diff --git a/chrome/adblockplus.jar!/locale/sk/filters.dtd b/chrome/adblockplus.jar!/locale/sk/filters.dtd
new file mode 100644
index 0000000..e22fcea
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sk/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Nastavenia filtra">
+<!ENTITY subscriptions.tab.label "Odbery filtrov">
+<!ENTITY filters.tab.label "Vlastné filtre">
+<!ENTITY addSubscription.label "Pridať povolenie filtra">
+<!ENTITY addSubscription.accesskey "r">
+<!ENTITY addSubscriptionAdd.label "Pridať">
+<!ENTITY addSubscriptionCancel.label "Zrušiť">
+<!ENTITY addSubscriptionOther.label "Pridať iné odoberania">
+<!ENTITY noSubscriptions.text "
+ Ziataľ nie sú pridané žiadne odbery filtrov. Adblock Plus nebude blokovať
+ nič bez filtrov, použite, prosím "Pridať odber filtra" pre
+ pridanie.
+">
+<!ENTITY subscription.homepage.label "Domovská stránka">
+<!ENTITY subscription.external.label "Aktualizované iným rozšírením">
+<!ENTITY subscription.source.label "Zoznam filtrov">
+<!ENTITY subscription.enabled.label "Zapnuté">
+<!ENTITY subscription.lastDownload.label "Posledné prevzatie:">
+<!ENTITY subscription.lastDownload.inProgress "Preberanie...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Zlyhanie, neplatná adresa">
+<!ENTITY subscription.lastDownload.connectionError "Zlyhanie, sťahovanie neúspešné">
+<!ENTITY subscription.lastDownload.invalidData "Zlyhanie, neplatný zoznam filtrov">
+<!ENTITY subscription.lastDownload.checksumMismatch "Zlyhalo, chybné prispôsobenie kontrolného súčtu">
+<!ENTITY subscription.lastDownload.success "Úspešné">
+<!ENTITY subscription.minVersion.warning "Odoberanie tohto filtra vyžaduje novšiu verziu Adblock Olus, môžete aktualizovať na ostatnú verziu Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Niektoré filtre tohto odberu sú vypnuté.">
+<!ENTITY subscription.disabledFilters.enable "Zapnúť vypnuté filtre">
+<!ENTITY subscription.actions.label "Úlohy">
+<!ENTITY subscription.update.label "Aktualizovať filtre">
+<!ENTITY subscription.editTitle.label "Upraviť názov">
+<!ENTITY subscription.delete.label "Zmazať">
+<!ENTITY subscription.showHideFilters.label "Zobraziť/skryť filter">
+<!ENTITY subscription.moveUp.label "Posunúť hore">
+<!ENTITY subscription.moveDown.label "Posunúť dole">
+<!ENTITY acceptableAds.label "Povoliť neobťažujúce reklamy">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Zobraziť viac">
+<!ENTITY addGroup.label "Pridať skupinu filtrov">
+<!ENTITY addGroup.accesskey "f">
+<!ENTITY noFilters.text "
+ Zatiaľ nemáte žiadne vlastné filtre.
+">
+<!ENTITY addFilter.label "Pridať filter">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "Úlohy filtrov">
+<!ENTITY filter.edit.label "Upraviť">
+<!ENTITY filter.cut.label "Vystrihnúť">
+<!ENTITY filter.copy.label "Kopírovať">
+<!ENTITY filter.paste.label "Prilepiť">
+<!ENTITY filter.delete.label "Odstrániť">
+<!ENTITY filter.selectAll.label "Vybrať všetko">
+<!ENTITY filter.resetHitCounts.label "Resetovať štatistiku počítadla">
+<!ENTITY filter.moveUp.label "Posunúť hore">
+<!ENTITY filter.moveDown.label "Posunúť dole">
+<!ENTITY viewMenu.label "Zobraziť">
+<!ENTITY filter.column "Pravidlo filtra">
+<!ENTITY filter.accesskey "f">
+<!ENTITY slow.column "Voľné filtre">
+<!ENTITY slow.accesskey "V">
+<!ENTITY enabled.column "Zapnuté">
+<!ENTITY enabled.accesskey "Z">
+<!ENTITY hitcount.column "Počítadlá">
+<!ENTITY hitcount.accesskey "P">
+<!ENTITY lasthit.column "Posledný zápis">
+<!ENTITY lasthit.accesskey "s">
+<!ENTITY sort.label "Triediť podľa">
+<!ENTITY sort.accesskey "T">
+<!ENTITY sort.none.label "Netriedené">
+<!ENTITY sort.none.accesskey "N">
+<!ENTITY sort.ascending.label "Triediť od A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Triediť od Z > A">
+<!ENTITY sort.descending.accesskey "d">
+<!ENTITY noGroupSelected.text "Musíte vybrať skupinu filtrov predtým, než sa tieto filtre zobrazia.">
+<!ENTITY noFiltersInGroup.text "Zvolená skupiny je prázdna">
+<!ENTITY filters.remove.warning "Naozaj chcete odstrániť všetky vybraté filtre?">
+<!ENTITY backupButton.label "Záloha a Obnova">
+<!ENTITY backupButton.accesskey "Z">
+<!ENTITY backup.label "Vytvoriť novú zálohu">
+<!ENTITY restore.default.label "Obnoviť zálohu z ?1?">
+<!ENTITY restore.own.label "Obnoviť vlastnú zálohu">
+<!ENTITY backup.complete.title "Všetky filtre a odbery">
+<!ENTITY backup.custom.title "Len vlastné filtre">
+<!ENTITY backup.error "Pri zápise filtra do súboru sa vyskytla chyba. Uistite sa, že súbor nie je chránený proti zapisovaniu alebo nie je používaný inou aplikáciou.">
+<!ENTITY restore.error "Údaje súborov nemôžu byť spacované, možno to nie zálohovací súbor Adblock Plus?">
+<!ENTITY restore.complete.warning "Všetky nastavenia filtrov budú nahradené obsahom zo zvoleného súboru. Prajete si pokračovať?">
+<!ENTITY restore.custom.warning "Všetky vaše vlastné filtre budú nahradené obsahom zo zvoleného súboru. Prajete si pokračovať?">
+<!ENTITY restore.minVersion.warning "Upozornenie: súbor bol vytvorený novšou verziuo Adblock Plus. Mali by ste aktualizovať na novšiu verziu predtým, než obnovíte z tohto súboru.">
+<!ENTITY find.label "Nájsť">
+<!ENTITY find.accesskey "s">
+<!ENTITY close.label "Zatvoriť">
diff --git a/chrome/adblockplus.jar!/locale/sk/firstRun.dtd b/chrome/adblockplus.jar!/locale/sk/firstRun.dtd
new file mode 100644
index 0000000..8daa641
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sk/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Inštalácia Adblock Plus kompletná">
+<!ENTITY confirmation "
+ Ďakujeme za nainštalovanie Adblock Plus. Reklamy teraz budú blokované.
+ Príjemnú zábavu!">
+<!ENTITY advancedSection "Pokročilé možnosti">
+<!ENTITY listSelection1 "
+ Nasledujúci zoznam filtrov bol upravený pre blokovanie raklám:
+">
+<!ENTITY noList "Žiadny zoznam filtrov">
+<!ENTITY visitHomepage.label "Navštíviť domovskú stránku zoznamu">
+<!ENTITY acceptableAds "
+ Adblock Plus bol tiež nakonfigurovaný na povolenie nedotieravých reklám.
+">
+<!ENTITY readMore.label "Zistiť viac">
+<!ENTITY listSelection2 "
+ Môžete zmeniť tento výber kedykoľvek v [link]Nastavenia filtrov[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/sk/global.properties b/chrome/adblockplus.jar!/locale/sk/global.properties
index f69eca0..57e643e 100644
--- a/chrome/adblockplus.jar!/locale/sk/global.properties
+++ b/chrome/adblockplus.jar!/locale/sk/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? mimo ?2?
 blocked_count_addendum=(tiež biely zoznam: ?1?, skrytý: ?2?)
 no_blocking_suggestions=Na aktuálnej stránke nie sú blokovateľné položky
 whitelisted_page=Adblock Plus bol zakázaný pre aktuálnu stránku
-whitelist_description=Výnimky
-filterlist_description=Filtre reklám
-invalid_description=Nesprávne filtre
-elemhide_description=Skryté pravidlá prvkov
-subscription_description=Povolený filter:
-subscription_wrong_version=Niektoré filtre v tomto povolení vyžadujú Adblock Plus ?1? k správnej činnosti!
-subscription_source=Zdroj:
-subscription_status=Stav:
-subscription_status_autodownload=Aktualizovaný automaticky
-subscription_status_manualdownload=Aktualizovaný manuálne
-subscription_status_externaldownload=Aktualizovaný externe (iné rozšírenie)
-subscription_status_lastdownload=Posledné prevzatie:
-subscription_status_lastdownload_inprogress=Preberanie...
-subscription_status_lastdownload_unknown=N/A
+newGroup_title=Nová skupina filtrov
+whitelistGroup_title=Výnimky pravidiel
+blockingGroup_title=Pravidlá blokovania
+elemhideGroup_title=Pravidlá skrytia prvkov
 remove_subscription_warning=Naozaj si želáte odstrániť toto povolenie?
-import_filters_wrong_version=Upozornenie: Niektoré filtre v tomto zozname vyžadujú Adblock Plus ?1? k správnej činnosti. Pred importovaním tohto zoznamu by ste mal aktualizovať Adblock Plus na poslednú verziu.
-import_filters_warning=Želáte si nahradiť vaše aktuálne filtre alebo pridať nové filtre na koniec zoznamu?
-import_filters_title=Importovať filtre
-export_filters_title=Exportovať filtre
-invalid_filters_file=Neplatný súbor filtrov Adblock Plus.
-filters_write_error=Pri zapisovaní filtrov do súboru bola zistená chyba. Presvedčte sa, že súbor nie je chránený proti zapisovaniu alebo zvoľte iný program.
-clearall_warning=Naozaj si želáte odstrániť všetky filtre zo zoznamu?
-resethitcounts_warning=Naozaj si prajete obnoviť počty aktívnych záznamov všetkých filtrov na nulu? Táto operácia sa nedá vrátiť späť!
-resethitcounts_selected_warning=Naozaj si prajete resetovať počty aktívnych záznamov vybraných filtrov na nulu? Táto operácia sa nedá vrátiť späť!
+clearStats_warning=Toto resetuje všetky štatistiky filtrov a vypne počítadlo. Chcete pokračovať?
 filter_regexp_tooltip=Tento filter je buď regulárny výraz alebo je príliš krátky, aby mohol byť optimalizovaný. Príliš mnoho z týchto filtrov môžu spomaliť prehliadanie.
 filter_elemhide_duplicate_id=Len jedno ID prvku na skrytie môže byť špecifikované
 filter_elemhide_nocriteria=Žiadne kritéria neboli špecifikované pre rozpoznanie prvku na skrytie
-subscription_notAdded_warning=Nepridali ste popis filtra. Bez popisu filtra budete musieť pridať Adblock Plus filtre manuálne.
-subscription_notAdded_warning_addendum=Chcete pokračovať?
 subscription_invalid_location=Umiestnenie zoznamu filtrov nemá platnú URL alebo platný názov súboru.
-synchronize_invalid_url=Zlyhanie, neplatná adresa
-synchronize_connection_error=Zlyhanie, sťahovanie neúspešné
-synchronize_invalid_data=Zlyhanie, neplatný zoznam filtrov
-synchronize_checksum_mismatch=Zlyhalo, chybné prispôsobenie kontrolného súčtu
-synchronize_ok=Úspešné
-overwrite=Prepísať
-append=Pridať
-new_filter_group_title=Nový filter
 type_label_other=iný
 type_label_script=skript
 type_label_image=obrázok
@@ -56,15 +28,12 @@ type_label_object=predmet
 type_label_subdocument=rámec
 type_label_document=dokument
 type_label_elemhide=skrytý
-type_label_xbl=XBL väzba
-type_label_ping=ping odkazu
+type_label_popup=vyskakovacie okno
 type_label_xmlhttprequest=XML požiadavka
 type_label_object_subrequest=podžiadosť predmetu
-type_label_dtd=DTD
 type_label_media=zvuk/video
 type_label_font=písmo
 fennec_status_enabled=Adblock Plus je zapnutý.
 fennec_status_disabled=Adblock Plus je vypnutý
 fennec_status_enabled_site=Adblock Plus je zapnutý na  ?1?.
 fennec_status_disabled_site=Adblock Plus je vypnutý na ?1?.
-sync_engine_title=Údaje Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/sk/overlay.dtd b/chrome/adblockplus.jar!/locale/sk/overlay.dtd
index f480bd0..bd9a36c 100644
--- a/chrome/adblockplus.jar!/locale/sk/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/sk/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blokovateľné položky">
 <!ENTITY context.image.label "Adblock obrázok">
 <!ENTITY context.object.label "Adblock objekt">
 <!ENTITY context.frame.label "Adblock rámec">
@@ -13,15 +12,31 @@
 <!ENTITY sidebar.title "Blokovateľné položky na aktuálnej stránke">
 <!ENTITY sendReport.label "Ohlásiť problém na tejto stránke">
 <!ENTITY sendReport.accesskey "O">
-<!ENTITY settings.label "Nastavenia">
-<!ENTITY settings.accesskey "N">
+<!ENTITY filters.label "Nastavenia filtrov">
+<!ENTITY filters.accesskey "N">
 <!ENTITY opensidebar.label "Otvoriť blokovateľné položky">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Zatvoriť blokovateľné položky">
-<!ENTITY closesidebar.accesskey "B">
+<!ENTITY closesidebar.accesskey "b">
 <!ENTITY whitelist.site.label "Vypnúť na ?1?">
 <!ENTITY whitelist.page.label "Vypnúť len na tejto stránke">
 <!ENTITY disable.label "Vypnúť všade">
-<!ENTITY recommend.label "Odporúčajte nás na Facebook">
+<!ENTITY options.label "Možnosti">
+<!ENTITY options.accesskey "M">
+<!ENTITY contribute.label "Prispieť na Adblock Plus">
+<!ENTITY showintoolbar.label "Zobraziť v paneli nástrojov">
+<!ENTITY showintoolbar.accesskey "l">
+<!ENTITY showinstatusbar.label "Zobraziť v stavovom riadku">
+<!ENTITY showinstatusbar.accesskey "S">
+<!ENTITY showinaddonbar.label "Zobraziť v paneli doplnkov">
+<!ENTITY showinaddonbar.accesskey "l">
+<!ENTITY objecttabs.label "Zobraziť karty pre Flash a Java">
+<!ENTITY objecttabs.accesskey "F">
+<!ENTITY hideplaceholders.label "Skryť symboly blokovaných prvkov">
+<!ENTITY hideplaceholders.accesskey "r">
+<!ENTITY counthits.label "Počítadlo">
+<!ENTITY counthits.accesskey "o">
+<!ENTITY sync.label "Synchronizovať nastavenia Adblock Plus">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "Blokovať">
 <!ENTITY objecttab.tooltip "Kliknúť sem pre blokovanie tohto objektu s Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/sk/settings.dtd b/chrome/adblockplus.jar!/locale/sk/settings.dtd
deleted file mode 100644
index 6621f3d..0000000
--- a/chrome/adblockplus.jar!/locale/sk/settings.dtd
+++ /dev/null
@@ -1,91 +0,0 @@
-<!ENTITY dialog.title "Nastavenia Adblock Plus">
-<!ENTITY filters.label "Filtre">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Pridať filter">
-<!ENTITY add.accesskey "D">
-<!ENTITY addsubscription.label "Pridať povolenie filtra">
-<!ENTITY addsubscription.accesskey "P">
-<!ENTITY synchsubscriptions.label "Aktualizovať všetky povolenia">
-<!ENTITY synchsubscriptions.accesskey "T">
-<!ENTITY import.label "Importovať filtre">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Exportovať filtre">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "Odstrániť všetky filtre">
-<!ENTITY clearall.accesskey "V">
-<!ENTITY resethitcounts.label "Resetovať štatistiku počítadla">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Upraviť">
-<!ENTITY edit.accesskey "U">
-<!ENTITY cut.label "Vystrihnúť">
-<!ENTITY cut.accesskey "V">
-<!ENTITY copy.label "Kopírovať">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Prilepiť">
-<!ENTITY paste.accesskey "E">
-<!ENTITY remove.label "Odstrániť">
-<!ENTITY remove.accesskey "O">
-<!ENTITY menu.find.label "Nájsť">
-<!ENTITY menu.find.accesskey "N">
-<!ENTITY menu.findagain.label "Nájsť znova">
-<!ENTITY menu.findagain.accesskey "Z">
-<!ENTITY view.label "Zobraziť">
-<!ENTITY view.accesskey "Z">
-<!ENTITY sort.label "Triediť podľa">
-<!ENTITY sort.accesskey "T">
-<!ENTITY sort.none.label "Netriedené">
-<!ENTITY sort.none.accesskey "N">
-<!ENTITY sort.ascending.label "Triediť od A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Triediť od Z > A">
-<!ENTITY sort.descending.accesskey "d">
-<!ENTITY options.label "Možnosti">
-<!ENTITY options.accesskey "M">
-<!ENTITY enable.label "Zapnúť Adblock Plus">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Zobraziť v paneli nástrojov">
-<!ENTITY showintoolbar.accesskey "B">
-<!ENTITY showinstatusbar.label "Zobraziť v stavovom riadku">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "Zobraziť karty pre Flash a Java">
-<!ENTITY objecttabs.accesskey "F">
-<!ENTITY collapse.label "Usporiadať blokované prvky">
-<!ENTITY collapse.accesskey "U">
-<!ENTITY sync.label "Synchronizovať nastavenia Adblock Plus">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Pomocník">
-<!ENTITY help.accesskey "P">
-<!ENTITY gettingStarted.label "Začíname">
-<!ENTITY gettingStarted.accesskey "m">
-<!ENTITY faq.label "Často kladené otázky">
-<!ENTITY faq.accesskey "K">
-<!ENTITY filterdoc.label "Písanie filtrov Adblock Plus">
-<!ENTITY filterdoc.accesskey "F">
-<!ENTITY about.label "O rozšírení Adblock Plus">
-<!ENTITY about.accesskey "O">
-<!ENTITY description "Pridať adresu,ktorú chcete blokovať, návrhy skontrolujte v rozbaľovacej ponuke.
-		Môžete použiť * ako divokú kartu na vytvorenie všeobecných filtrov. Pokročilí používatelia môžu
-		použiť regulárne výrazy ako /banner\d+\.gif$/.">
-<!ENTITY filter.column "Pravidlo filtra">
-<!ENTITY filter.accesskey "f">
-<!ENTITY slow.column "Voľné filtre">
-<!ENTITY slow.accesskey "V">
-<!ENTITY enabled.column "Zapnuté">
-<!ENTITY enabled.accesskey "Z">
-<!ENTITY hitcount.column "Počítadlá">
-<!ENTITY hitcount.accesskey "P">
-<!ENTITY lasthit.column "Posledný zápis">
-<!ENTITY lasthit.accesskey "s">
-<!ENTITY context.edit.label "Upraviť filter">
-<!ENTITY context.resethitcount.label "Resetovať štatistiku počítadla pre filter">
-<!ENTITY context.synchsubscription.label "Aktualizovať povolenia teraz">
-<!ENTITY context.editsubscription.label "Upraviť povolené">
-<!ENTITY context.moveup.label "Posunúť hore">
-<!ENTITY context.movedown.label "Posunúť dole">
-<!ENTITY context.movegroupup.label "Posunúť skupinu hore">
-<!ENTITY context.movegroupdown.label "Posunúť skupinu dole">
-<!ENTITY context.enable.label "Zapnúť">
-<!ENTITY context.disable.label "Vypnúť">
-<!ENTITY apply.label "Potvrdiť">
-<!ENTITY apply.accesskey "V">
-<!ENTITY fennec.subscription.label "Popis filtra">
diff --git a/chrome/adblockplus.jar!/locale/sk/sidebar.dtd b/chrome/adblockplus.jar!/locale/sk/sidebar.dtd
index fac9bed..de860ab 100644
--- a/chrome/adblockplus.jar!/locale/sk/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/sk/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filter">
 <!ENTITY state.label "Stav">
 <!ENTITY size.label "Veľkosť">
+<!ENTITY filterSource.label "Zdroj filtra">
 <!ENTITY docDomain.label "Zdroj dokumentu">
 <!ENTITY docDomain.thirdParty "(tretia strana)">
 <!ENTITY docDomain.firstParty "(prvá strana)">
diff --git a/chrome/adblockplus.jar!/locale/sk/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/sk/subscriptionSelection.dtd
index 222672c..7cdfcc4 100644
--- a/chrome/adblockplus.jar!/locale/sk/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/sk/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Odoberanie Add Adblock Plus filtrov">
-<!ENTITY dialog.title.edit "Upraviť povolenie filtra">
-<!ENTITY description.newInstall "Adblock Plus bude efektívnejší ak pridáte odber filtra. Odber filtrov sú voľne poskytované inými používateľmi Adblock Plus. Najvhodnejší odber pre váš jazyk je už zvolený.">
 <!ENTITY subscriptionSelector.label "Prosím, zvoľte odber zo zoznamu:">
 <!ENTITY viewList.label "Zobraziť filtre">
 <!ENTITY visitHomepage.label "Navštíviť domovskú stránku">
 <!ENTITY addSubscription.label "Pridať odber">
-<!ENTITY saveSubscription.label "Uložiť odber">
-<!ENTITY other.label "Pridať iné odoberania">
-<!ENTITY other.accesskey "P">
 <!ENTITY list.download.failed "Adblock Plus zlyhal pri získavaní zoznamu odberov.">
 <!ENTITY list.download.retry "Skúsiť znova">
 <!ENTITY list.download.website "Zobraziť webovú stránku">
 <!ENTITY fromWeb.description "Prosím, potvrďte, že chcete pridať tento filter odberu.">
-<!ENTITY edit.description "Môžete zmeniť názov odberu alebo umiestnenie ak je to potrebné.">
-<!ENTITY external.description "Toto je externý filter odberu;bude aktualizovaný podľa prípony, ktorý vytvoril tento odber.">
 <!ENTITY title.label "Názov povolenia:">
 <!ENTITY title.accesskey "Z">
 <!ENTITY location.label "Umiestnenie zoznamu filtrov:">
 <!ENTITY location.accesskey "M">
-<!ENTITY autodownload.label "Automatická aktualizácia">
-<!ENTITY autodownload.accesskey "T">
 <!ENTITY supplementMessage "Tento filter odberu je určený pre použitie s filtrom odberu "?1?"ktorý ešte nepoužívate.">
 <!ENTITY addMain.label "Pridať tiež filter odberu "?1?"">
 <!ENTITY addMain.accesskey "o">
diff --git a/chrome/adblockplus.jar!/locale/sl/filters.dtd b/chrome/adblockplus.jar!/locale/sl/filters.dtd
new file mode 100644
index 0000000..7e8f131
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sl/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Dodaj naročnino filtra">
+<!ENTITY addSubscriptionOther.label "Dodaj novo naročnino">
+<!ENTITY subscription.lastDownload.label "Zadnji prenos:">
+<!ENTITY subscription.lastDownload.inProgress "Prenos s strežnika ...">
+<!ENTITY subscription.lastDownload.unknown "Ni na voljo">
+<!ENTITY subscription.lastDownload.invalidURL "Neuspešno, ni veljaven naslov">
+<!ENTITY subscription.lastDownload.connectionError "Neuspešno, napaka prenosa">
+<!ENTITY subscription.lastDownload.invalidData "Neuspešno, ni veljaven seznam filtrov">
+<!ENTITY subscription.lastDownload.checksumMismatch "Neuspešno, kontrolna vsota se ne ujema">
+<!ENTITY subscription.lastDownload.success "Uspešno">
+<!ENTITY addFilter.label "Dodaj filter">
+<!ENTITY filter.cut.label "Izreži">
+<!ENTITY filter.copy.label "Kopiraj">
+<!ENTITY filter.paste.label "Prilepi">
+<!ENTITY filter.delete.label "Izbriši">
+<!ENTITY viewMenu.label "Pogled">
+<!ENTITY filter.column "Pravilo filtra">
+<!ENTITY filter.accesskey "f">
+<!ENTITY slow.column "Počasni filtri">
+<!ENTITY slow.accesskey "č">
+<!ENTITY enabled.column "Omogočeno">
+<!ENTITY enabled.accesskey "m">
+<!ENTITY hitcount.column "Zadetki">
+<!ENTITY hitcount.accesskey "d">
+<!ENTITY lasthit.column "Zadnji zadetek">
+<!ENTITY lasthit.accesskey "n">
+<!ENTITY sort.label "Razvrsti">
+<!ENTITY sort.accesskey "v">
+<!ENTITY sort.none.label "Nerazvrščeno">
+<!ENTITY sort.none.accesskey "š">
+<!ENTITY sort.ascending.label "od A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "od Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Najdi">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/sl/firstRun.dtd b/chrome/adblockplus.jar!/locale/sl/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sl/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/sl/global.properties b/chrome/adblockplus.jar!/locale/sl/global.properties
index 18f5f56..1544cd2 100644
--- a/chrome/adblockplus.jar!/locale/sl/global.properties
+++ b/chrome/adblockplus.jar!/locale/sl/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? izmed ?2?
 blocked_count_addendum=(prav tako prikriti: ?1?, skriti: ?2?)
 no_blocking_suggestions=Na trenutni strani ni elementov blokad
 whitelisted_page=Za trenutno stran je bil Adblock Plus izključen
-whitelist_description=Pravila izjem
-filterlist_description=Filtri za oglase
-invalid_description=Neveljavni filtri
-elemhide_description=Pravila skrivanja elementov
-subscription_description=Naročnina na filter:
-subscription_wrong_version=Nekateri filtri v tej naročnini zahtevajo Adblock Plus ?1?, da bi delovali pravilno!
-subscription_source=Vir:
-subscription_status=Stanje:
-subscription_status_autodownload=Samodejno posodobljeno
-subscription_status_manualdownload=Ročno posodobljeno
-subscription_status_externaldownload=Zunanje posodobljeno (druga razširitev)
-subscription_status_lastdownload=Zadnji prenos:
-subscription_status_lastdownload_inprogress=Prenos s strežnika ...
-subscription_status_lastdownload_unknown=Ni na voljo
 remove_subscription_warning=Želite res odpovedati naročnino?
-import_filters_wrong_version=Opozorilo: nekateri od filtrov v tem seznamu za pravilno delovanje zahtevajo Adblock Plus ?1?. Najverjetneje morate nadgraditi razširitev na zadnjo izdajo Adblock Plus, preden uvozite ta seznam.
-import_filters_warning=Želite zamenjati obstoječe filtre ali dodati nove filtre na dno seznama?
-import_filters_title=Uvozi filtre
-export_filters_title=Izvozi filtre
-invalid_filters_file=Ni veljavna datoteka filtra Adblock Plus.
-filters_write_error=Pri pisanju filtrov v datoteko je prišlo do napake. Preverite, da datoteka ni zaščitena pred pisanjem ali odprta v drugem programu.
-clearall_warning=Resnično želite odstraniti vse filtre s seznama?
-resethitcounts_warning=Resnično želite ponastaviti števce za vse filtre na nič? Tega ni mogoče popraviti!
-resethitcounts_selected_warning=Resnično želite ponastaviti števce za izbrane filtre na nič? Tega ni mogoče popraviti!
 filter_regexp_tooltip=Ta filter je regularni izraz ali pa je prekratek za optimizacijo. Preveč filtrov lahko upočasni brskanje.
 filter_elemhide_duplicate_id=Navedete lahko le eno identiteto elementa, ki naj bo skrit
 filter_elemhide_nocriteria=Za razpoznavo elementa, ki naj bo skrit, ni navedenih pogojev
-subscription_notAdded_warning=Naročnine na filter niste dodali. Brez naročnine na filter boste morali filtre Adblock Plus dodati ročno.
-subscription_notAdded_warning_addendum=Želite nadaljevati?
 subscription_invalid_location=Mesto seznama filtrov ni niti veljaven URL niti veljavno ime datoteke.
-synchronize_invalid_url=Neuspešno, ni veljaven naslov
-synchronize_connection_error=Neuspešno, napaka prenosa
-synchronize_invalid_data=Neuspešno, ni veljaven seznam filtrov
-synchronize_checksum_mismatch=Neuspešno, kontrolna vsota se ne ujema
-synchronize_ok=Uspešno
-overwrite=Prepiši
-append=Dodaj
-new_filter_group_title=Nov filter
 type_label_other=drugo
 type_label_script=skript
 type_label_image=sliko
@@ -56,15 +23,17 @@ type_label_object=predmet
 type_label_subdocument=okvir
 type_label_document=dokument
 type_label_elemhide=skrito
-type_label_xbl=Vezava XBL
-type_label_ping=poveži ping
 type_label_xmlhttprequest=Zahteva XML
 type_label_object_subrequest=podzahteva predmeta
-type_label_dtd=DTD
 type_label_media=zvok/video
 type_label_font=pisava
 fennec_status_enabled=Adblock Plus je vključen.
 fennec_status_disabled=Adblock Plus je izključen.
 fennec_status_enabled_site=Adblock Plus je vključen na ?1?.
 fennec_status_disabled_site=Adblock Plus je izključen na ?1?.
-sync_engine_title=Podatki Adblock Plus
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/sl/overlay.dtd b/chrome/adblockplus.jar!/locale/sl/overlay.dtd
index 000a7fc..0742fb6 100644
--- a/chrome/adblockplus.jar!/locale/sl/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/sl/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: elementi za blokiranje">
 <!ENTITY context.image.label "Adblock - slike">
 <!ENTITY context.object.label "Adblock - predmeti">
 <!ENTITY context.frame.label "Adblock - okviri">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Elementi blokad na trenutni strani">
 <!ENTITY sendReport.label "Javite težavo na tej strani">
 <!ENTITY sendReport.accesskey "J">
-<!ENTITY settings.label "Nastavitve">
-<!ENTITY settings.accesskey "N">
 <!ENTITY opensidebar.label "Odpri elemente blokad">
 <!ENTITY opensidebar.accesskey "e">
 <!ENTITY closesidebar.label "Zapri elemente blokad">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Onemogoči na ?1?">
 <!ENTITY whitelist.page.label "Onemogoči samo na tej strani">
 <!ENTITY disable.label "Onemogoči povsod">
-<!ENTITY recommend.label "Priporočite nas na Facebooku">
+<!ENTITY options.label "Možnosti">
+<!ENTITY options.accesskey "ž">
+<!ENTITY showintoolbar.label "Pokaži v orodni vrstici">
+<!ENTITY showintoolbar.accesskey "k">
+<!ENTITY showinstatusbar.label "Pokaži v vrstici stanja">
+<!ENTITY showinstatusbar.accesskey "v">
+<!ENTITY objecttabs.label "Pokaži zavihke za Flash in Javo">
+<!ENTITY objecttabs.accesskey "z">
+<!ENTITY sync.label "Sinhroniziraj nastavitve Adblock Plus">
+<!ENTITY sync.accesskey "h">
 <!ENTITY objecttab.title "Blokiraj">
 <!ENTITY objecttab.tooltip "Kliknite sem za blokiranje tega predmeta z Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/sl/settings.dtd b/chrome/adblockplus.jar!/locale/sl/settings.dtd
deleted file mode 100644
index a6764ba..0000000
--- a/chrome/adblockplus.jar!/locale/sl/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Nastavitve Adblock Plus">
-<!ENTITY filters.label "Filtri">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Dodaj filter">
-<!ENTITY add.accesskey "D">
-<!ENTITY addsubscription.label "Dodaj naročnino filtra">
-<!ENTITY addsubscription.accesskey "n">
-<!ENTITY synchsubscriptions.label "Posodobi vse naročnine">
-<!ENTITY synchsubscriptions.accesskey "P">
-<!ENTITY import.label "Uvozi filtre">
-<!ENTITY import.accesskey "U">
-<!ENTITY export.label "Izvozi filtre">
-<!ENTITY export.accesskey "I">
-<!ENTITY clearall.label "Odstrani vse filtre">
-<!ENTITY clearall.accesskey "O">
-<!ENTITY resethitcounts.label "Ponastavi statistiko zadetkov">
-<!ENTITY resethitcounts.accesskey "z">
-<!ENTITY edit.label "Uredi">
-<!ENTITY edit.accesskey "e">
-<!ENTITY cut.label "Izreži">
-<!ENTITY cut.accesskey "i">
-<!ENTITY copy.label "Kopiraj">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Prilepi">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Izbriši">
-<!ENTITY remove.accesskey "b">
-<!ENTITY menu.find.label "Najdi">
-<!ENTITY menu.find.accesskey "d">
-<!ENTITY menu.findagain.label "Ponovno najdi">
-<!ENTITY menu.findagain.accesskey "j">
-<!ENTITY view.label "Pogled">
-<!ENTITY view.accesskey "o">
-<!ENTITY sort.label "Razvrsti">
-<!ENTITY sort.accesskey "v">
-<!ENTITY sort.none.label "Nerazvrščeno">
-<!ENTITY sort.none.accesskey "š">
-<!ENTITY sort.ascending.label "od A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "od Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Možnosti">
-<!ENTITY options.accesskey "ž">
-<!ENTITY enable.label "Omogoči Adblock Plus">
-<!ENTITY enable.accesskey "O">
-<!ENTITY showintoolbar.label "Pokaži v orodni vrstici">
-<!ENTITY showintoolbar.accesskey "k">
-<!ENTITY showinstatusbar.label "Pokaži v vrstici stanja">
-<!ENTITY showinstatusbar.accesskey "v">
-<!ENTITY objecttabs.label "Pokaži zavihke za Flash in Javo">
-<!ENTITY objecttabs.accesskey "z">
-<!ENTITY collapse.label "Zloži blokirane elemente">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Sinhroniziraj nastavitve Adblock Plus">
-<!ENTITY sync.accesskey "h">
-<!ENTITY help.label "Pomoč">
-<!ENTITY help.accesskey "m">
-<!ENTITY gettingStarted.label "Prvi koraki">
-<!ENTITY gettingStarted.accesskey "k">
-<!ENTITY faq.label "Pogosto zastavljena vprašanja">
-<!ENTITY faq.accesskey "P">
-<!ENTITY filterdoc.label "Pisanje filtrov Adblock Plus">
-<!ENTITY filterdoc.accesskey "s">
-<!ENTITY about.label "O Adblock Plus">
-<!ENTITY about.accesskey "b">
-<!ENTITY description "Dodajte naslove, ki bi jih radi blokirali, za nasvete preverite seznamsko polje. Uporabite lahko * za izdelavo bolj splošnih filtrov. Napredni uporabniki lahko uporabite regularne izraze kot je /banner\d+\.gif$/.">
-<!ENTITY filter.column "Pravilo filtra">
-<!ENTITY filter.accesskey "f">
-<!ENTITY slow.column "Počasni filtri">
-<!ENTITY slow.accesskey "č">
-<!ENTITY enabled.column "Omogočeno">
-<!ENTITY enabled.accesskey "m">
-<!ENTITY hitcount.column "Zadetki">
-<!ENTITY hitcount.accesskey "d">
-<!ENTITY lasthit.column "Zadnji zadetek">
-<!ENTITY lasthit.accesskey "n">
-<!ENTITY context.edit.label "Uredi filter">
-<!ENTITY context.resethitcount.label "Ponastavi statistiko zadetkov za filter">
-<!ENTITY context.synchsubscription.label "Posodobi naročnino zdaj">
-<!ENTITY context.editsubscription.label "Uredi naročnino">
-<!ENTITY context.moveup.label "Premakni navzgor">
-<!ENTITY context.movedown.label "Premakni navzdol">
-<!ENTITY context.movegroupup.label "Premakni skupino navzgor">
-<!ENTITY context.movegroupdown.label "Premakni skupino navzdol">
-<!ENTITY context.enable.label "Omogoči">
-<!ENTITY context.disable.label "Onemogoči">
-<!ENTITY apply.label "Uporabi">
-<!ENTITY apply.accesskey "U">
-<!ENTITY fennec.subscription.label "Naročnina na filter">
diff --git a/chrome/adblockplus.jar!/locale/sl/sidebar.dtd b/chrome/adblockplus.jar!/locale/sl/sidebar.dtd
index 3808d86..e405c32 100644
--- a/chrome/adblockplus.jar!/locale/sl/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/sl/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Kopiraj naslov elementa">
 <!ENTITY context.copyFilter.label "Kopiraj filter">
 <!ENTITY context.selectAll.label "Izberi vse">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/sl/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/sl/subscriptionSelection.dtd
index 192b182..bacd4ea 100644
--- a/chrome/adblockplus.jar!/locale/sl/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/sl/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Dodaj naročnino na filtre Adblock Plus">
-<!ENTITY dialog.title.edit "Uredi naročnino filtra">
-<!ENTITY description.newInstall "Da bi bil Adblock Plus kar najbolj učinkovit, dodajte naročnino na filtre. Te naročnine na filtre ponujajo drugi uporabniki Adblock Plusa brezplačno. Najprimernejše naročnine na filtre za vaš jezik so že izbrane.">
 <!ENTITY subscriptionSelector.label "Izberite naročnino na filter s seznama:">
 <!ENTITY viewList.label "Pokaži filtre">
 <!ENTITY visitHomepage.label "Obišči domačo stran">
 <!ENTITY addSubscription.label "Dodaj naročnino">
-<!ENTITY saveSubscription.label "Shrani naročnino">
-<!ENTITY other.label "Dodaj novo naročnino">
-<!ENTITY other.accesskey "D">
 <!ENTITY list.download.failed "Pridobivanje seznama naročnin ni uspelo.">
 <!ENTITY list.download.retry "Poskusi znova">
 <!ENTITY list.download.website "Pokaži spletno mesto">
 <!ENTITY fromWeb.description "Potrdite, da želite dodati to naročnino na filter. Naslov ali kraj naročnine lahko spremenite še pred dodajanjem.">
-<!ENTITY edit.description "Po potrebi lahko spremenite naslov ali mesto naročnine.">
-<!ENTITY external.description "To je zunanja naročnina na filter, seznam filtrov bo posodobljen z razširitvijo, ki je ustvarila to naročnino.">
 <!ENTITY title.label "Naslov naročnine:">
 <!ENTITY title.accesskey "N">
 <!ENTITY location.label "Mesto seznama filtriranja:">
 <!ENTITY location.accesskey "M">
-<!ENTITY autodownload.label "Samodejno posodobi">
-<!ENTITY autodownload.accesskey "S">
 <!ENTITY supplementMessage "Naročnina na filter je mišljena za rabo z naročnino na filter ?1?, ki je še ne uporabljate.">
 <!ENTITY addMain.label "Dodaj tudi naročnino na filter ?1?">
 <!ENTITY addMain.accesskey "f">
diff --git a/chrome/adblockplus.jar!/locale/sq/about.dtd b/chrome/adblockplus.jar!/locale/sq/about.dtd
index b962ba7..3f90f62 100644
--- a/chrome/adblockplus.jar!/locale/sq/about.dtd
+++ b/chrome/adblockplus.jar!/locale/sq/about.dtd
@@ -4,5 +4,5 @@
 <!ENTITY homepage.label "Adblock Plus internet faqja">
 <!ENTITY author.label "Autori">
 <!ENTITY contributors.label "Kontribuuesit">
-<!ENTITY subscriptionAuthors.label "Filtrim i autoreve sipas abonimit:">
-<!ENTITY translators.label "Perkthyesit:">
+<!ENTITY translators.label "Translators:">
+<!ENTITY subscriptionAuthors.label "Filter subscription authors:">
diff --git a/chrome/adblockplus.jar!/locale/sq/composer.dtd b/chrome/adblockplus.jar!/locale/sq/composer.dtd
index b897243..338ada6 100644
--- a/chrome/adblockplus.jar!/locale/sq/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/sq/composer.dtd
@@ -1,9 +1,5 @@
-<!ENTITY dialog.title "Shtim rregulli filtrimi ne Adblock Plus">
-<!ENTITY accept.label "Shto filtrin">
 <!ENTITY advanced.label "Pamja e avancuar">
 <!ENTITY basic.label "Pamja e zakonshme">
-<!ENTITY disabled.warning "Aktualisht Adblock Plus eshte i bllokuar. Ju mund te shtoni filtra por ata nuk do te aplikohen deri sa ju te [link]aktivizoni Adblock Plus[/link].">
-<!ENTITY groupDisabled.warning "Grupi i filtrave "?1?" ku do te shtohet ky filter eshte aktualisht i bllokuar. Ju mund ta shtoni filtrin por nuk do te aplikohet deri sa ju te [link]aktivizoni kete grup filtrash[/link].">
 <!ENTITY filter.label "Filtrues i ri:">
 <!ENTITY filter.accesskey "f">
 <!ENTITY preferences.label "Trego filtruesit ekzistues...">
@@ -12,36 +8,40 @@
 <!ENTITY type.filter.accesskey "B">
 <!ENTITY type.whitelist.label "Mos përfill">
 <!ENTITY type.whitelist.accesskey "x">
-<!ENTITY pattern.label "Shiko per model">
-<!ENTITY pattern.explanation "Modeli mund te jete cfaredo pjese e adreses; yjet (*) veprojne si pergjithesues. Filtri do ti aplikohet vetem adresave te cilat perputhen me modelin e dhene.">
-<!ENTITY regexp.warning "Modeli qe ju dhate do te interpretohet si nje shprehje e rregullt e cila nuk mund te perpunohet sakte nga Adblock Plus dhe mund te ngadalesoje lundrimin tuaj. Nese ju nuk deshironi te perdorni nje shprehje te rregullt, shtoni nje yll (*) ne fund te modelit.">
-<!ENTITY shortpattern.warning "Modeli qe ju dhate eshte shume i shkurter per te qene optimal dhe mund te ngadalesoje lundrimin tuaj. Rekomandohet qe ju te zgjidhni nje fjale me te gjate per kete filter, ne menyre qe te lejoni Adblock Plus te perpunoje filtrin ne menyre me efikase.">
-<!ENTITY match.warning "Modeli qe ju dhate nuk perputhet me adresen e cila do te bllokohet/lejohet dhe nuk do te kete asnje efekt.">
 <!ENTITY custom.pattern.label "Përshtatja:">
 <!ENTITY custom.pattern.accesskey "C">
-<!ENTITY anchors.label "Prano modelin vetem:">
-<!ENTITY anchor.start.label "ne fillimin e adreses">
 <!ENTITY anchor.start.accesskey "g">
-<!ENTITY anchor.start.flexible.label "ne fillimin e emrit te domain">
 <!ENTITY anchor.start.flexible.accesskey "g">
 <!ENTITY anchor.end.label "në fund të adresës">
 <!ENTITY anchor.end.accesskey "n">
 <!ENTITY options.label "Mundësitë">
-<!ENTITY domainRestriction.label "Vetem ne domain:">
 <!ENTITY domainRestriction.accesskey "d">
-<!ENTITY domainRestriction.help "Ky funksion perdoret per te percaktuar nje ose me shume domain te ndare nga nje vije (|). Filtri do ti aplikohet vetem domain(eve) te perzgjedhur. Nje tilde (~) perpara emrit te domain tregon qe filtri nuk do te aplikohet ne kete domain.">
 <!ENTITY firstParty.label "Vetëm pjesa e parë">
 <!ENTITY firstParty.accesskey "r">
 <!ENTITY thirdParty.label "Vetëm pjesa e tretë">
 <!ENTITY thirdParty.accesskey "T">
-<!ENTITY matchCase.label "Sipas germave:">
 <!ENTITY matchCase.accesskey "M">
 <!ENTITY types.label "Apliko në llojet:">
 <!ENTITY selectAllTypes.label "Selekto të gjitha">
 <!ENTITY unselectAllTypes.label "Mos selekto asnjë">
-<!ENTITY collapse.label "Mbyll te bllokuarat:">
 <!ENTITY collapse.accesskey "I">
 <!ENTITY collapse.default.yes.label "Përdor të parazgjedhurën (po):">
 <!ENTITY collapse.default.no.label "Përdor të parazgjedhurën (jo):">
 <!ENTITY collapse.yes.label "Po">
 <!ENTITY collapse.no.label "Jo">
+<!ENTITY domainRestriction.label "Restrict to domain:">
+<!ENTITY pattern.label "Look for pattern">
+<!ENTITY collapse.label "Collapse blocked:">
+<!ENTITY match.warning "The pattern you entered no longer matches the address to be blocked/whitelisted and will have no effect on it.">
+<!ENTITY anchor.start.label "at the beginning of the address">
+<!ENTITY matchCase.label "Match case">
+<!ENTITY regexp.warning "The pattern you entered will be interpreted as a regular expression which cannot be efficiently processed by Adblock Plus and may slow down your browsing experience. If you didn't intend to use a regular expression, add an asterisk (*) to the end of the pattern.">
+<!ENTITY dialog.title "Add Adblock Plus filter rule">
+<!ENTITY shortpattern.warning "The pattern you entered is too short to be optimized and may slow down your browsing experience. It is recommended that you choose a longer string for this filter to allow Adblock Plus to process the filter more efficiently.">
+<!ENTITY groupDisabled.warning "The filter group &quot;?1?&quot; that this filter will be added to is currently disabled. You can still add the filter but it will not be applied unless you [link]enable the filter group[/link].">
+<!ENTITY anchors.label "Accept pattern only:">
+<!ENTITY domainRestriction.help "Use this option to specify one or more domains separated by a bar line (|). The filter will only be applied on the domain(s) selected. A tilde (~) before a domain name indicates that the filter will not be applied on that domain.">
+<!ENTITY accept.label "Add filter">
+<!ENTITY disabled.warning "Adblock Plus is currently disabled. You can still add filters but they will not be applied unless you [link]enable Adblock Plus[/link].">
+<!ENTITY anchor.start.flexible.label "at the beginning of the domain name">
+<!ENTITY pattern.explanation "The pattern can be any part of the address; asterisks (*) act as wildcards. The filter will only be applied to addresses matching the pattern provided.">
diff --git a/chrome/adblockplus.jar!/locale/sq/filters.dtd b/chrome/adblockplus.jar!/locale/sq/filters.dtd
new file mode 100644
index 0000000..dd445a0
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sq/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY subscription.lastDownload.label "Shkarkimi i fundit:">
+<!ENTITY subscription.lastDownload.inProgress "Duke u shkarkuar...">
+<!ENTITY subscription.lastDownload.unknown "N/D">
+<!ENTITY subscription.lastDownload.success "Sukses">
+<!ENTITY addFilter.label "Vendos filtrues">
+<!ENTITY filter.cut.label "Kopjo-largo">
+<!ENTITY filter.copy.label "Kopjo">
+<!ENTITY filter.paste.label "Hedh">
+<!ENTITY filter.delete.label "Fshijë">
+<!ENTITY viewMenu.label "Shih">
+<!ENTITY filter.column "Rregulla e filtrimit">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Filtruesit e ngadalshëm">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "Aktivizo">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "Shtypje">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "Shtypja e fundit">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Radhit sipas">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Pa radhitur">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "A > Z radhitje">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A radhitje">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Kërko">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY subscription.lastDownload.checksumMismatch "Failed, checksum mismatch">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY subscription.lastDownload.invalidURL "Failed, not a valid address">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY subscription.lastDownload.connectionError "Failed, download failure">
+<!ENTITY subscription.lastDownload.invalidData "Failed, not a valid filters list">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY addSubscriptionOther.label "Add a different subscription">
+<!ENTITY addSubscription.label "Add filter subscription">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/sq/firstRun.dtd b/chrome/adblockplus.jar!/locale/sq/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sq/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/sq/global.properties b/chrome/adblockplus.jar!/locale/sq/global.properties
index 9aacf46..0607508 100644
--- a/chrome/adblockplus.jar!/locale/sq/global.properties
+++ b/chrome/adblockplus.jar!/locale/sq/global.properties
@@ -1,53 +1,8 @@
-default_dialog_title=Adblock Plus
-action0_tooltip=Klikoni ketu per te hapur menune kontekstuale, klikoni me butonin e mesit te mausit per ta aktivizuar/ç'aktivizuar.
-action1_tooltip=Klikoni per te hapur/mbyllur objektet e bllokueshme, klikoni me butonin e mesit te mausit per ta aktivizuar/ç'aktivizuar.
-action2_tooltip=Klikoni per te hapur parametrat, klikoni me butonin e mesit te mausit per ta aktivizuar/ç'aktivizuar.
 action3_tooltip=Aktivizim/çaktivizo Adblock Plus.
 disabled_tooltip=Adblock Plus është ç'aktiv.
-active_tooltip=Adblock Plus eshte aktivm, jane ne perdorim ?1? abonime filtrash dhe ?2? filtra personale.
 whitelisted_tooltip=Adblock Plus është aktiv por i pasivizuar në këtë faqe.
 blocked_count_tooltip=?1?jasht nga ?2?
-blocked_count_addendum=(gjithashtu te lejuar: ?1?, fshehur: ?2?)
 no_blocking_suggestions=S'ka elemente bllokuese në këtë faqe
-whitelisted_page=Adblock Plus eshte ç'aktivizuar per faqen aktuale
-whitelist_description=Rregullat personale të përjashtimit
-filterlist_description=Rregullat personale të bllokimit
-invalid_description=Rregullat personale jo valide
-elemhide_description=Rregullat personale të fshehjes së elementeve
-subscription_description=Filtro abonimet:
-subscription_wrong_version=Disa filtra ne kete abonim kane nevoje per Adblock Plus ?1? qe te punojne siç duhet.
-subscription_source=Burimi:
-subscription_status=Gjendja:
-subscription_status_autodownload=Freskimi automatik
-subscription_status_manualdownload=Freskimi manual
-subscription_status_externaldownload=Freskuar nga jashtë (shtesë tjetër)
-subscription_status_lastdownload=Shkarkimi i fundit:
-subscription_status_lastdownload_inprogress=Duke u shkarkuar...
-subscription_status_lastdownload_unknown=N/D
-remove_subscription_warning=Jeni i sigurt qe deshironi te hiqni kete abonim?
-import_filters_wrong_version=Kujdes: disa nga filtrat ne kete liste kane nevoje per Adblock Plus ?1? qe te punojne siç duhet. Ndoshta ju duhet te merrni versionin me te fundit te Adblock Plus perpara se te importoni kete liste.
-import_filters_warning=Deshironi te mbivendosni filtrat tuaj aktuale apo te shtoni filtrat e rinj ne fund te listes?
-import_filters_title=Importo filtrues
-export_filters_title=Eksporto filtrues
-invalid_filters_file=Ky nuk eshte skedar i vlefshem Adblock Plus.
-filters_write_error=Pati nje gabim gjate shkrimit te filtrave ne skedar. Ju lutem sigurohuni qe skedari nuk eshte i mbrojtur per shkrimin dhe qe te mos jete i hapur ne ndonje aplikacion tjeter.
-clearall_warning=Jeni i sigurt qe deshironi te hiqni te gjithe filtrat nga lista?
-resethitcounts_warning=Jeni i sigurt qe deshironi te zeroni numerimin e vizitave per te gjithe filtrat? Shenim: ky veprim nuk mund te zhbehet.
-resethitcounts_selected_warning=Jeni i sigurt qe deshironi te zeroni numerimin e vizitave per filtrat e perzgjedhur? Shenim: ky veprim nuk mund te zhbehet.
-filter_regexp_tooltip=Ky filter eshte ose nje shprehje e rregullt ose shume e shkurter per tu bere optimal. Shume nga keto lloj filtrash mund te ngadalesojne lundrimin tuaj ne internet.
-filter_elemhide_duplicate_id=Vetem nje ID elementi qe do te fshihet mund te percaktohet
-filter_elemhide_nocriteria=Nuk eshte percaktuar asnje kriter per te njohur elementin i cili do te fshihet
-subscription_notAdded_warning=Ju nuk keni shtuar abonim ne filtra. Pa asnje abonim ne filtra juve do ju duhet te shtoni filtra Adblock Plus manualisht.
-subscription_notAdded_warning_addendum=Deshironi te vazhdoni?
-subscription_invalid_location=Vendndodhja e listes se filtra nuk eshte as nje URL e sakte e as nje emer skedari i sakte.
-synchronize_invalid_url=Gabim, nuk eshte adrese e vlefshme
-synchronize_connection_error=Gabim, shkarkim i pamundur
-synchronize_invalid_data=Gabim, liste filtrash e pavlefshme
-synchronize_checksum_mismatch=Gabim, mosperputhje e kontrollit (checksum)
-synchronize_ok=Sukses
-overwrite=Rishkruaj
-append=Shto
-new_filter_group_title=Filtrues i ri
 type_label_other=tjera
 type_label_script=skripta
 type_label_image=figura
@@ -56,15 +11,29 @@ type_label_object=objekti
 type_label_subdocument=ndarja
 type_label_document=dokumenti
 type_label_elemhide=fshehur
-type_label_xbl=XBL e detyrueshme
-type_label_ping=ping lidhje
 type_label_xmlhttprequest=kerkimi për XML
-type_label_object_subrequest=nen-kerkese objekti
-type_label_dtd=DTD
-type_label_media=tingull/video
+type_label_media=audio/video
 type_label_font=shkronjat
-fennec_status_enabled=Adblock Plus eshte aktiv.
-fennec_status_disabled=Adblock Plus eshte jo aktiv.
-fennec_status_enabled_site=Adblock Plus eshte aktiv ne ?1?.
-fennec_status_disabled_site=Adblock Plus eshte jo aktiv ne ?1?.
-sync_engine_title=Te dhenat e Adblock Plus
+fennec_status_enabled_site=Adblock Plus is enabled on ?1?.
+filter_elemhide_nocriteria=No criteria specified to recognize the element to be hidden
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+filter_regexp_tooltip=This filter is either a regular expression or too short to be optimized. Too many of these filters might slow down your browsing.
+fennec_status_disabled_site=Adblock Plus is disabled on ?1?.
+action0_tooltip=Click to bring up context menu, middle-click to enable/disable.
+whitelisted_page=Adblock Plus has been disabled for the current page
+fennec_status_enabled=Adblock Plus is enabled.
+action1_tooltip=Click to open/close blockable items, middle-click to enable/disable.
+active_tooltip=Adblock Plus is enabled, ?1? filter subscription(s) and ?2? custom filter(s) in use.
+type_label_object_subrequest=object subrequest
+whitelistGroup_title=Exception Rules
+filter_elemhide_duplicate_id=Only one ID of the element to be hidden can be specified
+action2_tooltip=Click to open preferences, middle-click to enable/disable.
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+blocked_count_addendum=(also whitelisted: ?1?, hidden: ?2?)
+subscription_invalid_location=Filter list location is neither a valid URL nor a valid file name.
+remove_subscription_warning=Do you really want to remove this subscription?
+fennec_status_disabled=Adblock Plus is disabled.
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
+default_dialog_title=Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/sq/overlay.dtd b/chrome/adblockplus.jar!/locale/sq/overlay.dtd
index f1c5785..4fa2074 100644
--- a/chrome/adblockplus.jar!/locale/sq/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/sq/overlay.dtd
@@ -1,27 +1,42 @@
 <!ENTITY status.tooltip "Gjendja:">
-<!ENTITY blocked.tooltip "Artikuj te bllokuar ne kete faqe:">
 <!ENTITY filters.tooltip "Filtruesit më aktivë:">
 <!ENTITY menuitem.label "Parapëlqimet e Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Gjërat e bllokuara">
 <!ENTITY context.image.label "Adblock Plus: Figurat e bllokuara">
 <!ENTITY context.object.label "Adblock Plus: Objektet e bllokuara">
 <!ENTITY context.frame.label "Adblock Plus: Pjesët e bllokuara">
-<!ENTITY context.media.label "Adblock Plus: Bllokim audio/video">
 <!ENTITY context.removeWhitelist.label "Adblock Plus: Rilejo në këtë faqe">
-<!ENTITY sidebar.title "Artikuj qe mund te bllokohen ne kete faqe">
-<!ENTITY sendReport.label "Raportoni probleme ne kete faqe">
-<!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Parapëlqimet">
-<!ENTITY settings.accesskey "P">
 <!ENTITY opensidebar.label "Hap elementet bllokuese">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "Mbyll elementet bllokuese">
 <!ENTITY closesidebar.accesskey "B">
 <!ENTITY whitelist.site.label "Çaktivizo në ?1?">
 <!ENTITY whitelist.page.label "Çaktivizo vetëm në këtë faqe">
-<!ENTITY disable.label "Blloko gjithandej">
-<!ENTITY recommend.label "Na rekomandoni ne Facebook">
+<!ENTITY options.label "Mundësitë">
+<!ENTITY options.accesskey "O">
+<!ENTITY showintoolbar.accesskey "B">
+<!ENTITY showinstatusbar.accesskey "S">
+<!ENTITY objecttabs.accesskey "T">
 <!ENTITY objecttab.title "Blloko">
-<!ENTITY objecttab.tooltip "Klikoni ketu per te bllokuar kete objekt me Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY disable.label "Disable everywhere">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY sync.accesskey "c">
+<!ENTITY objecttabs.label "Show tabs on Flash and Java">
+<!ENTITY objecttab.tooltip "Click here to block this object with Adblock Plus">
+<!ENTITY sendReport.accesskey "R">
+<!ENTITY sendReport.label "Report issue on this page">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY blocked.tooltip "Blocked items on this page:">
+<!ENTITY showinstatusbar.label "Show in status bar">
+<!ENTITY sidebar.title "Blockable items on current page">
+<!ENTITY sync.label "Sync Adblock Plus settings">
+<!ENTITY showintoolbar.label "Show in toolbar">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY context.media.label "Adblock Plus: Block audio/video">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/sq/settings.dtd b/chrome/adblockplus.jar!/locale/sq/settings.dtd
deleted file mode 100644
index e4fadc7..0000000
--- a/chrome/adblockplus.jar!/locale/sq/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Parapëlqimet e Adblock Plus">
-<!ENTITY filters.label "Filtruesit">
-<!ENTITY filters.accesskey "L">
-<!ENTITY add.label "Vendos filtrues">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "Shto abonim ne filter">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "Rifresko te gjitha abonimet">
-<!ENTITY synchsubscriptions.accesskey "D">
-<!ENTITY import.label "Importo filtrues">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "Eksporto filtruesit ekzistues">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "Largo të gjithë filtruesit ekxistues">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "Rishkruaj statistikat">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Redakto">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "Kopjo-largo">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "Kopjo">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Hedh">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "Fshije">
-<!ENTITY remove.accesskey "F">
-<!ENTITY menu.find.label "Kërko">
-<!ENTITY menu.find.accesskey "O">
-<!ENTITY menu.findagain.label "Kërko përsëri">
-<!ENTITY menu.findagain.accesskey "G">
-<!ENTITY view.label "Shih">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "Radhit sipas">
-<!ENTITY sort.accesskey "R">
-<!ENTITY sort.none.label "Pa radhitur">
-<!ENTITY sort.none.accesskey "P">
-<!ENTITY sort.ascending.label "A > Z radhitje">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A radhitje">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Mundësitë">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "Aktivizo Adblock Plus">
-<!ENTITY enable.accesskey "N">
-<!ENTITY showintoolbar.label "Afisho ne shiritin e mjeteve">
-<!ENTITY showintoolbar.accesskey "B">
-<!ENTITY showinstatusbar.label "Afisho ne shiritin e gjendjes">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "Afisho skedat ne Flash dhe Java">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "Mblidhi elementet e bllokuar">
-<!ENTITY collapse.accesskey "L">
-<!ENTITY sync.label "Sinkronizo parametrat e Adblock Plus">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "Ndihmë">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "Fillo">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "Pyetje e zakonshme">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Duke shkruar filtruesit e Adblock Plus">
-<!ENTITY filterdoc.accesskey "R">
-<!ENTITY about.label "Rreth Adblock Plus">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "Filtrat e meposhtem percaktojne cilat adresa duhet te bllokohen dhe cilat duhet te lejohen:">
-<!ENTITY filter.column "Rregulla e filtrimit">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Filtruesit e ngadalshëm">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "Aktivizo">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "Shtypje">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "Shtypja e fundit">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Redakto filtruesin">
-<!ENTITY context.resethitcount.label "Zero statistikat e vizitave per filtrin">
-<!ENTITY context.synchsubscription.label "Rifresko abonimin tani">
-<!ENTITY context.editsubscription.label "Modifiko abonimin">
-<!ENTITY context.moveup.label "Zhvendos filtruesin sipër">
-<!ENTITY context.movedown.label "Zhvendos filtruesin poshtë">
-<!ENTITY context.movegroupup.label "Zhvendos grupin sipër">
-<!ENTITY context.movegroupdown.label "Zhvendos grupin poshtë">
-<!ENTITY context.enable.label "Aktivizo">
-<!ENTITY context.disable.label "Ç'aktivizoj">
-<!ENTITY apply.label "Ruaji">
-<!ENTITY apply.accesskey "p">
-<!ENTITY fennec.subscription.label "Abonim ne filter">
diff --git a/chrome/adblockplus.jar!/locale/sq/sidebar.dtd b/chrome/adblockplus.jar!/locale/sq/sidebar.dtd
index f1ef281..87d9621 100644
--- a/chrome/adblockplus.jar!/locale/sq/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/sq/sidebar.dtd
@@ -1,18 +1,12 @@
-<!ENTITY detached.title "Adblock Plus: Artikuj qe mund te bllokohen (shekputur)">
-<!ENTITY detach.label "Shkeput">
-<!ENTITY reattach.label "Ri-bashkoni">
 <!ENTITY search.label "Kërko">
-<!ENTITY search.accesskey "K">
+<!ENTITY search.accesskey "S">
 <!ENTITY type.label "Lloji">
 <!ENTITY address.label "Adresa">
 <!ENTITY filter.label "Filtruesi">
 <!ENTITY state.label "Gjendja">
 <!ENTITY size.label "Madhësia">
 <!ENTITY docDomain.label "Burimi i dokumentit">
-<!ENTITY docDomain.thirdParty "(pale e trete)">
-<!ENTITY docDomain.firstParty "(pala kryesore)">
 <!ENTITY noitems.label "S'ka elemente bllokuese">
-<!ENTITY whitelisted.label "Faqja e listes se lejimit">
 <!ENTITY tooltip.address.label "Adresa:">
 <!ENTITY tooltip.type.label "Lloji:">
 <!ENTITY tooltip.type.blocked "(bllokuar)">
@@ -20,16 +14,23 @@
 <!ENTITY tooltip.size.label "Madhësia:">
 <!ENTITY tooltip.docDomain.label "Burimi i dokumentit:">
 <!ENTITY tooltip.filter.label "Filtruesi efektiv:">
-<!ENTITY tooltip.filter.disabled "(bllokuar)">
 <!ENTITY tooltip.filterSource.label "Burimi i filtruesit:">
 <!ENTITY context.block.label "Blloko këtë send">
 <!ENTITY context.editfilter.label "Vendos filtruesin në veprim">
-<!ENTITY context.whitelist.label "Shto rregull perjashtimi per artikullin">
 <!ENTITY context.disablefilter.label "Çaktivizo filtruesin ?1?">
 <!ENTITY context.enablefilter.label "Ri mundëso filtruesin ?1?">
 <!ENTITY context.disablefilteronsite.label "Pamundëso filtruesin në ?1?">
 <!ENTITY context.open.label "Hape një një lidhje të re">
-<!ENTITY context.flash.label "Pulso bordurat e artikullit">
 <!ENTITY context.copy.label "Kopjo adresën e elementit">
 <!ENTITY context.copyFilter.label "Kopjo filtruesin">
 <!ENTITY context.selectAll.label "Selekto të gjitha">
+<!ENTITY context.flash.label "Flash item's borders">
+<!ENTITY reattach.label "Reattach">
+<!ENTITY docDomain.thirdParty "(third party)">
+<!ENTITY filterSource.label "Filter source">
+<!ENTITY detach.label "Detach">
+<!ENTITY whitelisted.label "Whitelisted page">
+<!ENTITY detached.title "Adblock Plus: Blockable items (detached)">
+<!ENTITY docDomain.firstParty "(first party)">
+<!ENTITY tooltip.filter.disabled "(disabled)">
+<!ENTITY context.whitelist.label "Add exception rule for item">
diff --git a/chrome/adblockplus.jar!/locale/sq/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/sq/subscriptionSelection.dtd
index a72e04a..3b427d6 100644
--- a/chrome/adblockplus.jar!/locale/sq/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/sq/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
-<!ENTITY dialog.title "Shto abonim filtri ne Adblock Plus">
-<!ENTITY dialog.title.edit "Modifiko abonim filtri">
-<!ENTITY description.newInstall "Adblock Plus do te jete me efikas nese ju shtoni abonime ne filtra. Abonimet ne filtra jane dhene falas nga perdorues te tjere te Adblock Plus. Abonimi me i pershtatshem per gjuhen tuaj eshte zgjedhur.">
-<!ENTITY subscriptionSelector.label "Ju lutem zgjidhni nje abonim ne filter nga lista:">
-<!ENTITY viewList.label "Shiko filtrat">
-<!ENTITY visitHomepage.label "Vizito  faqen web">
-<!ENTITY addSubscription.label "Shto abonim">
-<!ENTITY saveSubscription.label "Ruaj abonimin">
-<!ENTITY other.label "Shto nje abonim tjeter">
-<!ENTITY other.accesskey "J">
-<!ENTITY list.download.failed "Adblock Plus nuk arriti te gjeje listen e abonimeve.">
-<!ENTITY list.download.retry "Provoni perseri">
-<!ENTITY list.download.website "Shikoni faqen web">
-<!ENTITY fromWeb.description "Ju lutem konfirmoni qe ju deshironi te shtoni kete abonim ne filter. Ju mund te ndryshoni titullin ose vendndodhjen e abonimit perpara se ta shtoni ate.">
-<!ENTITY edit.description "Ju mund te ndryshoni titullin e abonimit ose vendndodhjen sipas deshires.">
-<!ENTITY external.description "Ky eshte nje abonim ne nje filter te jashtem; do te marre te dhenat me te fundit nga moduli i cili e krijoi kete abonim.">
-<!ENTITY title.label "Titulli i abonimit:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Vendi i listës së filtruesit">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Fresko Automatikisht">
-<!ENTITY autodownload.accesskey "F">
-<!ENTITY supplementMessage "Abonimi ne filter eshte menduar qe te perdoret me abonimin "?1?" te cilin ju nuk jeni duke e perdorur aktualisht.">
-<!ENTITY addMain.label "Shtoje edhe abonimin "?1?" gjithashtu">
+<!ENTITY subscriptionSelector.label "Please choose a filter subscription from the list:">
+<!ENTITY addMain.label "Add filter subscription &quot;?1?&quot; as well">
 <!ENTITY addMain.accesskey "s">
+<!ENTITY list.download.failed "Adblock Plus failed to retrieve the list of subscriptions.">
+<!ENTITY list.download.retry "Try again">
+<!ENTITY title.label "Subscription title:">
+<!ENTITY list.download.website "View website">
+<!ENTITY supplementMessage "This filter subscription is meant to be used with the filter subscription &quot;?1?&quot; which you are not using yet.">
+<!ENTITY viewList.label "View filters">
+<!ENTITY visitHomepage.label "Visit home page">
+<!ENTITY addSubscription.label "Add subscription">
+<!ENTITY dialog.title "Add Adblock Plus filter subscription">
+<!ENTITY fromWeb.description "Please confirm that you want to add this filter subscription. You can change the subscription title or location before adding it.">
diff --git a/chrome/adblockplus.jar!/locale/sr/about.dtd b/chrome/adblockplus.jar!/locale/sr/about.dtd
index 573710c..2a061c4 100644
--- a/chrome/adblockplus.jar!/locale/sr/about.dtd
+++ b/chrome/adblockplus.jar!/locale/sr/about.dtd
@@ -1,7 +1,6 @@
 <!ENTITY dialog.title "О Adblock Plus-у">
 <!ENTITY version.title "издање">
-<!ENTITY description "Adblock Plus вам дозвољава да изаберете што желите да видите на мрежи.
-Више није потребно да преузимате све оне банере и рекламе. уколико их не желите... Ту је Adblock Plus!">
+<!ENTITY description "Adblock Plus вам дозвољава да изаберете што желите да видите на мрежи.nnnВише није потребно да преузимате све оне банере и рекламе. уколико их не желите... Ту је Adblock Plus!">
 <!ENTITY homepage.label "матична страница:">
 <!ENTITY author.label "Аутор:">
 <!ENTITY contributors.label "Сарадници:">
diff --git a/chrome/adblockplus.jar!/locale/sr/composer.dtd b/chrome/adblockplus.jar!/locale/sr/composer.dtd
index 34c07bb..35a73db 100644
--- a/chrome/adblockplus.jar!/locale/sr/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/sr/composer.dtd
@@ -29,9 +29,7 @@
 <!ENTITY options.label "Опције">
 <!ENTITY domainRestriction.label "Ограничи на домен:">
 <!ENTITY domainRestriction.accesskey "д">
-<!ENTITY domainRestriction.help "Наведите један или више домена раздвојених знаком "|".
-Филтер ће бити употребљен једино за ове домене.
-Знак "~" испред домена значи да ће домен бити изузет од филтрирања.">
+<!ENTITY domainRestriction.help "Наведите један или више домена раздвојених знаком "|".nnnФилтер ће бити употребљен једино за ове домене.nnЗнак "~" испред домена значи да ће домен бити изузет од филтрирања.">
 <!ENTITY firstParty.label "Само са ове адресе">
 <!ENTITY firstParty.accesskey "в">
 <!ENTITY thirdParty.label "Само са других адреса">
diff --git a/chrome/adblockplus.jar!/locale/sr/filters.dtd b/chrome/adblockplus.jar!/locale/sr/filters.dtd
new file mode 100644
index 0000000..e67a2fc
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sr/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Додај претплату на филтер">
+<!ENTITY addSubscriptionOther.label "Додај другу претплату">
+<!ENTITY subscription.lastDownload.label "Последње преузимање:">
+<!ENTITY subscription.lastDownload.inProgress "Преузимање...">
+<!ENTITY subscription.lastDownload.unknown "Непознато">
+<!ENTITY subscription.lastDownload.invalidURL "Неуспело, неисправна адреса">
+<!ENTITY subscription.lastDownload.connectionError "Неуспело, грешка у преузимању">
+<!ENTITY subscription.lastDownload.invalidData "Неуспело, није листа филтера">
+<!ENTITY subscription.lastDownload.checksumMismatch "Неуспело, неслагање извештаја">
+<!ENTITY subscription.lastDownload.success "Успех">
+<!ENTITY addFilter.label "Додај филтер">
+<!ENTITY filter.cut.label "Исеци">
+<!ENTITY filter.copy.label "Умножи">
+<!ENTITY filter.paste.label "Убаци">
+<!ENTITY filter.delete.label "Избриши">
+<!ENTITY viewMenu.label "Приказ">
+<!ENTITY filter.column "Правило филтера">
+<!ENTITY filter.accesskey "ф">
+<!ENTITY slow.column "Спори филтери">
+<!ENTITY slow.accesskey "п">
+<!ENTITY enabled.column "Омогућен">
+<!ENTITY enabled.accesskey "н">
+<!ENTITY hitcount.column "Број погодака">
+<!ENTITY hitcount.accesskey "ј">
+<!ENTITY lasthit.column "Последњи погодак">
+<!ENTITY lasthit.accesskey "л">
+<!ENTITY sort.label "Сортирај по">
+<!ENTITY sort.accesskey "С">
+<!ENTITY sort.none.label "Непоређано">
+<!ENTITY sort.none.accesskey "е">
+<!ENTITY sort.ascending.label "Од А до Ш">
+<!ENTITY sort.ascending.accesskey "А">
+<!ENTITY sort.descending.label "Од Ш до А">
+<!ENTITY sort.descending.accesskey "Ш">
+<!ENTITY find.label "Нађи">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/sr/firstRun.dtd b/chrome/adblockplus.jar!/locale/sr/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sr/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/sr/global.properties b/chrome/adblockplus.jar!/locale/sr/global.properties
index 5119e70..3777f84 100644
--- a/chrome/adblockplus.jar!/locale/sr/global.properties
+++ b/chrome/adblockplus.jar!/locale/sr/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? од ?2?
 blocked_count_addendum=(такође проверено: ?1?, сакривено: ?2?)
 no_blocking_suggestions=На овој страни нема ставки које могу да се блокирају
 whitelisted_page=Adblock Plus је искључен за ову страну
-whitelist_description=Моји изузеци
-filterlist_description=Моја правила за блокирање реклама
-invalid_description=Моји неисправна правила
-elemhide_description=Моја правила за сакривање елемената
-subscription_description=Претплата на филтер:
-subscription_wrong_version=Неки филтери у овој претплати захтевају Adblock Plus ?1? да би радили исправно.
-subscription_source=Извор:
-subscription_status=Статус:
-subscription_status_autodownload=Аутоматски ажуриран
-subscription_status_manualdownload=Ручно ажуриран
-subscription_status_externaldownload=Ажуриран споља (неки други додатак)
-subscription_status_lastdownload=Последње преузимање:
-subscription_status_lastdownload_inprogress=Преузимање...
-subscription_status_lastdownload_unknown=Непознато
 remove_subscription_warning=Да ли заиста желите да уклоните ову претплату?
-import_filters_wrong_version=Упозорење: неки од филтера захтевају Adblock Plus ?1? да би исправно радили. Највероватније је потребно да пре увожења списка филтера ажурирате Adblock Plus.
-import_filters_warning=Да ли желите да замените тренутни списак филтера или да додате нове на крај списка?
-import_filters_title=Увези филтере
-export_filters_title=Извези филтере
-invalid_filters_file=Неисправна Adblock Plus датотека филтера.
-filters_write_error=Дошло је до грешке приликом записивања филтера у датотеку. Проверите да датотека није заштићена од измена или је коришћена од стране неког другог програма.
-clearall_warning=Да ли заиста желите да уклоните све филтере са списка?
-resethitcounts_warning=Да ли заиста желите да поништите бројач погодака за све филтере? Ова операција је неопозива!
-resethitcounts_selected_warning=Да ли заиста желите да поништите бројач погодака за изабране филтере? Ова операција је неопозива!
 filter_regexp_tooltip=Филтер је или регуларан израз или је прекратак за оптимизацију. Превише таквих филтера може успорити ваш прегледач интернет страна.
 filter_elemhide_duplicate_id=Да би сте сакрили елеменат, морате дати само један идентитет елемента
 filter_elemhide_nocriteria=Није пронађен критеријум за препознавање елемента који ће бити сакривен
-subscription_notAdded_warning=Нисте додали претплату на филтер. Без претплате на филтер морате да ручно додате филтере за Adblock Plus.
-subscription_notAdded_warning_addendum=Да ли желите да наставите?
 subscription_invalid_location=Неисправна адреса и име датотеке са списком филтера.
-synchronize_invalid_url=Неуспело, неисправна адреса
-synchronize_connection_error=Неуспело, грешка у преузимању
-synchronize_invalid_data=Неуспело, није листа филтера
-synchronize_checksum_mismatch=Неуспело, неслагање извештаја
-synchronize_ok=Успех
-overwrite=Препиши
-append=Додај
-new_filter_group_title=Нови филтер
 type_label_other=друго
 type_label_script=скрипт
 type_label_image=слика
@@ -56,15 +23,17 @@ type_label_object=објекат
 type_label_subdocument=оквир
 type_label_document=документ
 type_label_elemhide=сакривен
-type_label_xbl=везивни XBL
-type_label_ping=пинг везе
 type_label_xmlhttprequest=XML захтев
 type_label_object_subrequest=подзахтев за објектом
-type_label_dtd=DTD
 type_label_media=аудио/видео
 type_label_font=фонт
 fennec_status_enabled=Adblock Plus је укључен.
 fennec_status_disabled=Adblock Plus је искључен.
 fennec_status_enabled_site=Adblock Plus је укључен на ?1?.
 fennec_status_disabled_site=Adblock Plus је искључен на ?1?.
-sync_engine_title=Adblock Plus подаци
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/sr/overlay.dtd b/chrome/adblockplus.jar!/locale/sr/overlay.dtd
index e32b829..87c1a77 100644
--- a/chrome/adblockplus.jar!/locale/sr/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/sr/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Подешавања Adblock Plus-а">
 <!ENTITY menuitem.accesskey "в">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: ставке које се могу блокирати">
 <!ENTITY context.image.label "Блокирај слику">
 <!ENTITY context.object.label "Блокирај објекат">
 <!ENTITY context.frame.label "Блокирај оквир">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Ставке које се могу блокирати на овој страници">
 <!ENTITY sendReport.label "Пријави проблеме на овој страници">
 <!ENTITY sendReport.accesskey "И">
-<!ENTITY settings.label "Подешавања">
-<!ENTITY settings.accesskey "д">
 <!ENTITY opensidebar.label "Отвори ставке које се могу блокирати">
 <!ENTITY opensidebar.accesskey "т">
 <!ENTITY closesidebar.label "Затвори ставке које се могу блокирати">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Онемогући на ?1?">
 <!ENTITY whitelist.page.label "Онемогући само на овој страници">
 <!ENTITY disable.label "Онемогући свуда">
-<!ENTITY recommend.label "Препоручи нас на Фејсбуку">
+<!ENTITY options.label "Опције">
+<!ENTITY options.accesskey "п">
+<!ENTITY showintoolbar.label "Прикажи у траци са алаткама">
+<!ENTITY showintoolbar.accesskey "т">
+<!ENTITY showinstatusbar.label "Прикажи у статусној траци">
+<!ENTITY showinstatusbar.accesskey "с">
+<!ENTITY objecttabs.label "Прикажи језичак на Flash и Java објектима">
+<!ENTITY objecttabs.accesskey "к">
+<!ENTITY sync.label "Подешавања усклађивања Adblock Plus-а">
+<!ENTITY sync.accesskey "у">
 <!ENTITY objecttab.title "Блокирај">
 <!ENTITY objecttab.tooltip "Кликните овде да бисте блокирали објекат помоћу Adblock Plus-а">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/sr/settings.dtd b/chrome/adblockplus.jar!/locale/sr/settings.dtd
deleted file mode 100644
index ac05e46..0000000
--- a/chrome/adblockplus.jar!/locale/sr/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Подешавања Adblock Plus-а">
-<!ENTITY filters.label "Филтери">
-<!ENTITY filters.accesskey "Ф">
-<!ENTITY add.label "Додај филтер">
-<!ENTITY add.accesskey "Д">
-<!ENTITY addsubscription.label "Додај претплату на филтер">
-<!ENTITY addsubscription.accesskey "п">
-<!ENTITY synchsubscriptions.label "Ажурирај све претплате">
-<!ENTITY synchsubscriptions.accesskey "р">
-<!ENTITY import.label "Увези филтере">
-<!ENTITY import.accesskey "у">
-<!ENTITY export.label "Извези прилагођене филтере">
-<!ENTITY export.accesskey "и">
-<!ENTITY clearall.label "Уклони све прилагођене филтере">
-<!ENTITY clearall.accesskey "к">
-<!ENTITY resethitcounts.label "Поништи статистику погодака">
-<!ENTITY resethitcounts.accesskey "с">
-<!ENTITY edit.label "Уређивање">
-<!ENTITY edit.accesskey "У">
-<!ENTITY cut.label "Исеци">
-<!ENTITY cut.accesskey "ц">
-<!ENTITY copy.label "Умножи">
-<!ENTITY copy.accesskey "м">
-<!ENTITY paste.label "Убаци">
-<!ENTITY paste.accesskey "б">
-<!ENTITY remove.label "Избриши">
-<!ENTITY remove.accesskey "ш">
-<!ENTITY menu.find.label "Нађи">
-<!ENTITY menu.find.accesskey "н">
-<!ENTITY menu.findagain.label "Тражи поново">
-<!ENTITY menu.findagain.accesskey "Т">
-<!ENTITY view.label "Приказ">
-<!ENTITY view.accesskey "р">
-<!ENTITY sort.label "Сортирај по">
-<!ENTITY sort.accesskey "С">
-<!ENTITY sort.none.label "Непоређано">
-<!ENTITY sort.none.accesskey "е">
-<!ENTITY sort.ascending.label "Од А до Ш">
-<!ENTITY sort.ascending.accesskey "А">
-<!ENTITY sort.descending.label "Од Ш до А">
-<!ENTITY sort.descending.accesskey "Ш">
-<!ENTITY options.label "Опције">
-<!ENTITY options.accesskey "п">
-<!ENTITY enable.label "Омогући Adblock Plus">
-<!ENTITY enable.accesskey "О">
-<!ENTITY showintoolbar.label "Прикажи у траци са алаткама">
-<!ENTITY showintoolbar.accesskey "т">
-<!ENTITY showinstatusbar.label "Прикажи у статусној траци">
-<!ENTITY showinstatusbar.accesskey "с">
-<!ENTITY objecttabs.label "Прикажи језичак на Flash и Java објектима">
-<!ENTITY objecttabs.accesskey "к">
-<!ENTITY collapse.label "Сажми блокиране елементе">
-<!ENTITY collapse.accesskey "б">
-<!ENTITY sync.label "Подешавања усклађивања Adblock Plus-а">
-<!ENTITY sync.accesskey "у">
-<!ENTITY help.label "Помоћ">
-<!ENTITY help.accesskey "ћ">
-<!ENTITY gettingStarted.label "Како почети">
-<!ENTITY gettingStarted.accesskey "К">
-<!ENTITY faq.label "Најчешће постављана питања">
-<!ENTITY faq.accesskey "Н">
-<!ENTITY filterdoc.label "Писање филтера за Adblock Plus">
-<!ENTITY filterdoc.accesskey "P">
-<!ENTITY about.label "О Adblock Plus-у">
-<!ENTITY about.accesskey "О">
-<!ENTITY description "Следећи филтери одређују које ће адресе бити блокиране, а које дозвољене:">
-<!ENTITY filter.column "Правило филтера">
-<!ENTITY filter.accesskey "ф">
-<!ENTITY slow.column "Спори филтери">
-<!ENTITY slow.accesskey "п">
-<!ENTITY enabled.column "Омогућен">
-<!ENTITY enabled.accesskey "н">
-<!ENTITY hitcount.column "Број погодака">
-<!ENTITY hitcount.accesskey "ј">
-<!ENTITY lasthit.column "Последњи погодак">
-<!ENTITY lasthit.accesskey "л">
-<!ENTITY context.edit.label "Уреди филтер">
-<!ENTITY context.resethitcount.label "Поништи статистику о броју погодака">
-<!ENTITY context.synchsubscription.label "Ажурирај претплату">
-<!ENTITY context.editsubscription.label "Уреди претплату">
-<!ENTITY context.moveup.label "Премести филтер навише">
-<!ENTITY context.movedown.label "Премести филтер наниже">
-<!ENTITY context.movegroupup.label "Премести групу навише">
-<!ENTITY context.movegroupdown.label "Премести групу наниже">
-<!ENTITY context.enable.label "Укључи">
-<!ENTITY context.disable.label "Искључи">
-<!ENTITY apply.label "Примени">
-<!ENTITY apply.accesskey "и">
-<!ENTITY fennec.subscription.label "Претплата на филтере">
diff --git a/chrome/adblockplus.jar!/locale/sr/sidebar.dtd b/chrome/adblockplus.jar!/locale/sr/sidebar.dtd
index 5b86553..c4e68e8 100644
--- a/chrome/adblockplus.jar!/locale/sr/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/sr/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Умножи адресу ставке">
 <!ENTITY context.copyFilter.label "Умножи филтер">
 <!ENTITY context.selectAll.label "Изабери све">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/sr/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/sr/subscriptionSelection.dtd
index 36dee79..924ec73 100644
--- a/chrome/adblockplus.jar!/locale/sr/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/sr/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Претплата на филтере Adblock Plus-а">
-<!ENTITY dialog.title.edit "Уређивање претплате на филтер">
-<!ENTITY description.newInstall "Adblock Plus ће бити најучинковитији ако додате претплату на филтер. Претплате на филтере бесплатно омогућавају други корисници Adblock Plus-а. Одабрана је претплата која је најприкладнија вашем језику.">
 <!ENTITY subscriptionSelector.label "Изаберите једну претплату на филтер са списка:">
 <!ENTITY viewList.label "Погледај филтере">
 <!ENTITY visitHomepage.label "Посети матичну страницу">
 <!ENTITY addSubscription.label "Додај претплату">
-<!ENTITY saveSubscription.label "Сачувај претплату">
-<!ENTITY other.label "Додај другу претплату">
-<!ENTITY other.accesskey "д">
 <!ENTITY list.download.failed "Adblock Plus није успео да набави нови списак претплата.">
 <!ENTITY list.download.retry "Покушај поново">
 <!ENTITY list.download.website "Посети интернетску страницу">
 <!ENTITY fromWeb.description "Потврдите да желите додати претплату на овај филтерт">
-<!ENTITY edit.description "По потреби, можете да промените назив или локацију претплате.">
-<!ENTITY external.description "Ово је претплата на спољни филтер; биће ажуриран са додатком који је направио ову претплату.">
 <!ENTITY title.label "Назив претплате:">
 <!ENTITY title.accesskey "Н">
 <!ENTITY location.label "Локација списка са филтерима:">
 <!ENTITY location.accesskey "Л">
-<!ENTITY autodownload.label "Аутоматско ажурирање">
-<!ENTITY autodownload.accesskey "А">
 <!ENTITY supplementMessage "Ова претплата на филтер је предвиђена за коришћење са филтером „?1?” који још увек не користите.">
 <!ENTITY addMain.label "Додај и претплату на филтер „?1?”">
 <!ENTITY addMain.accesskey "о">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/composer.dtd b/chrome/adblockplus.jar!/locale/sv-SE/composer.dtd
index 6efdba9..e78b773 100644
--- a/chrome/adblockplus.jar!/locale/sv-SE/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/sv-SE/composer.dtd
@@ -14,7 +14,7 @@
 <!ENTITY type.whitelist.accesskey "u">
 <!ENTITY pattern.label "Sök efter mönster">
 <!ENTITY pattern.explanation "Mönster är en del av en adress, symbolen * är jokertecken. Filtret används endast på adresser som matchar mönstret.">
-<!ENTITY regexp.warning "Mönstret du angivit hanteras som ett reguljärt uttryck. Många reguljära uttryck kan göra din surfning långsam. Om du inte avsåg att använda reguljära uttruck, lägg till ett *-tecken i slutet av mönstret.">
+<!ENTITY regexp.warning "Mönstret du angivit hanteras som ett reguljärt uttryck. Många reguljära uttryck kan göra din surfning långsam. Om du inte avsåg att använda reguljära uttryck, lägg till en asterisk (*) i slutet av mönstret.">
 <!ENTITY shortpattern.warning "Detta mönster är för kort för optimal prestanda och för många sådana mönster kan göra din surfning långsam. Det rekommenderas att använda längre strängar för detta filter.">
 <!ENTITY match.warning "Mönstret du har angivit matchar inte längre adressen som skall blockeras/undantas och kommer därför inte att påverka den.">
 <!ENTITY custom.pattern.label "Eget:">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/filters.dtd b/chrome/adblockplus.jar!/locale/sv-SE/filters.dtd
new file mode 100644
index 0000000..6328d90
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sv-SE/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Filterinställningar för Adblock Plus">
+<!ENTITY subscriptions.tab.label "Filterprenumerationer">
+<!ENTITY filters.tab.label "Egna filter">
+<!ENTITY addSubscription.label "Lägg till filterprenumeration">
+<!ENTITY addSubscription.accesskey "p">
+<!ENTITY addSubscriptionAdd.label "Lägg till">
+<!ENTITY addSubscriptionCancel.label "Avbryt">
+<!ENTITY addSubscriptionOther.label "Lägg till en ny prenumeration">
+<!ENTITY noSubscriptions.text "
+	Du har inte lagt till några filterprenumerationer än. Adblock Plus kommer inte blockera
+	någonting utan filter. Använd "Lägg till filterprenumeration" för att
+	lägga till några.
+">
+<!ENTITY subscription.homepage.label "Webbplats">
+<!ENTITY subscription.external.label "Uppdateras av ett annat tillägg">
+<!ENTITY subscription.source.label "Filterlista">
+<!ENTITY subscription.enabled.label "Aktiverat">
+<!ENTITY subscription.lastDownload.label "Senast hämtat:">
+<!ENTITY subscription.lastDownload.inProgress "Hämtar…">
+<!ENTITY subscription.lastDownload.unknown "Okänt">
+<!ENTITY subscription.lastDownload.invalidURL "Ogiltig adress">
+<!ENTITY subscription.lastDownload.connectionError "Fel vid hämtning">
+<!ENTITY subscription.lastDownload.invalidData "Fel vid validering av filter">
+<!ENTITY subscription.lastDownload.checksumMismatch "Fel kontrollsumma">
+<!ENTITY subscription.lastDownload.success "Klart">
+<!ENTITY subscription.minVersion.warning "Denna filterprenumeration kräver en nyare version av Adblock Plus, du bör uppdatera till den senaste Adblock Plus-versionen.">
+<!ENTITY subscription.disabledFilters.warning "Vissa filter i denna prenumeration är inaktiverade.">
+<!ENTITY subscription.disabledFilters.enable "Aktivera inaktiverade filter">
+<!ENTITY subscription.actions.label "Åtgärder">
+<!ENTITY subscription.update.label "Uppdatera filter">
+<!ENTITY subscription.editTitle.label "Redigera rubrik">
+<!ENTITY subscription.delete.label "Ta bort">
+<!ENTITY subscription.showHideFilters.label "Visa/dölj filter">
+<!ENTITY subscription.moveUp.label "Flytta uppåt">
+<!ENTITY subscription.moveDown.label "Flytta nedåt">
+<!ENTITY acceptableAds.label "Tillåt icke störande reklam">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Läs mer">
+<!ENTITY addGroup.label "Lägg till filtergrupp">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+	Du har inga egna filter än.
+">
+<!ENTITY addFilter.label "Lägg till filter">
+<!ENTITY addFilter.accesskey "f">
+<!ENTITY filter.actions.label "Filteråtgärder">
+<!ENTITY filter.edit.label "Redigera">
+<!ENTITY filter.cut.label "Klipp ut">
+<!ENTITY filter.copy.label "Kopiera">
+<!ENTITY filter.paste.label "Klistra in">
+<!ENTITY filter.delete.label "Ta bort">
+<!ENTITY filter.selectAll.label "Markera alla">
+<!ENTITY filter.resetHitCounts.label "Återställ träffstatistik">
+<!ENTITY filter.moveUp.label "Flytta uppåt">
+<!ENTITY filter.moveDown.label "Flytta nedåt">
+<!ENTITY viewMenu.label "Visa">
+<!ENTITY filter.column "Filterregler">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "Långsamma filter">
+<!ENTITY slow.accesskey "l">
+<!ENTITY enabled.column "På">
+<!ENTITY enabled.accesskey "å">
+<!ENTITY hitcount.column "Träffar">
+<!ENTITY hitcount.accesskey "ä">
+<!ENTITY lasthit.column "Senaste träff">
+<!ENTITY lasthit.accesskey "r">
+<!ENTITY sort.label "Sortering">
+<!ENTITY sort.accesskey "t">
+<!ENTITY sort.none.label "Osorterad">
+<!ENTITY sort.none.accesskey "O">
+<!ENTITY sort.ascending.label "Sortera A > Ö">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Sortera Ö > A">
+<!ENTITY sort.descending.accesskey "Ö">
+<!ENTITY noGroupSelected.text "Du måste markera en filtergrupp innan dess filter kan visas.">
+<!ENTITY noFiltersInGroup.text "Den markerade gruppen är tom">
+<!ENTITY filters.remove.warning "Vill du verkligen ta bort alla markerade filter?">
+<!ENTITY backupButton.label "Säkerhetskopiera och Återställ">
+<!ENTITY backupButton.accesskey "Å">
+<!ENTITY backup.label "Skapa ny säkerhetskopia">
+<!ENTITY restore.default.label "Återställ säkerhetskopia from ?1?">
+<!ENTITY restore.own.label "Återställ egen säkerhetskopia">
+<!ENTITY backup.complete.title "Alla filter och prenumerationer">
+<!ENTITY backup.custom.title "Endast egna filter">
+<!ENTITY backup.error "Det uppstod ett fel vid skrivning av filter till filen. Säkerställ att filen inte är skrivskyddad eller används av ett annat program.">
+<!ENTITY restore.error "Filens data kunde inte bearbetas. Kanske är det här inte en Adblock Plus-säkerhetskopiefil?">
+<!ENTITY restore.complete.warning "Alla dina filterinställningar kommer att ersättas av innehållet i den valda filen. Vill du fortsätta?">
+<!ENTITY restore.custom.warning "Alla dina egna filter kommer att ersättas av innehållet i den valda filen. Vill du fortsätta?">
+<!ENTITY restore.minVersion.warning "Varning: Filen har skapats med en nyare version av Adblock Plus. Du bör uppdatera till den senaste Adblock Plus-versionen innan du återställer från denna fil.">
+<!ENTITY find.label "Sök">
+<!ENTITY find.accesskey "k">
+<!ENTITY close.label "Stäng">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/firstRun.dtd b/chrome/adblockplus.jar!/locale/sv-SE/firstRun.dtd
new file mode 100644
index 0000000..05ab5d0
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/sv-SE/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Installationen av Adblock Plus har slutförts">
+<!ENTITY confirmation "
+	Tack för att du installerar Adblock Plus. Från och med nu kan du börja blockera reklam.
+	Mycket nöje!">
+<!ENTITY advancedSection "Avancerade alternativ">
+<!ENTITY listSelection1 "
+	Följande filterlista har konfigurerats för att blockera reklam:
+">
+<!ENTITY noList "Ingen filterlista">
+<!ENTITY visitHomepage.label "Gå till listans webbplats">
+<!ENTITY acceptableAds "
+	Adblock Plus har också konfigurerats för att tillåta icke störande reklam.
+">
+<!ENTITY readMore.label "Läs mer om det här">
+<!ENTITY listSelection2 "
+	Du kan ändra detta val närsomhelst i [link]filterinställningarna[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/global.properties b/chrome/adblockplus.jar!/locale/sv-SE/global.properties
index b20d28d..e52e290 100644
--- a/chrome/adblockplus.jar!/locale/sv-SE/global.properties
+++ b/chrome/adblockplus.jar!/locale/sv-SE/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? av ?2?
 blocked_count_addendum=(undantagna: ?1?, dolda: ?2?)
 no_blocking_suggestions=Det finns inget att blockera på denna sida
 whitelisted_page=Adblock Plus är inaktiverat för denna sida
-whitelist_description=Mina regler för undantag
-filterlist_description=Mina regler för Adblock
-invalid_description=Mina ogiltiga regler
-elemhide_description=Mina regler för att dölja reklam
-subscription_description=Filterprenumeration:
-subscription_wrong_version=Vissa filter i denna prenumeration måste ha Adblock Plus ?1? installerat för att fungera.
-subscription_source=Källa:
-subscription_status=Status:
-subscription_status_autodownload=Uppdateras automatiskt
-subscription_status_manualdownload=Uppdateras manuellt
-subscription_status_externaldownload=Uppdateras av extern källa (annat tillägg)
-subscription_status_lastdownload=Senast nerladdat:
-subscription_status_lastdownload_inprogress=Laddar ner…
-subscription_status_lastdownload_unknown=Okänt
+newGroup_title=Ny filtergrupp
+whitelistGroup_title=Undantagsregler
+blockingGroup_title=Reklamblockeringsregler
+elemhideGroup_title=Elementdöljningsregler
 remove_subscription_warning=Vill du verkligen ta bort denna prenumeration?
-import_filters_wrong_version=Varning: Vissa filter i listan kräver Adblock Plus ?1? för bästa effekt. Du bör uppgradera till senaste versionen av Adblock Plus innan du importerar denna lista.
-import_filters_warning=Vill du ersätta nuvarande filter eller lägga till dom i listan?
-import_filters_title=Importera filter
-export_filters_title=Exportera filter
-invalid_filters_file=Ogiltig filterfil för Adblock Plus.
-filters_write_error=Ett fel uppstod vid skrivning till filen. Kontrollera att filen inte är upptagen av annat program eller skrivskyddad.
-clearall_warning=Vill du verkligen ta bort alla filter från listan?
-resethitcounts_warning=Vill du verkligen nollställa räknaren för alla filter?
-resethitcounts_selected_warning=Vill du verkligen nollställa räknaren för detta filter?
+clearStats_warning=Detta kommer att återställa all filterträffstatistik och inaktivera räkning av filterträffar. Vill du fortsätta?
 filter_regexp_tooltip=Detta filter är ett reguljärt uttryck eller för kort för optimal funktion. För många av dessa filter kan göra din surfning långsam.
 filter_elemhide_duplicate_id=Endast ett ID får anges för elementet som skall döljas
 filter_elemhide_nocriteria=Inga villkor för att gömma element har uppfyllts
-subscription_notAdded_warning=Ingen filterprenumeration lades till. Utan filterprenumeration måste filter läggas till manuellt.
-subscription_notAdded_warning_addendum=Vill du fortsätta ändå?
 subscription_invalid_location=Platsen du angivit är antingen ogiltig eller så har du angivit ett felaktigt filnamn.
-synchronize_invalid_url=Ogiltig adress
-synchronize_connection_error=Fel vid nerladdning
-synchronize_invalid_data=Fel vid validering av filter
-synchronize_checksum_mismatch=Fel kontrollsumma
-synchronize_ok=Klart
-overwrite=Ersätt
-append=Lägg till
-new_filter_group_title=Nytt filter
 type_label_other=annan
 type_label_script=skript
 type_label_image=bild
@@ -56,15 +28,12 @@ type_label_object=objekt
 type_label_subdocument=ram
 type_label_document=dokument
 type_label_elemhide=dold
-type_label_xbl=XBL-bindning
-type_label_ping=länk-ping
+type_label_popup=popupfönster
 type_label_xmlhttprequest=XML-förfrågan
 type_label_object_subrequest=objektunderförfrågan
-type_label_dtd=DTD
 type_label_media=ljud/video
-type_label_font=font
+type_label_font=teckensnitt
 fennec_status_enabled=Adblock Plus är aktiverat.
 fennec_status_disabled=Adblock Plus är inaktiverat.
 fennec_status_enabled_site=Adblock Plus är aktiverat för ?1?.
 fennec_status_disabled_site=Adblock Plus är inaktiverat för ?1?.
-sync_engine_title=Adblock Plus-data
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/overlay.dtd b/chrome/adblockplus.jar!/locale/sv-SE/overlay.dtd
index 436cc4a..88b923a 100644
--- a/chrome/adblockplus.jar!/locale/sv-SE/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/sv-SE/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Inställningar för Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Blockerbara objekt">
 <!ENTITY context.image.label "Adblock Plus: Blockera bild">
 <!ENTITY context.object.label "Adblock Plus: Blockera objekt">
 <!ENTITY context.frame.label "Adblock Plus: Blockera ram">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "Blockerbara objekt på denna sida">
 <!ENTITY sendReport.label "Rapportera problem på denna sida">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "Inställningar">
-<!ENTITY settings.accesskey "I">
+<!ENTITY filters.label "Filterinställningar">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "Visa lista över blockerbara objekt">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "Stäng listan över blockerbara objekt">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "Använd inte på ?1?">
 <!ENTITY whitelist.page.label "Använd inte på denna sida">
 <!ENTITY disable.label "Inaktivera för alla domäner">
-<!ENTITY recommend.label "Rekommendera oss på Facebook">
+<!ENTITY options.label "Alternativ">
+<!ENTITY options.accesskey "n">
+<!ENTITY contribute.label "Bidra till Adblock Plus">
+<!ENTITY showintoolbar.label "Visa i verktygsfältet">
+<!ENTITY showintoolbar.accesskey "f">
+<!ENTITY showinstatusbar.label "Visa i statusfältet">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "Visa i tilläggsfältet">
+<!ENTITY showinaddonbar.accesskey "f">
+<!ENTITY objecttabs.label "Visa flik vid Flash- och Java-reklam">
+<!ENTITY objecttabs.accesskey "V">
+<!ENTITY hideplaceholders.label "Dölj platshållare för blockerade element">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Räkna antalet filterträffar">
+<!ENTITY counthits.accesskey "t">
+<!ENTITY sync.label "Synkronisera Adblock Plus inställningar">
+<!ENTITY sync.accesskey "k">
 <!ENTITY objecttab.title "Blockera">
 <!ENTITY objecttab.tooltip "Klicka här för att blockera detta objekt med Adblock Plus">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/sendReport.dtd b/chrome/adblockplus.jar!/locale/sv-SE/sendReport.dtd
index 891c49b..74bfe1c 100644
--- a/chrome/adblockplus.jar!/locale/sv-SE/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/sv-SE/sendReport.dtd
@@ -5,8 +5,8 @@
 <!ENTITY typeSelector.heading "Välj problemtyp">
 <!ENTITY typeSelector.description "
 	Denna dialog kommer att guida dig igenom alla steg som krävs för att skicka in en problemrapport
-	för Adblock Plus. Först och främst måste du välja den typ av problem that you are experiencing
-	on denna sida:
+	för Adblock Plus. Först och främst måste du välja den typ av problem som du upplever
+	på denna sida:
 ">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus blockerar alltför mycket">
 <!ENTITY typeSelector.falsePositive.accesskey "m">
@@ -50,7 +50,7 @@
 	observerat har sannolikt ingenting att göra med Adblock Plus.
 ">
 <!ENTITY issues.nosubscriptions.description "
-	Du verkar inte prenumerara på något av de fördefinierade filterlistor som
+	Du verkar inte prenumerera på någon av de fördefinierade filterlistor som
 	automatiskt tar bort icke önskvärt innehåll från webbplatser.
 ">
 <!ENTITY issues.nosubscriptions.add.label "Lägg till filterprenumeration">
@@ -80,7 +80,7 @@
 <!ENTITY issues.override.label "Konfigurationen är korrekt, fortsätt med rapporten">
 <!ENTITY issues.override.accesskey "K">
 <!ENTITY issues.change.description "
-	Your configuration has been changed. Var vänlig uppdatera sidan för att testa ändringarna
+	Din konfiguration har ändrats. Var vänlig uppdatera sidan för att testa ändringarna
 	och skicka in en rapport om problemet inte har blivit löst trots förändringarna.
 ">
 <!ENTITY typeWarning.description "
@@ -128,10 +128,10 @@
 <!ENTITY data.label "Rapportdata:">
 <!ENTITY data.accesskey "p">
 <!ENTITY sendPage.heading "Skicka rapport">
-<!ENTITY sendPage.waitMessage "Var vänlig vänta medan Adblock Plus skickar ing din rapport.">
+<!ENTITY sendPage.waitMessage "Var vänlig vänta medan Adblock Plus skickar in din rapport.">
 <!ENTITY sendPage.confirmation "Din rapport har sparats. Du kan nå den på följande adress:">
 <!ENTITY sendPage.knownIssue "Problemet du rapporterade är antagligen redan känt. Mer information:">
-<!ENTITY sendPage.errorMessage "Ett försök att skicka rapporten misslyckades, med felkoden "?1?". Var vänlig säkerställ
+<!ENTITY sendPage.errorMessage "Det gick inte att skicka rapporten. Felkod: "?1?". Var vänlig säkerställ
 	att du är ansluten till Internet och försök sedan igen. Om problemet kvarstår, vänligen begär
 	hjälp i [link]Adblock Plus webbforum[/link].">
 <!ENTITY sendPage.retry.label "Skicka igen">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/settings.dtd b/chrome/adblockplus.jar!/locale/sv-SE/settings.dtd
deleted file mode 100644
index bd7ae79..0000000
--- a/chrome/adblockplus.jar!/locale/sv-SE/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Inställningar för Adblock Plus">
-<!ENTITY filters.label "Filter">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "Lägg till filter">
-<!ENTITY add.accesskey "ä">
-<!ENTITY addsubscription.label "Lägg till filterprenumeration">
-<!ENTITY addsubscription.accesskey "p">
-<!ENTITY synchsubscriptions.label "Uppdatera alla filter">
-<!ENTITY synchsubscriptions.accesskey "d">
-<!ENTITY import.label "Importera filter">
-<!ENTITY import.accesskey "I">
-<!ENTITY export.label "Exportera egna filter">
-<!ENTITY export.accesskey "E">
-<!ENTITY clearall.label "Ta bort alla egna filter">
-<!ENTITY clearall.accesskey "T">
-<!ENTITY resethitcounts.label "Nollställ statistik: Antal träffar">
-<!ENTITY resethitcounts.accesskey "r">
-<!ENTITY edit.label "Redigera">
-<!ENTITY edit.accesskey "R">
-<!ENTITY cut.label "Klipp ut">
-<!ENTITY cut.accesskey "K">
-<!ENTITY copy.label "Kopiera">
-<!ENTITY copy.accesskey "o">
-<!ENTITY paste.label "Klistra in">
-<!ENTITY paste.accesskey "l">
-<!ENTITY remove.label "Ta bort">
-<!ENTITY remove.accesskey "T">
-<!ENTITY menu.find.label "Sök">
-<!ENTITY menu.find.accesskey "S">
-<!ENTITY menu.findagain.label "Sök igen">
-<!ENTITY menu.findagain.accesskey "g">
-<!ENTITY view.label "Visa">
-<!ENTITY view.accesskey "s">
-<!ENTITY sort.label "Sortering">
-<!ENTITY sort.accesskey "t">
-<!ENTITY sort.none.label "Osorterad">
-<!ENTITY sort.none.accesskey "O">
-<!ENTITY sort.ascending.label "Sortera A > Ö">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Sortera Ö > A">
-<!ENTITY sort.descending.accesskey "Ö">
-<!ENTITY options.label "Alternativ">
-<!ENTITY options.accesskey "n">
-<!ENTITY enable.label "Adblock Plus på">
-<!ENTITY enable.accesskey "å">
-<!ENTITY showintoolbar.label "Visa i verktygsfält">
-<!ENTITY showintoolbar.accesskey "y">
-<!ENTITY showinstatusbar.label "Visa i statusfält">
-<!ENTITY showinstatusbar.accesskey "s">
-<!ENTITY objecttabs.label "Visa flik vid Flash- och Java-reklam">
-<!ENTITY objecttabs.accesskey "V">
-<!ENTITY collapse.label "Dölj blockerade element">
-<!ENTITY collapse.accesskey "l">
-<!ENTITY sync.label "Synkronisera Adblock Plus inställningar">
-<!ENTITY sync.accesskey "k">
-<!ENTITY help.label "Hjälp">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "Komma igång med Adblock Plus">
-<!ENTITY gettingStarted.accesskey "m">
-<!ENTITY faq.label "Vanliga frågor och svar">
-<!ENTITY faq.accesskey "f">
-<!ENTITY filterdoc.label "Sparar Adblock Plus-filter">
-<!ENTITY filterdoc.accesskey "r">
-<!ENTITY about.label "Om Adblock Plus">
-<!ENTITY about.accesskey "O">
-<!ENTITY description "Följande filter avgör vilka adresser som skall blockeras och vilka som skall tillåtas:">
-<!ENTITY filter.column "Filterregler">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "Långsamma filter">
-<!ENTITY slow.accesskey "l">
-<!ENTITY enabled.column "På">
-<!ENTITY enabled.accesskey "å">
-<!ENTITY hitcount.column "Träffar">
-<!ENTITY hitcount.accesskey "ä">
-<!ENTITY lasthit.column "Senaste träff">
-<!ENTITY lasthit.accesskey "r">
-<!ENTITY context.edit.label "Redigera filter">
-<!ENTITY context.resethitcount.label "Nollställ statistik: Antal träffar med filter">
-<!ENTITY context.synchsubscription.label "Uppdatera prenumeration nu">
-<!ENTITY context.editsubscription.label "Redigera prenumeration">
-<!ENTITY context.moveup.label "Flytta filter uppåt">
-<!ENTITY context.movedown.label "Flytta filter nedåt">
-<!ENTITY context.movegroupup.label "Flytta grupp uppåt">
-<!ENTITY context.movegroupdown.label "Flytta grupp nedåt">
-<!ENTITY context.enable.label "Aktivera">
-<!ENTITY context.disable.label "Inaktivera">
-<!ENTITY apply.label "Verkställ">
-<!ENTITY apply.accesskey "V">
-<!ENTITY fennec.subscription.label "Filterprenumeration">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/sidebar.dtd b/chrome/adblockplus.jar!/locale/sv-SE/sidebar.dtd
index 2a4ba8b..7210622 100644
--- a/chrome/adblockplus.jar!/locale/sv-SE/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/sv-SE/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Filter">
 <!ENTITY state.label "Tillstånd">
 <!ENTITY size.label "Storlek">
+<!ENTITY filterSource.label "Filterkälla">
 <!ENTITY docDomain.label "Dokumentkälla">
 <!ENTITY docDomain.thirdParty "(tredje part)">
 <!ENTITY docDomain.firstParty "(första part)">
diff --git a/chrome/adblockplus.jar!/locale/sv-SE/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/sv-SE/subscriptionSelection.dtd
index d0787e2..ff9c143 100644
--- a/chrome/adblockplus.jar!/locale/sv-SE/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/sv-SE/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
-<!ENTITY dialog.title "Lägg till Adblock Plus filterprenumeration">
-<!ENTITY dialog.title.edit "Ändra filterprenumeration">
-<!ENTITY description.newInstall "Adblock Plus är mest effektivt om du lägger till en filterprenumeration. Filterprenumerationer underhålls kostnadsfritt av andra användare. Den mest användbara prenumerationen för ditt språk har redan valts.">
+<!ENTITY dialog.title "Lägg till filterprenumeration för Adblock Plus">
 <!ENTITY subscriptionSelector.label "Var vänlig välj en filterprenumeration från listan:">
 <!ENTITY viewList.label "Visa filter">
 <!ENTITY visitHomepage.label "Besök webbsidan">
 <!ENTITY addSubscription.label "Lägg till filterprenumeration">
-<!ENTITY saveSubscription.label "Spara filterprenumeration">
-<!ENTITY other.label "Lägg till en ny prenumeration">
-<!ENTITY other.accesskey "L">
 <!ENTITY list.download.failed "Adblock Plus kunde inte hämta listan med filterprenumerationer.">
 <!ENTITY list.download.retry "Försök igen">
 <!ENTITY list.download.website "Visa webbsidan">
 <!ENTITY fromWeb.description "Var vänlig bekräfta att du vill lägga till denna filterprenumeration. Du kan ändra rubrik eller plats innan du lägger till den.">
-<!ENTITY edit.description "Om du vill kan du ändra rubrik eller plats för filterprenumerationen.">
-<!ENTITY external.description "Detta är en extern filterprenumeration och kommer uppdateras av tillägget som skapat den.">
 <!ENTITY title.label "Rubrik för prenumeration:">
 <!ENTITY title.accesskey "R">
 <!ENTITY location.label "Plats för filter:">
 <!ENTITY location.accesskey "f">
-<!ENTITY autodownload.label "Uppdatera automatiskt">
-<!ENTITY autodownload.accesskey "a">
 <!ENTITY supplementMessage "Denna filterprenumeration bör användas med filterprenumerationen "?1?", som för närvarande inte används.">
 <!ENTITY addMain.label "Lägg även till filterprenumerationen "?1?"">
 <!ENTITY addMain.accesskey "ä">
diff --git a/chrome/adblockplus.jar!/locale/th/filters.dtd b/chrome/adblockplus.jar!/locale/th/filters.dtd
new file mode 100644
index 0000000..5ccca22
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/th/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "เพิ่มนามข้างท้ายตัวกรอง">
+<!ENTITY addSubscriptionOther.label "เพิ่มนามข้างท้าย">
+<!ENTITY subscription.lastDownload.label "ดาวน์โหลดล่าสุด:">
+<!ENTITY subscription.lastDownload.inProgress "กำลังดาวน์โหลด...">
+<!ENTITY subscription.lastDownload.unknown "ไม่มี">
+<!ENTITY subscription.lastDownload.invalidURL "ล้มเหลว ไม่มีที่อยู่ที่ถูกต้อง">
+<!ENTITY subscription.lastDownload.connectionError "ล้มเหลว การดาวน์โหลดล้มเหลว">
+<!ENTITY subscription.lastDownload.invalidData "ล้มเหลว ไม่มีรายชื่อตัวกรองที่ถูกต้อง">
+<!ENTITY subscription.lastDownload.checksumMismatch "ล้มเหลว checksum จับผิดคู่">
+<!ENTITY subscription.lastDownload.success "สำเร็จ">
+<!ENTITY addFilter.label "เพิ่มตัวกรอง">
+<!ENTITY filter.cut.label "ตัด">
+<!ENTITY filter.copy.label "คัดลอก">
+<!ENTITY filter.paste.label "วาง">
+<!ENTITY filter.delete.label "ลบ">
+<!ENTITY viewMenu.label "มุมมอง">
+<!ENTITY filter.column "กฎตัวกรอง">
+<!ENTITY filter.accesskey "ต">
+<!ENTITY slow.column "ทำให้ตัวกรองช้าลง">
+<!ENTITY slow.accesskey "ง">
+<!ENTITY enabled.column "เปิดการใช้งาน">
+<!ENTITY enabled.accesskey "ป">
+<!ENTITY hitcount.column "นับ">
+<!ENTITY hitcount.accesskey "น">
+<!ENTITY lasthit.column "กดล่าสุด">
+<!ENTITY lasthit.accesskey "ล">
+<!ENTITY sort.label "จัดลำดับ">
+<!ENTITY sort.accesskey "จ">
+<!ENTITY sort.none.label "ไม่จัดลำดับ">
+<!ENTITY sort.none.accesskey "บ">
+<!ENTITY sort.ascending.label "จัดลำดับ A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "จัดลำดับ Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "ค้นหา">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/th/firstRun.dtd b/chrome/adblockplus.jar!/locale/th/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/th/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/th/global.properties b/chrome/adblockplus.jar!/locale/th/global.properties
index 25707b1..93fdcdf 100644
--- a/chrome/adblockplus.jar!/locale/th/global.properties
+++ b/chrome/adblockplus.jar!/locale/th/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? จาก ?2?
 blocked_count_addendum=(และยังมีบัญชีขาว ?1? อย่าง ซ่อนอยู่ ?2? อย่าง)
 no_blocking_suggestions=ไม่มีรายการที่บล็อกได้ในหน้าล่าสุด
 whitelisted_page=Adblock Plus ถูกปิดการใช้งานในหน้าล่าสุด
-whitelist_description=ข้อยกเว้น
-filterlist_description=ตัวกรองนักโฆษณา
-invalid_description=ตัวกรองไม่ถูกต้อง
-elemhide_description=กฎการซ่อนส่วนย่อย
-subscription_description=นามข้างท้ายตัวกรอง:
-subscription_wrong_version=ตัวกรองบางตัวในนามข้างท้ายนี้ต้องการ Adblock Plus ?1? เพื่อให้ทำงานได้ดี
-subscription_source=ต้นฉบับ:
-subscription_status=สถานะ:
-subscription_status_autodownload=อัปเดตอัตโนมัติแล้ว
-subscription_status_manualdownload=อัปเดตด้วยตัวเองแล้ว
-subscription_status_externaldownload=อัปเดตจากภายนอกแล้ว (ส่วนขยายอื่น)
-subscription_status_lastdownload=ดาวน์โหลดล่าสุด:
-subscription_status_lastdownload_inprogress=กำลังดาวน์โหลด...
-subscription_status_lastdownload_unknown=ไม่มี
 remove_subscription_warning=คุณแน่ใจหรือว่าต้องการลบนามข้างท้ายนี้
-import_filters_wrong_version=คำเตือน: ตัวกรองบางตัวในรายชื่อนี้ต้องการ Adblock Plus ?1? เพื่อใช้งานอย่างเหมาะสม คุณควรอัปเกรด Adblock Plus เป็นรุ่นล่าสุดก่อนนำเข้ารายชื่อนี้
-import_filters_warning=คุณต้องการแทนที่ตัวกรองล่าสุดหรือผนวกตัวกรองใหม่ที่ข้างล่างสุดของรายชื่อ
-import_filters_title=นำเข้าตัวกรอง
-export_filters_title=ส่งออกตัวกรอง
-invalid_filters_file=ไม่มีแฟ้มตัวกรอง Adblock Plus ที่ถูกต้อง
-filters_write_error=มีข้อผิดพลาดเมื่อกำลังเขียนตัวกรองไปยังแฟ้ม ขอให้แน่ใจว่าแฟ้มไม่ถูกป้องกันการเขียนหรือมีโปรแกรมอื่นใช้อยู่
-clearall_warning=คุณแน่ใจหรือว่าต้องการลบตัวกรองทั้งหมดจากรายชื่อ
-resethitcounts_warning=คุณแน่ใจหรือว่าต้องการเริ่มการนับใหม่สำหรับตัวกรองทั้งหมดกลับไปยังศูนย์ คำสั่งนี้ไม่สามารถย้อนกลับ!
-resethitcounts_selected_warning=คุณแน่ใจหรือว่าต้องการเริ่มการนับใหม่สำหรับตัวกรองที่เลือกกลับไปยังศูนย์ คำสั่งนี้ไม่สามารถย้อนกลับ!
 filter_regexp_tooltip=ตัวกรองนี้ก็เป็นการแสดงออกทั่วไปหรือสั้นเกินกว่าจะใช้ให้เหมาะสม ถ้ามีตัวกรองประเภทนี้มากเกินไปจะทำให้การเข้าเว็บช้าได้
 filter_elemhide_duplicate_id=มีเฉพาะรหัสประจำตัววัตถุเดียวเท่านั้นที่ซ่อนที่สามารถระบุได้
 filter_elemhide_nocriteria=ไม่มีเกณฑ์ที่ระบุที่จำวัตถุที่จะซ่อน
-subscription_notAdded_warning=คุณไม่ได้ใส่นามข้างท้ายตัวกรอง ถ้าไม่มีนามข้างท้ายตัวกรองคุณก็ต้องเพิ่มตัวกรอง Adblock Plus เอง
-subscription_notAdded_warning_addendum=ต้องการทำต่อหรือไม่
 subscription_invalid_location=ตำแหน่งรายชื่อตัวกรองไม่ใช่ทั้งยูอาร์แอลที่ถูกต้องและชื่อแฟ้มที่ถูกต้อง
-synchronize_invalid_url=ล้มเหลว ไม่มีที่อยู่ที่ถูกต้อง
-synchronize_connection_error=ล้มเหลว การดาวน์โหลดล้มเหลว
-synchronize_invalid_data=ล้มเหลว ไม่มีรายชื่อตัวกรองที่ถูกต้อง
-synchronize_checksum_mismatch=ล้มเหลว checksum จับผิดคู่
-synchronize_ok=สำเร็จ
-overwrite=บันทึกทับ
-append=ผนวก
-new_filter_group_title=ตัวกรองใหม่
 type_label_other=อื่นๆ
 type_label_script=สคริปต์
 type_label_image=รูปภาพ
@@ -56,15 +23,17 @@ type_label_object=วัตถุ
 type_label_subdocument=กรอบความ
 type_label_document=เอกสาร
 type_label_elemhide=ซ่อน
-type_label_xbl=การยึดเหนี่ยวเอกซ์บีแอล
-type_label_ping=ปิงลิงก์
 type_label_xmlhttprequest=คำร้องขอเอกซ์บีแอล
 type_label_object_subrequest=subrequest วัตถุ
-type_label_dtd=ดีทีดี
 type_label_media=เสียง/ภาพ
 type_label_font=แบบอักษร
 fennec_status_enabled=Adblock Plus เปิดใช้งานอยู่
 fennec_status_disabled=Adblock Plus ปิดการใช้งานอยู่
 fennec_status_enabled_site=Adblock Plus เปิดใช้งานอยู่ที่ ?1?
 fennec_status_disabled_site=Adblock Plus ปิดการใช้งานอยู่ที่ ?1?
-sync_engine_title=ข้อมูล Adblock Plus
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/th/overlay.dtd b/chrome/adblockplus.jar!/locale/th/overlay.dtd
index ea51a76..ffd0a25 100644
--- a/chrome/adblockplus.jar!/locale/th/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/th/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "ปรับแต่ง Adblock Plus">
 <!ENTITY menuitem.accesskey "ป">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: วัตถุที่บล็อกได้">
 <!ENTITY context.image.label "Adblock รูปภาพ">
 <!ENTITY context.object.label "Adblock สิ่งของ">
 <!ENTITY context.frame.label "Adblock กรอบความ">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "รายการที่บล็อกได้ในหน้าล่าสุด">
 <!ENTITY sendReport.label "รายงานปัญหาที่พบในหน้านี้">
 <!ENTITY sendReport.accesskey "ร">
-<!ENTITY settings.label "ปรับแต่ง">
-<!ENTITY settings.accesskey "ป">
 <!ENTITY opensidebar.label "เปิดรายการที่บล็อกได้">
 <!ENTITY opensidebar.accesskey "ไ">
 <!ENTITY closesidebar.label "ปิดรายการที่บล็อกได้">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "ปิดการใช้งาน ?1?">
 <!ENTITY whitelist.page.label "ปิดการใช้งานเฉพาะหน้านี้">
 <!ENTITY disable.label "ปิดการใช้งานทุกที่">
-<!ENTITY recommend.label "แนะนำเราใน Facebook">
+<!ENTITY options.label "ตัวเลือก">
+<!ENTITY options.accesskey "เ">
+<!ENTITY showintoolbar.label "แสดงในแถบเครื่องมือ">
+<!ENTITY showintoolbar.accesskey "ค">
+<!ENTITY showinstatusbar.label "แสดงในแถบสถานะ">
+<!ENTITY showinstatusbar.accesskey "ส">
+<!ENTITY objecttabs.label "แสดงแท็บบนแฟลชและจาวา">
+<!ENTITY objecttabs.accesskey "ฟ">
+<!ENTITY sync.label "เชื่อมข้อมูลการตั้งค่า Adblock Plus">
+<!ENTITY sync.accesskey "ม">
 <!ENTITY objecttab.title "บล็อก">
 <!ENTITY objecttab.tooltip "คลิกที่นี่เพื่อบล็อกวัตถุนี้ด้วย Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/th/settings.dtd b/chrome/adblockplus.jar!/locale/th/settings.dtd
deleted file mode 100644
index ab9f59e..0000000
--- a/chrome/adblockplus.jar!/locale/th/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "ปรับแต่ง Adblock Plus">
-<!ENTITY filters.label "ตัวกรอง">
-<!ENTITY filters.accesskey "ต">
-<!ENTITY add.label "เพิ่มตัวกรอง">
-<!ENTITY add.accesskey "พ">
-<!ENTITY addsubscription.label "เพิ่มนามข้างท้ายตัวกรอง">
-<!ENTITY addsubscription.accesskey "น">
-<!ENTITY synchsubscriptions.label "อัปเดตนามข้างท้ายทั้งหมด">
-<!ENTITY synchsubscriptions.accesskey "ด">
-<!ENTITY import.label "นำเข้าตัวกรอง">
-<!ENTITY import.accesskey "ข">
-<!ENTITY export.label "ส่งออกตัวกรอง">
-<!ENTITY export.accesskey "อ">
-<!ENTITY clearall.label "ลบตัวกรองทั้งหมด">
-<!ENTITY clearall.accesskey "ล">
-<!ENTITY resethitcounts.label "เริ่มสถิติใหม่">
-<!ENTITY resethitcounts.accesskey "ร">
-<!ENTITY edit.label "แก้ไข">
-<!ENTITY edit.accesskey "ก">
-<!ENTITY cut.label "ตัด">
-<!ENTITY cut.accesskey "ต">
-<!ENTITY copy.label "คัดลอก">
-<!ENTITY copy.accesskey "ค">
-<!ENTITY paste.label "วาง">
-<!ENTITY paste.accesskey "ว">
-<!ENTITY remove.label "ลบ">
-<!ENTITY remove.accesskey "บ">
-<!ENTITY menu.find.label "ค้นหา">
-<!ENTITY menu.find.accesskey "ห">
-<!ENTITY menu.findagain.label "ค้นหาอีกครั้ง">
-<!ENTITY menu.findagain.accesskey "ง">
-<!ENTITY view.label "มุมมอง">
-<!ENTITY view.accesskey "ม">
-<!ENTITY sort.label "จัดลำดับ">
-<!ENTITY sort.accesskey "จ">
-<!ENTITY sort.none.label "ไม่จัดลำดับ">
-<!ENTITY sort.none.accesskey "บ">
-<!ENTITY sort.ascending.label "จัดลำดับ A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "จัดลำดับ Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "ตัวเลือก">
-<!ENTITY options.accesskey "เ">
-<!ENTITY enable.label "เปิดการใช้งาน Adblock Plus">
-<!ENTITY enable.accesskey "ก">
-<!ENTITY showintoolbar.label "แสดงในแถบเครื่องมือ">
-<!ENTITY showintoolbar.accesskey "ค">
-<!ENTITY showinstatusbar.label "แสดงในแถบสถานะ">
-<!ENTITY showinstatusbar.accesskey "ส">
-<!ENTITY objecttabs.label "แสดงแท็บบนแฟลชและจาวา">
-<!ENTITY objecttabs.accesskey "ฟ">
-<!ENTITY collapse.label "ย่อเก็บส่วนย่อยที่ถูกบล็อก">
-<!ENTITY collapse.accesskey "ย">
-<!ENTITY sync.label "เชื่อมข้อมูลการตั้งค่า Adblock Plus">
-<!ENTITY sync.accesskey "ม">
-<!ENTITY help.label "ช่วยเหลือ">
-<!ENTITY help.accesskey "ห">
-<!ENTITY gettingStarted.label "เริ่มต้นใช้งาน">
-<!ENTITY gettingStarted.accesskey "ร">
-<!ENTITY faq.label "คำถามพบบ่อย">
-<!ENTITY faq.accesskey "พ">
-<!ENTITY filterdoc.label "การเขียนตัวกรอง Adblock Plus">
-<!ENTITY filterdoc.accesskey "ข">
-<!ENTITY about.label "เกี่ยวกับ Adblock Plus">
-<!ENTITY about.accesskey "ก">
-<!ENTITY description "ตัวกรองต่อไปนี้ระบุว่าที่อยู่ใดควรจะถูกบล็อกและที่อยู่ใดควรให้ผ่าน:">
-<!ENTITY filter.column "กฎตัวกรอง">
-<!ENTITY filter.accesskey "ต">
-<!ENTITY slow.column "ทำให้ตัวกรองช้าลง">
-<!ENTITY slow.accesskey "ง">
-<!ENTITY enabled.column "เปิดการใช้งาน">
-<!ENTITY enabled.accesskey "ป">
-<!ENTITY hitcount.column "นับ">
-<!ENTITY hitcount.accesskey "น">
-<!ENTITY lasthit.column "กดล่าสุด">
-<!ENTITY lasthit.accesskey "ล">
-<!ENTITY context.edit.label "แก้ไขตัวกรอง">
-<!ENTITY context.resethitcount.label "เริ่มนับสถิติสำหรับตัวกรองใหม่">
-<!ENTITY context.synchsubscription.label "อัปเดตนามข้างท้าย">
-<!ENTITY context.editsubscription.label "แก้ไขนามข้างท้าย">
-<!ENTITY context.moveup.label "เลื่อนขึ้น">
-<!ENTITY context.movedown.label "เลื่อนลง">
-<!ENTITY context.movegroupup.label "เลื่อนกลุ่มขึ้น">
-<!ENTITY context.movegroupdown.label "เลื่อนกลุ่มลง">
-<!ENTITY context.enable.label "เปิดใช้งาน">
-<!ENTITY context.disable.label "ปิดใช้งาน">
-<!ENTITY apply.label "ใช้งาน">
-<!ENTITY apply.accesskey "ช">
-<!ENTITY fennec.subscription.label "คำอธิบายตัวกรอง">
diff --git a/chrome/adblockplus.jar!/locale/th/sidebar.dtd b/chrome/adblockplus.jar!/locale/th/sidebar.dtd
index 728af44..8f4534c 100644
--- a/chrome/adblockplus.jar!/locale/th/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/th/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "คัดลอกที่อยู่รายการ">
 <!ENTITY context.copyFilter.label "คัดลอกตัวกรอง">
 <!ENTITY context.selectAll.label "เลือกทั้งหมด">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/th/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/th/subscriptionSelection.dtd
index 874fba8..4b12eba 100644
--- a/chrome/adblockplus.jar!/locale/th/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/th/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "เพิ่มนามข้างท้ายตัวกรอง Adblock Plus">
-<!ENTITY dialog.title.edit "แก้ไขการเป็นสมาชิกบอกรับรายการตัวกรอง">
-<!ENTITY description.newInstall "Adblock Plus จะทำงานได้อย่างเต็มที่ถ้าคุณใส่นามข้างท้ายตัวกรอง มีผู้ใช้ Adblock Plus เชียนนามข้างท้ายตัวกรองแจกฟรี นามข้างท้ายที่เหมาะสมกับภาษาของคุณที่สุดได้เลือกไว้แล้ว">
 <!ENTITY subscriptionSelector.label "กรุณาเลือกนามข้างท้ายตัวกรองจากรายชื่อ:">
 <!ENTITY viewList.label "ดูตัวกรอง">
 <!ENTITY visitHomepage.label "เยี่ยมชมโฮมเพจ">
 <!ENTITY addSubscription.label "เพิ่มนามข้างท้ายตัวกรอง">
-<!ENTITY saveSubscription.label "บันทึกนามข้างท้ายตัวกรอง">
-<!ENTITY other.label "เพิ่มนามข้างท้าย">
-<!ENTITY other.accesskey "พ">
 <!ENTITY list.download.failed "Adblock Plus ไม่สามารถกู้คืนรายการนามข้างท้ายได้">
 <!ENTITY list.download.retry "ลองอีกครั้ง">
 <!ENTITY list.download.website "ดูเว็บไซต์">
 <!ENTITY fromWeb.description "กรุณายืนยันว่าคุณต้องการเพิ่มนามข้างท้ายตัวกรองนี้ คุณสามารถเปลี่ยนหัวเรื่องนามข้างท้ายหรือตำแหน่งก่อนเพิ่มเข้ามาได้">
-<!ENTITY edit.description "คุณสามารถเปลี่ยนหัวเรื่องนามข้างท้ายหรือตำแหน่งตามความจำเป็น">
-<!ENTITY external.description "นี่คือนามข้างท้ายตัวกรองภายนอก มันจะอัปเดตโดยใช้ส่วนเสริมที่สร้างนามข้างท้ายนี้">
 <!ENTITY title.label "ชื่อ:">
 <!ENTITY title.accesskey "ช">
 <!ENTITY location.label "ที่อยู่รายชื่อตัวกรอง:">
 <!ENTITY location.accesskey "ร">
-<!ENTITY autodownload.label "ปรับปรุงอัตโนมัติ">
-<!ENTITY autodownload.accesskey "อ">
 <!ENTITY supplementMessage "นามข้างท้ายตัวกรองนี้ตั้งใจไว้ใช้กับนามข้างท้ายตัวกรอง "?1?" ซึ่งคุณยังไม่ได้ใช้">
 <!ENTITY addMain.label "เพิ่มนามข้างท้ายตัวกรอง "?1?" ด้วย">
 <!ENTITY addMain.accesskey "ว">
diff --git a/chrome/adblockplus.jar!/locale/tr/about.dtd b/chrome/adblockplus.jar!/locale/tr/about.dtd
index a47057b..53e7b68 100644
--- a/chrome/adblockplus.jar!/locale/tr/about.dtd
+++ b/chrome/adblockplus.jar!/locale/tr/about.dtd
@@ -1,6 +1,6 @@
 <!ENTITY dialog.title "Adblock Plus Hakkında">
 <!ENTITY version.title "Sürüm">
-<!ENTITY description "Adblock Plus size internette neyi görmek istediğinize karar verme şansı sunar. Artık istenmeyen reklamları ve tanıtımları izlemek zorunda değilsiniz, onları Adblock Plus'la kaldırabilirsiniz!">
+<!ENTITY description "Adblock Plus size internette neyi görmek istediğinize karar verme şansı sunar. Artık reklamları ve tanıtımları izlemek zorunda değilsiniz. Görmek istemediklerinizi Adblock Plus'a bildirin yeter!">
 <!ENTITY homepage.label "Adblock Plus ana sayfası:">
 <!ENTITY author.label "Yazar:">
 <!ENTITY contributors.label "Katkıda bulunanlar:">
diff --git a/chrome/adblockplus.jar!/locale/tr/composer.dtd b/chrome/adblockplus.jar!/locale/tr/composer.dtd
index 85e1874..7560afe 100644
--- a/chrome/adblockplus.jar!/locale/tr/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/tr/composer.dtd
@@ -13,10 +13,10 @@
 <!ENTITY type.whitelist.label "Hariç tutma kuralı">
 <!ENTITY type.whitelist.accesskey "h">
 <!ENTITY pattern.label "Aranacak örnek">
-<!ENTITY pattern.explanation "Bu örnek adresin herhangi bir bölümü olabilir ve (*) işareti joker görevi yapar. Süzgeç sadece örneğe uyan adreslere uygulanacaktır.">
-<!ENTITY regexp.warning "Girdiğiniz örnek düzenli ifade olarak yorumlanacaktır. Çok fazla düzenli ifade, taramayı yavaşlatabilir. Gerçekten düzenli ifade kullanmak istediğinizden emin değilseniz lütfen örneğin sonuna (*) işareti koyun.">
-<!ENTITY shortpattern.warning "Girdiğiniz örnek iyileştirme için çok kısa ve bu tür örnekler tarayıcı deneyiminizi yavaşlatabilir. Adblock Plus'ın daha etkin çalışabilmesi için bu süzgece yönelik daha uzun bir satır seçmeniz tavsiye edilir.">
-<!ENTITY match.warning "Girdiğiniz örnek artık engellenecek olan veya kara listeden çıkarılacak adresle uyuşmuyor ve üzerinde hiçbir etkisi olmayacaktır.">
+<!ENTITY pattern.explanation "Bu örnek adresin herhangi bir bölümü olabilir ve * işareti joker görevi yapar. Süzgeç sadece örneğe uyan adreslere uygulanacak.">
+<!ENTITY regexp.warning "Girdiğiniz örnek düzenli ifade olarak yorumlanacak. Çok fazla düzenli ifade, taramayı yavaşlatabilir. Gerçekten düzenli ifade kullanmak istediğinizden emin değilseniz örneğin sonuna * işareti koyun.">
+<!ENTITY shortpattern.warning "Girdiğiniz örnek en iyileştirmek için çok kısa ve bu tür örnekler taramayı yavaşlatabilir. Bu süzgeç için daha uzun bir satır seçmeniz tavsiye edilir.">
+<!ENTITY match.warning "Girdiğiniz örnek artık engellenecek olan veya kara listeden çıkarılacak adresle uyuşmuyor ve üzerinde hiçbir etkisi olmayacak.">
 <!ENTITY custom.pattern.label "Özel:">
 <!ENTITY custom.pattern.accesskey "z">
 <!ENTITY anchors.label "Örneği sadece burada kabul et:">
diff --git a/chrome/adblockplus.jar!/locale/tr/filters.dtd b/chrome/adblockplus.jar!/locale/tr/filters.dtd
new file mode 100644
index 0000000..4fb1c53
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/tr/filters.dtd
@@ -0,0 +1,91 @@
+<!ENTITY dialog.title "Adblock Plus Süzme Tercihleri">
+<!ENTITY subscriptions.tab.label "Süzgeç abonelikleri">
+<!ENTITY filters.tab.label "İsteğe bağlı süzgeçler">
+<!ENTITY addSubscription.label "Süzgeç aboneliği ekle">
+<!ENTITY addSubscription.accesskey "e">
+<!ENTITY addSubscriptionAdd.label "Ekle">
+<!ENTITY addSubscriptionCancel.label "Vazgeç">
+<!ENTITY addSubscriptionOther.label "Başka abonelik ekle">
+<!ENTITY noSubscriptions.text "
+	Henüz hiçbir süzgeç aboneliği eklemediniz. Adblock Plus süzgeç olmadan hiçbir şey
+ engellemeyecektir. Abonelik eklemek için 
+ lütfen "Süzgeç aboneliği ekle" düğmesini kullanın.">
+<!ENTITY subscription.homepage.label "Ana sayfa">
+<!ENTITY subscription.external.label "Başka bir eklenti tarafından güncellendi">
+<!ENTITY subscription.source.label "Süzgeç listesi">
+<!ENTITY subscription.enabled.label "Devrede">
+<!ENTITY subscription.lastDownload.label "En son indiriş:">
+<!ENTITY subscription.lastDownload.inProgress "İndiriliyor...">
+<!ENTITY subscription.lastDownload.unknown "Yok">
+<!ENTITY subscription.lastDownload.invalidURL "Olmadı. Bu geçerli bir adres değil.">
+<!ENTITY subscription.lastDownload.connectionError "Olmadı. İndirmede sorun var.">
+<!ENTITY subscription.lastDownload.invalidData "Olmadı. Bu düzgün bir süzgeç listesi değil.">
+<!ENTITY subscription.lastDownload.checksumMismatch "Başarısız, checksum eşleşmedi">
+<!ENTITY subscription.lastDownload.success "Eşleme başarılı oldu.">
+<!ENTITY subscription.minVersion.warning "Bu süzgeç aboneliği daha yeni bir Adblock Plus sürümü gerektiriyor. En güncel Adblock Plus sürümüne yükseltmelisiniz.">
+<!ENTITY subscription.disabledFilters.warning "Bu abonelikteki bazı süzgeçler devre dışı.">
+<!ENTITY subscription.disabledFilters.enable "Devre dışı süzgeçleri devreye sok">
+<!ENTITY subscription.actions.label "Eylemler">
+<!ENTITY subscription.update.label "Süzgeçleri güncelle">
+<!ENTITY subscription.editTitle.label "Başlığı değiştir">
+<!ENTITY subscription.delete.label "Sil">
+<!ENTITY subscription.showHideFilters.label "Süzgeçleri göster/gizle">
+<!ENTITY subscription.moveUp.label "Yukarıya taşı">
+<!ENTITY subscription.moveDown.label "Aşağıya taşı">
+<!ENTITY acceptableAds.label "Rahatsız etmeyen reklamlara izin ver">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "Daha fazla bilgi al">
+<!ENTITY addGroup.label "Süzgeç öbeği ekle">
+<!ENTITY addGroup.accesskey "z">
+<!ENTITY noFilters.text "
+ İsteğe göre ayarlanmış hiçbir süzgeciniz yok.
+">
+<!ENTITY addFilter.label "Süzgeç ekle">
+<!ENTITY addFilter.accesskey "k">
+<!ENTITY filter.actions.label "Süzgeç eylemleri">
+<!ENTITY filter.edit.label "Düzenle">
+<!ENTITY filter.cut.label "Kes">
+<!ENTITY filter.copy.label "Kopyala">
+<!ENTITY filter.paste.label "Yapıştır">
+<!ENTITY filter.delete.label "Sil">
+<!ENTITY filter.selectAll.label "Tümünü seç">
+<!ENTITY filter.resetHitCounts.label "İsabet istatistiklerini sıfırla">
+<!ENTITY filter.moveUp.label "Yukarıya taşı">
+<!ENTITY filter.moveDown.label "Aşağıya taşı">
+<!ENTITY viewMenu.label "Görünüm">
+<!ENTITY filter.column "Süzgeç kuralı">
+<!ENTITY filter.accesskey "k">
+<!ENTITY slow.column "Süzgeçleri göster">
+<!ENTITY slow.accesskey "g">
+<!ENTITY enabled.column "Etkinlik">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "İsabet">
+<!ENTITY hitcount.accesskey "e">
+<!ENTITY lasthit.column "Son isabet">
+<!ENTITY lasthit.accesskey "i">
+<!ENTITY sort.label "Sırala">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "Sıralanmamış">
+<!ENTITY sort.none.accesskey "m">
+<!ENTITY sort.ascending.label "A'da Z'ye sıralama">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z'den A'ya sıralama">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "Süzgeçlerini görmek için bir süzgeç öbeği seçmeniz gerekiyor.">
+<!ENTITY noFiltersInGroup.text "Seçili öbek boş">
+<!ENTITY filters.remove.warning "Seçili bu süzgeçleri gerçekten silmek istiyor musunuz?">
+<!ENTITY backupButton.label "Yedekle ve geri getir">
+<!ENTITY backupButton.accesskey "y">
+<!ENTITY backup.label "Yeni yedek oluştur">
+<!ENTITY restore.default.label "?1? tarihli yedek geri getirilsin mi?">
+<!ENTITY restore.own.label "Kendi yedeğini geri getir">
+<!ENTITY backup.complete.title "Tüm süzgeç ve abonelikler">
+<!ENTITY backup.custom.title "Sadece isteğe bağlı süzgeçler">
+<!ENTITY backup.error "Süzgeçler dosyaya yazılırken bir sorun meydana geldi. Dosyanın yazma korumalı veya başka bir uygulama tarafından kullanılmıyor olduğundan emin olun.">
+<!ENTITY restore.error "Dosya verisi işlenemiyor. Adblock Plus yedeği olmayabilir mi?">
+<!ENTITY restore.complete.warning "Tüm süzme tercihleriniz seçilen dosyanın içeriğiyle değiştirilecek. Devam etmek istiyor musunuz?">
+<!ENTITY restore.custom.warning "Tüm isteğe bağlı süzgeçleriniz seçilen dosyanın içeriğiyle değiştirilecek. Devam etmek istiyor musunuz?">
+<!ENTITY restore.minVersion.warning "Uyarı: Dosya Adblock Plus'ın daha yeni bir sürümüyle oluşturulmuş. Bu dosyayı geri getirmeden önce Adblock Plus'ı en güncel sürümüne yükseltmelisiniz.">
+<!ENTITY find.label "Bul">
+<!ENTITY find.accesskey "b">
+<!ENTITY close.label "Kapat">
diff --git a/chrome/adblockplus.jar!/locale/tr/firstRun.dtd b/chrome/adblockplus.jar!/locale/tr/firstRun.dtd
new file mode 100644
index 0000000..159c74b
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/tr/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus kurulumu tamamlandı">
+<!ENTITY confirmation "
+	Adblock Plus'ı kurduğunuz için teşekkürler... Artık reklamlar engellenecek. 
+	Kolay gelsin!">
+<!ENTITY advancedSection "Gelişmiş ayarlar">
+<!ENTITY listSelection1 "
+	Bu süzgeç listesi reklamları engellemek için ayarlandı:
+">
+<!ENTITY noList "Hiçbir süzgeç listesi yok">
+<!ENTITY visitHomepage.label "Listenin ana sayfasına git">
+<!ENTITY acceptableAds "
+	Adblock Plus rahatsız etmeyen türden reklamlara izin verecek şekilde de ayarlandı.
+">
+<!ENTITY readMore.label "Bu konuda daha fazla bilgi al">
+<!ENTITY listSelection2 "
+	Bu tercihi istediğiniz zaman [link]Süzgeç Terhicleri[/link] bölümünde değiştirebilirsiniz.
+">
diff --git a/chrome/adblockplus.jar!/locale/tr/global.properties b/chrome/adblockplus.jar!/locale/tr/global.properties
index 7b33c9c..f159397 100644
--- a/chrome/adblockplus.jar!/locale/tr/global.properties
+++ b/chrome/adblockplus.jar!/locale/tr/global.properties
@@ -1,53 +1,25 @@
 default_dialog_title=Adblock Plus
-action0_tooltip=İçerik menüsünü açmak için tıklayın; etkinleştirmek ya da devre dışı bırakmak için orta düğmeye tıklayın.
-action1_tooltip=Engellenebilir öğeleri açmak ya da kapatmak için tıklayın; etkinleştirmek ya da devre dışı bırakmak için orta düğmeye tıklayın.
-action2_tooltip=Tercihler penceresini açmak için tıklayın; etkinleştirmek ya da devre dışı bırakmak için orta düğmeye tıklayın.
-action3_tooltip=Adblock Plus'ı etkinleştirmek ya da devre dışı bırakmak için orta düğmeye tıklayın.
-disabled_tooltip=Adblock Plus devre dışıdır.
+action0_tooltip=İçerik menüsünü açmak için tıklayın; etkinleştirmek ya da etkisizleştirmek için orta düğmeye tıklayın.
+action1_tooltip=Engellenebilir öğeleri açmak ya da kapatmak için tıklayın; etkinleştirmek ya da etkisizleştirmek için orta düğmeye tıklayın.
+action2_tooltip=Tercihler penceresini açmak için tıklayın; etkinleştirmek ya da etkisizleştirmek için orta düğmeye tıklayın.
+action3_tooltip=Adblock Plus'ı etkinleştirmek ya da etkisizleştirmek için orta düğmeye tıklayın.
+disabled_tooltip=Adblock Plus etkin değil.
 active_tooltip=Adblock Plus devrede ve ?1? süzgeç aboneliği ile ?2? özel süzgeç kullanıyor.
-whitelisted_tooltip=Adblock Plus etkin, ancak bu sayfada devre dışıdır.
+whitelisted_tooltip=Adblock Plus etkin, ancak bu sayfada devre dışı.
 blocked_count_tooltip=?1? toplam ?2?
 blocked_count_addendum=(ayrıca ?1? tane ak listede, ?2? tane gizli)
 no_blocking_suggestions=Bakılan sayfada engellenebilecek bir öğe bulunmuyor
 whitelisted_page=Adblock Plus bakılan sayfa için devre dışı bırakıldı
-whitelist_description=Ayrıcalıklar
-filterlist_description=Reklam süzgeçleri
-invalid_description=Geçersiz süzgeçler
-elemhide_description=Öğe engelleme kuralları
-subscription_description=Süzgeç abonelikleri:
-subscription_wrong_version=Bazı süzgeçlerin düzgün çalışabilmesi için Adblock Plus ?1? gerekiyor.
-subscription_source=Kaynak:
-subscription_status=Durum:
-subscription_status_autodownload=Otomatik olarak güncellendi
-subscription_status_manualdownload=Elle güncellendi
-subscription_status_externaldownload=Dışarıdan güncellendi (başka bir eklenti tarafından)
-subscription_status_lastdownload=En son indiriş:
-subscription_status_lastdownload_inprogress=İndiriliyor...
-subscription_status_lastdownload_unknown=Yok
+newGroup_title=Yeni süzgeç öbeği
+whitelistGroup_title=Ayrıcalık kuralları
+blockingGroup_title=Reklam engelleme kuralları
+elemhideGroup_title=Öğe gizleme kuralları
 remove_subscription_warning=Gerçekten abonelikten çıkmak istiyor musunuz?
-import_filters_wrong_version=Uyarı: Bazı süzgeçlerin düzgün çalışabilmesi için Adblock Plus ?1? gerekiyor. Bu listeyi içe aktarmadan önce büyük olasılıkla en güncel Adblock Plus sürümüne yükseltmeniz gerekiyor.
-import_filters_warning=Geçerli süzgeçlerinizi değiştirmek mi, yoksa yeni gelecekleri şu anki süzgeçlerin sonuna mı eklemek istersiniz?
-import_filters_title=Süzgeçleri içe aktar
-export_filters_title=Süzgeçleri dışa aktar
-invalid_filters_file=Bu geçerli bir Adblock Plus süzgeç dosyası değildir.
-filters_write_error=Süzgeçler dosyaya yazılırken hatayla karşılaşıldı. Dosyanın yazmaya karşı korunup korunmadığından ve başka bir program tarafından kullanılıp kullanılmadığından emin olun.
-clearall_warning=Gerçekten listedeki bütün süzgeçleri kaldırmak istiyor musunuz?
-resethitcounts_warning=Bütün süzgeçlerin isabet istatistiklerini gerçekten sıfırlamak istiyor musunuz? Not: Bu işlem geri alınamaz.
-resethitcounts_selected_warning=Seçilen süzgeçlerin isabet istatistiklerini gerçekten sıfırlamak istiyor musunuz? Not: Bu işlem geri alınamaz.
-filter_regexp_tooltip=Süzgeç ya düzenli ifade ya da en iyileştirmek için çok kısadır. Bu süzgeçlerden çok fazlası, taramanızı yavaşlatabilir.
+clearStats_warning=Bu hareket isabet istatistiklerinin sıfırlanması ve artık istatistik tutulmamasıyla sonuçlanacak. Devam etmek istiyor musunuz?
+filter_regexp_tooltip=Süzgeç ya düzenli ifade ya da en iyileştirmek için çok kısa. Bu süzgeçlerden çok fazlası, taramanızı yavaşlatabilir.
 filter_elemhide_duplicate_id=Gizlenecek sadece bir bileşen kimliği belirtilebilir
 filter_elemhide_nocriteria=Gizlenecek bileşeni anlamak için hiçbir ölçüt belirtilmedi
-subscription_notAdded_warning=Hiçbir süzgece abone olmadınız. Süzgeç aboneliğiniz yokken Adblock Plus'ta kendinize süzgeç tanımlamanız gerekecektir.
-subscription_notAdded_warning_addendum=Devam etmek istiyor musunuz?
-subscription_invalid_location=Dosya listesi konumu düzgün bir URL ya da düzgün bir ada sahip değil!
-synchronize_invalid_url=Olmadı, bu geçerli bir adres değil!
-synchronize_connection_error=Olmadı, indirmede sorun var.
-synchronize_invalid_data=Olmadı, bu düzgün bir süzgeç listesi değil!
-synchronize_checksum_mismatch=Başarısız, checksum eşleşmedi
-synchronize_ok=Eşleme başarılı oldu.
-overwrite=Üstüne Yaz
-append=Ekle
-new_filter_group_title=Yeni süzgeç
+subscription_invalid_location=Dosya listesi konumu ne düzgün bir URL ne de düzgün bir ada sahip.
 type_label_other=diğer
 type_label_script=betik
 type_label_image=resim
@@ -56,15 +28,12 @@ type_label_object=nesne
 type_label_subdocument=çerçeve
 type_label_document=belge
 type_label_elemhide=gizli
-type_label_xbl=XBL bağlantısı
-type_label_ping=bağlantı yoklaması
+type_label_popup=açılır pencere
 type_label_xmlhttprequest=XML isteği
 type_label_object_subrequest=nesne alt isteği
-type_label_dtd=DTD
 type_label_media=ses/görüntü
 type_label_font=yazıtipi
 fennec_status_enabled=Adblock Plus devrede.
 fennec_status_disabled=Adblock Plus devre dışı.
 fennec_status_enabled_site=Adblock Plus ?1? sitesinde devrede.
 fennec_status_disabled_site=Adblock Plus ?1? sitesinde devre dışı.
-sync_engine_title=Adblock Plus verisi
diff --git a/chrome/adblockplus.jar!/locale/tr/overlay.dtd b/chrome/adblockplus.jar!/locale/tr/overlay.dtd
index d4cbd62..dea3d7a 100644
--- a/chrome/adblockplus.jar!/locale/tr/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/tr/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Engellenebilir öğeler">
 <!ENTITY context.image.label "Resmi engelle">
 <!ENTITY context.object.label "Nesneyi engelle">
 <!ENTITY context.frame.label "Çerçeveyi engelle">
@@ -13,15 +12,31 @@
 <!ENTITY sidebar.title "Bu sayfadaki engellenebilecek öğeler">
 <!ENTITY sendReport.label "Bu sayfadaki sorunu bildir">
 <!ENTITY sendReport.accesskey "b">
-<!ENTITY settings.label "Tercihler">
-<!ENTITY settings.accesskey "T">
+<!ENTITY filters.label "Süzgeç tercihleri">
+<!ENTITY filters.accesskey "s">
 <!ENTITY opensidebar.label "Engellenebilecek öğeleri göster">
-<!ENTITY opensidebar.accesskey "E">
+<!ENTITY opensidebar.accesskey "n">
 <!ENTITY closesidebar.label "Engellenebilecek öğeleri gizle">
-<!ENTITY closesidebar.accesskey "E">
+<!ENTITY closesidebar.accesskey "n">
 <!ENTITY whitelist.site.label "?1? sitesinde devre dışı kal">
 <!ENTITY whitelist.page.label "Sadece bu sayfada devre dışı kal">
 <!ENTITY disable.label "Her yerde devre dışı kal">
-<!ENTITY recommend.label "Facebook'ta tavsiye et">
+<!ENTITY options.label "Seçenekler">
+<!ENTITY options.accesskey "e">
+<!ENTITY contribute.label "Adblock Plus'a katkıda bulun">
+<!ENTITY showintoolbar.label "Araç çubuğunda göster">
+<!ENTITY showintoolbar.accesskey "r">
+<!ENTITY showinstatusbar.label "Durum çubuğunda göster">
+<!ENTITY showinstatusbar.accesskey "D">
+<!ENTITY showinaddonbar.label "Eklenti çubuğunda göster">
+<!ENTITY showinaddonbar.accesskey "r">
+<!ENTITY objecttabs.label "Flash ve Java'yı kulakçıklarla belirt">
+<!ENTITY objecttabs.accesskey "J">
+<!ENTITY hideplaceholders.label "Engellenen öğelerin yer işaretlerini gizle">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "Süzgeç isabetini say">
+<!ENTITY counthits.accesskey "b">
+<!ENTITY sync.label "Adblock Plus ayarlarını eşitle">
+<!ENTITY sync.accesskey "e">
 <!ENTITY objecttab.title "Engelle">
 <!ENTITY objecttab.tooltip "Bu nesneyi Adblock Plus ile engellemek için buraya tıklayın.">
diff --git a/chrome/adblockplus.jar!/locale/tr/sendReport.dtd b/chrome/adblockplus.jar!/locale/tr/sendReport.dtd
index f5564d0..73429b0 100644
--- a/chrome/adblockplus.jar!/locale/tr/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/tr/sendReport.dtd
@@ -7,7 +7,7 @@
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus çok fazla engelleme yapıyor">
 <!ENTITY typeSelector.falsePositive.accesskey "f">
 <!ENTITY typeSelector.falsePositive.description "Sayfanın önemli içeriği hiç görünmüyorsa, yanlış görünüyorsa veya sayfa düzgün işlemiyorsa bu seçeneği seçin. Sorun kaynağının Adblock Plus olup olmadığını eklentiyi geçici olarak devre dışı bırakıp belirleyebilirsiniz.">
-<!ENTITY typeSelector.falseNegative.label "Adblock Plus reklamlardan birini engellemiyor">
+<!ENTITY typeSelector.falseNegative.label "Adblock Plus reklamın birini engellemiyor">
 <!ENTITY typeSelector.falseNegative.accesskey "m">
 <!ENTITY typeSelector.falseNegative.description "Adblock Plus devrede olmasına rağmen reklamın biri görünüyorsa bu seçeneği seçin.">
 <!ENTITY typeSelector.other.label "Başka bir sorun">
@@ -22,10 +22,10 @@
 <!ENTITY issues.whitelist.remove.label "Adblock Plus'u bu sayfada devreye sok">
 <!ENTITY issues.disabled.description "Adblock Plus devre dışı ve şu anki durumunda hiçbir şeyi engellemeyecek.">
 <!ENTITY issues.disabled.enable.label "Adblock Plus'ı etkinleştir">
-<!ENTITY issues.nofilters.description "Adblock Plus bu sayfada hiçbir şeyi engellemiyor. Gözlemlediğiniz sorun büyük olasılıkla Adblock Plus ile ilgisizdir.">
+<!ENTITY issues.nofilters.description "Adblock Plus bu sayfada hiçbir şeyi engellemiyor. Gözlemlediğiniz sorun büyük olasılıkla Adblock Plus ile ilgisiz.">
 <!ENTITY issues.nosubscriptions.description "Sitelerdeki istenmeyen içeriği yok eden önceden hazırlanmış süzgeç listelerinden herhangi birine abone olmuş değilsiniz.">
 <!ENTITY issues.nosubscriptions.add.label "Süzgeç aboneliği ekle">
-<!ENTITY issues.subscriptionCount.description "Çok fazla süzgeç listesine abone olduğunuz görülüyor. Bunu yapmanız tavsiye edilmez çünkü bu, sorun çıkma olasılığını daha da arttırır. Ayrıca hangi süzgeç aboneliği yazarının hatayı düzeltmesi gerektiği belirsiz olduğundan hata bildiriminizi kabul edemeyiz. Sadece gerçekten gerekli olan süzgeç abonelikleri dışında kalanlardan çıkın ve sorunun hâlâ yaşanıp yaşanmadığına bakın.">
+<!ENTITY issues.subscriptionCount.description "Çok fazla süzgeç listesine abone olduğunuz görülüyor. Böyle yapmanız tavsiye edilmez çünkü bu, sorun çıkma olasılığını daha da arttırır. Ayrıca hangi süzgeç aboneliği yazarının hatayı düzeltmesi gerektiği belirsiz olduğundan hata bildiriminizi kabul edemeyiz. Sadece gerçekten gerekli olan süzgeç abonelikleri dışında kalanlardan çıkın ve sorunun hâlâ yaşanıp yaşanmadığına bakın.">
 <!ENTITY issues.openPreferences.label "Süzgeç tercihlerini aç">
 <!ENTITY issues.ownfilters.description "Bu sayfada uygulanan süzgeçlerin bazıları kullanıcı tarafından tanımlanmış. Lütfen soruna neden olmuş olabilecek süzgeçleri devre dışı bırakın:">
 <!ENTITY issues.ownfilters.disable.label "Süzgeci devre dışı bırak">
diff --git a/chrome/adblockplus.jar!/locale/tr/settings.dtd b/chrome/adblockplus.jar!/locale/tr/settings.dtd
deleted file mode 100644
index b83dc27..0000000
--- a/chrome/adblockplus.jar!/locale/tr/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus Tercihleri">
-<!ENTITY filters.label "Süzgeçler">
-<!ENTITY filters.accesskey "G">
-<!ENTITY add.label "Süzgeç ekle">
-<!ENTITY add.accesskey "K">
-<!ENTITY addsubscription.label "Süzgeç aboneliği ekle">
-<!ENTITY addsubscription.accesskey "E">
-<!ENTITY synchsubscriptions.label "Tüm abonelikleri güncelle">
-<!ENTITY synchsubscriptions.accesskey "C">
-<!ENTITY import.label "Süzgeçleri içe aktar">
-<!ENTITY import.accesskey "Z">
-<!ENTITY export.label "Süzgeçleri dışa aktar">
-<!ENTITY export.accesskey "D">
-<!ENTITY clearall.label "Tüm süzgeçleri kaldır">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "İstatistikleri sıfırla">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "Düzen">
-<!ENTITY edit.accesskey "z">
-<!ENTITY cut.label "Kes">
-<!ENTITY cut.accesskey "e">
-<!ENTITY copy.label "Kopyala">
-<!ENTITY copy.accesskey "K">
-<!ENTITY paste.label "Yapıştır">
-<!ENTITY paste.accesskey "Y">
-<!ENTITY remove.label "Sil">
-<!ENTITY remove.accesskey "S">
-<!ENTITY menu.find.label "Bul">
-<!ENTITY menu.find.accesskey "B">
-<!ENTITY menu.findagain.label "Sonrakini bul">
-<!ENTITY menu.findagain.accesskey "A">
-<!ENTITY view.label "Görünüm">
-<!ENTITY view.accesskey "r">
-<!ENTITY sort.label "Sırala">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "Sıralanmamış">
-<!ENTITY sort.none.accesskey "m">
-<!ENTITY sort.ascending.label "A'da Z'ye sıralama">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z'den A'ya sıralama">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Seçenekler">
-<!ENTITY options.accesskey "S">
-<!ENTITY enable.label "Adblock Plus'ı etkinleştir">
-<!ENTITY enable.accesskey "A">
-<!ENTITY showintoolbar.label "Araç çubuğunda göster">
-<!ENTITY showintoolbar.accesskey "R">
-<!ENTITY showinstatusbar.label "Durum çubuğunda göster">
-<!ENTITY showinstatusbar.accesskey "D">
-<!ENTITY objecttabs.label "Flash ve Java'yı kulakçıklarla belirt">
-<!ENTITY objecttabs.accesskey "J">
-<!ENTITY collapse.label "Öğeleri kapat">
-<!ENTITY collapse.accesskey "T">
-<!ENTITY sync.label "Adblock Plus ayarlarını eşitle">
-<!ENTITY sync.accesskey "e">
-<!ENTITY help.label "Yardım">
-<!ENTITY help.accesskey "A">
-<!ENTITY gettingStarted.label "İlk adım">
-<!ENTITY gettingStarted.accesskey "k">
-<!ENTITY faq.label "Sıkça sorulan sorular">
-<!ENTITY faq.accesskey "S">
-<!ENTITY filterdoc.label "Adblock Plus süzgeç yazımı">
-<!ENTITY filterdoc.accesskey "z">
-<!ENTITY about.label "Adblock Plus hakkında">
-<!ENTITY about.accesskey "O">
-<!ENTITY description "Engellemek istediğiniz adresleri yazın. Öneriler için açılır menüye bakın. Daha genel süzgeçler tanımlamak için * işaretini kullanabilirsiniz. İleri düzeyde bilgiye sahip kullanıcılar düzenli ifadelere de (ör. /reklamd+.gif$/) başvurabilirler.">
-<!ENTITY filter.column "Süzgeç kuralı">
-<!ENTITY filter.accesskey "k">
-<!ENTITY slow.column "Süzgeçleri göster">
-<!ENTITY slow.accesskey "g">
-<!ENTITY enabled.column "Etkinlik">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "İsabet">
-<!ENTITY hitcount.accesskey "e">
-<!ENTITY lasthit.column "Son isabet">
-<!ENTITY lasthit.accesskey "i">
-<!ENTITY context.edit.label "Süzgeci düzenle">
-<!ENTITY context.resethitcount.label "İsabet istatistiği sıfırlanacak süzgeç:">
-<!ENTITY context.synchsubscription.label "Aboneliği eşle">
-<!ENTITY context.editsubscription.label "Aboneliği düzenle">
-<!ENTITY context.moveup.label "Yukarıya taşı">
-<!ENTITY context.movedown.label "Aşağıya taşı">
-<!ENTITY context.movegroupup.label "Öbeği yukarıya taşı">
-<!ENTITY context.movegroupdown.label "Öbeği aşağıya taşı">
-<!ENTITY context.enable.label "Devreye sok">
-<!ENTITY context.disable.label "Devreden çıkar">
-<!ENTITY apply.label "Uygula">
-<!ENTITY apply.accesskey "u">
-<!ENTITY fennec.subscription.label "Süzgeç aboneliği">
diff --git a/chrome/adblockplus.jar!/locale/tr/sidebar.dtd b/chrome/adblockplus.jar!/locale/tr/sidebar.dtd
index 1e208b6..4e71fe8 100644
--- a/chrome/adblockplus.jar!/locale/tr/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/tr/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Süzgeç">
 <!ENTITY state.label "Durum">
 <!ENTITY size.label "Boyut">
+<!ENTITY filterSource.label "Süzgeç kaynağı">
 <!ENTITY docDomain.label "Belge kaynağı">
 <!ENTITY docDomain.thirdParty "(üçüncü taraf)">
 <!ENTITY docDomain.firstParty "(birinci taraf)">
diff --git a/chrome/adblockplus.jar!/locale/tr/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/tr/subscriptionSelection.dtd
index 593b197..cd18d9c 100644
--- a/chrome/adblockplus.jar!/locale/tr/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/tr/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Adblock Plus süzgeç aboneliği ekle">
-<!ENTITY dialog.title.edit "Süzgeç aboneliklerini düzenle">
-<!ENTITY description.newInstall "Adblock Plus herhangi bir süzgeç aboneliğiyle birlikte en etkin şekilde kullanılır. Bu abonelikler diğer Adblock Plus kullanıcıları tarafından ücretsiz sunulmaktadır. Dilinize en uygun abonelik, halihazırda seçilmiş durumdadır.">
 <!ENTITY subscriptionSelector.label "Lütfen listeden bir süzgeç aboneliği seçin:">
 <!ENTITY viewList.label "Süzgeçlere bak">
 <!ENTITY visitHomepage.label "Ana sayfaya git">
 <!ENTITY addSubscription.label "Abone ol">
-<!ENTITY saveSubscription.label "Aboneliği kaydet">
-<!ENTITY other.label "Başka abonelik ekle">
-<!ENTITY other.accesskey "B">
 <!ENTITY list.download.failed "Adblock Plus abonelik listesini alamadı">
 <!ENTITY list.download.retry "Yeniden dene">
 <!ENTITY list.download.website "Siteye git">
 <!ENTITY fromWeb.description "Lütfen bu süzgeç aboneliğini eklemek istediğinizi teyit edin. Eklemeden önce abonelik adını ve konumunu değiştirebilirsiniz.">
-<!ENTITY edit.description "Abonelik adını ve konumunu gerekirse değiştirebilirsiniz.">
-<!ENTITY external.description "Bu harici bir süzgeç aboneliği ve aboneliği başlatan eklenti tarafından güncellenecek.">
 <!ENTITY title.label "Aboneliğin adı:">
 <!ENTITY title.accesskey "A">
 <!ENTITY location.label "Süzgeç listesi konumu:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "Otomatik olarak güncelle">
-<!ENTITY autodownload.accesskey "O">
 <!ENTITY supplementMessage "Bu süzgeç aboneliği henüz kullanmadığınız "?1?" süzgeç aboneliğiyle kullanılmak üzere hazırlanmış.">
 <!ENTITY addMain.label ""?1?" süzgeç aboneliğini de ekle">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/uk/filters.dtd b/chrome/adblockplus.jar!/locale/uk/filters.dtd
new file mode 100644
index 0000000..857bc49
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/uk/filters.dtd
@@ -0,0 +1,86 @@
+<!ENTITY dialog.title "Налаштування фільтрів Адблоку">
+<!ENTITY subscriptions.tab.label "Підписки на фільтри">
+<!ENTITY filters.tab.label "Власні фільтри">
+<!ENTITY addSubscription.label "Додати підписку">
+<!ENTITY addSubscription.accesskey "п">
+<!ENTITY addSubscriptionAdd.label "Додати">
+<!ENTITY addSubscriptionCancel.label "Скасувати">
+<!ENTITY addSubscriptionOther.label "Додати іншу підписку">
+<!ENTITY noSubscriptions.text "Ви поки не додали жодних підписок. Адблок не буде блокувати нічого без фільтрів, будь ласка скористайтесь пунктом «Додати підписку».">
+<!ENTITY subscription.homepage.label "Домашня сторінка">
+<!ENTITY subscription.external.label "Оновлено іншим розширенням">
+<!ENTITY subscription.source.label "Перелік фільтрів">
+<!ENTITY subscription.enabled.label "Увімкнено">
+<!ENTITY subscription.lastDownload.label "Останнє оновлення:">
+<!ENTITY subscription.lastDownload.inProgress "Завантажується…">
+<!ENTITY subscription.lastDownload.unknown "ніколи">
+<!ENTITY subscription.lastDownload.invalidURL "Помилка, невірна адреса">
+<!ENTITY subscription.lastDownload.connectionError "Помилка, неможливо викачати">
+<!ENTITY subscription.lastDownload.invalidData "Помилка, не список фільтрів">
+<!ENTITY subscription.lastDownload.checksumMismatch "Помилка, не збіглась контрольна сума">
+<!ENTITY subscription.lastDownload.success "Успіх">
+<!ENTITY subscription.minVersion.warning "Ця фільтрова підписка потребує новішої версії Adblock Plus. Вам слід оновитись до останньої версії Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "Деякі фільтри у цій підписці вимкнено.">
+<!ENTITY subscription.disabledFilters.enable "Увімкнути вимкнені фільтри">
+<!ENTITY subscription.actions.label "Дії">
+<!ENTITY subscription.update.label "Оновити фільтри">
+<!ENTITY subscription.editTitle.label "Редагувати назву">
+<!ENTITY subscription.delete.label "Видалити">
+<!ENTITY subscription.showHideFilters.label "Сховати/показати фільтри">
+<!ENTITY subscription.moveUp.label "Зсунути вверх">
+<!ENTITY subscription.moveDown.label "Зсунути вниз">
+<!ENTITY acceptableAds.label "Дозволити ненав’язливу рекламу">
+<!ENTITY acceptableAds.accesskey "р">
+<!ENTITY readMore.label "Детальніше">
+<!ENTITY addGroup.label "Додати групу фільтрів">
+<!ENTITY addGroup.accesskey "г">
+<!ENTITY noFilters.text "У вас поки нема власних фільтрів.">
+<!ENTITY addFilter.label "Додати фільтр">
+<!ENTITY addFilter.accesskey "д">
+<!ENTITY filter.actions.label "Дії з фільтрами">
+<!ENTITY filter.edit.label "Редагувати">
+<!ENTITY filter.cut.label "Вирізати">
+<!ENTITY filter.copy.label "Копіювати">
+<!ENTITY filter.paste.label "Вставити">
+<!ENTITY filter.delete.label "Вилучити">
+<!ENTITY filter.selectAll.label "Вибрати всі">
+<!ENTITY filter.resetHitCounts.label "Скинути статистику">
+<!ENTITY filter.moveUp.label "Зсунути вверх">
+<!ENTITY filter.moveDown.label "Зсунути вниз">
+<!ENTITY viewMenu.label "Вигляд">
+<!ENTITY filter.column "Правило фільтрування">
+<!ENTITY filter.accesskey "ф">
+<!ENTITY slow.column "Повільні фільтри">
+<!ENTITY slow.accesskey "і">
+<!ENTITY enabled.column "Увімкнено">
+<!ENTITY enabled.accesskey "в">
+<!ENTITY hitcount.column "Попадань">
+<!ENTITY hitcount.accesskey "п">
+<!ENTITY lasthit.column "Останнє попадання">
+<!ENTITY lasthit.accesskey "О">
+<!ENTITY sort.label "Сортувати за">
+<!ENTITY sort.accesskey "С">
+<!ENTITY sort.none.label "Несортовано">
+<!ENTITY sort.none.accesskey "Н">
+<!ENTITY sort.ascending.label "Від А до Я">
+<!ENTITY sort.ascending.accesskey "А">
+<!ENTITY sort.descending.label "Від Я до А">
+<!ENTITY sort.descending.accesskey "Я">
+<!ENTITY noGroupSelected.text "Ви маєте вибрати групу фільтрів до того як її фільтри можна буде показати.">
+<!ENTITY noFiltersInGroup.text "Вибрана група пуста.">
+<!ENTITY filters.remove.warning "Ви дійсно хочете вилучити всі вибрані фільтри?">
+<!ENTITY backupButton.label "Резервні копії та відновлення">
+<!ENTITY backupButton.accesskey "Р">
+<!ENTITY backup.label "Створити нову резервну копію">
+<!ENTITY restore.default.label "Відновитись з резервної копії ?1?">
+<!ENTITY restore.own.label "Відновитись з власної резервної копії">
+<!ENTITY backup.complete.title "Всі фільтри та підписки">
+<!ENTITY backup.custom.title "Лише власні фільтри">
+<!ENTITY backup.error "Під час запису фільтрів у файл сталася помилка. Упевніться, що файл не захищений від запису і не використовується іншою програмою.">
+<!ENTITY restore.error "Дані з файла неможливо обробити — може, це не є Адблоківська резервна копія?">
+<!ENTITY restore.complete.warning "Всі ваші налаштування фільтрів будуть замінені вмістом вибраного файла. Продовжити?">
+<!ENTITY restore.custom.warning "Всі ваші власні фільтри будуть замінені вмістом вибраного файла. Продовжити?">
+<!ENTITY restore.minVersion.warning "Увага: файл було створено новішою версією Adblock Plus.Вам слід оновити Adblock Plus до останньої версії перш ніж відновлюватись з цього файла.">
+<!ENTITY find.label "Знайти фільтр">
+<!ENTITY find.accesskey "н">
+<!ENTITY close.label "Закрити">
diff --git a/chrome/adblockplus.jar!/locale/uk/firstRun.dtd b/chrome/adblockplus.jar!/locale/uk/firstRun.dtd
new file mode 100644
index 0000000..bc35b23
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/uk/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Встановлення Adblock Plus завершено">
+<!ENTITY confirmation "
+ Дякуємо вам що встановили Adblock Plus. Рекламу віднині заблоковано.
+ Насолоджуйтесь!">
+<!ENTITY advancedSection "Додаткові опції">
+<!ENTITY listSelection1 "
+ Наступний фільтровий список було сконфігуровано щоб блокувати рекламу:
+">
+<!ENTITY noList "Нема списка фільтрів">
+<!ENTITY visitHomepage.label "Відвідати домашню сторінку списка">
+<!ENTITY acceptableAds "
+ Adblock Plus було сконфігуровано дозволяти ненав’язливу рекламу.
+">
+<!ENTITY readMore.label "Детальніше про це">
+<!ENTITY listSelection2 "
+ Ви можете змінити цей вибір будь-коли у [link]Налаштуваннях фільтрів[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/uk/global.properties b/chrome/adblockplus.jar!/locale/uk/global.properties
index ce91295..450e9f3 100644
--- a/chrome/adblockplus.jar!/locale/uk/global.properties
+++ b/chrome/adblockplus.jar!/locale/uk/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? з ?2?
 blocked_count_addendum=(також відкрито: ?1?, приховано: ?2?)
 no_blocking_suggestions=На відкритій сторінці немає елементів, які можна було б заблокувати
 whitelisted_page=Adblock Plus вимкнено для цієї сторінки
-whitelist_description=Мої винятки
-filterlist_description=Мої фільтри реклами
-invalid_description=Мої помилкові фільтри
-elemhide_description=Правила приховування елементів
-subscription_description=Підписка:
-subscription_wrong_version=Деякі фільтри в цій підписці вимагають щонайменше Adblock Plus ?1? для коректної роботи
-subscription_source=Джерело:
-subscription_status=Стан:
-subscription_status_autodownload=Оновлюється автоматично
-subscription_status_manualdownload=Оновлюється вручну
-subscription_status_externaldownload=Оновлюється іншим розширенням
-subscription_status_lastdownload=Останнє оновлення:
-subscription_status_lastdownload_inprogress=Завантажується…
-subscription_status_lastdownload_unknown=ніколи
+newGroup_title=Нова група фільтрів
+whitelistGroup_title=Правила винятків
+blockingGroup_title=Правила блокування
+elemhideGroup_title=Правила приховування
 remove_subscription_warning=Ви впевнені, що хочете вилучити цю підписку?
-import_filters_wrong_version=Попередження: Деякі фільтри в цьому списку вимагають щонайменше Adblock Plus ?1? для коректної роботи. Можливо, вам краще оновити вашу версію Adblock Plus, перш ніж імпортувати цей список.
-import_filters_warning=Ви хочете замінити існуючі фільтри або додати фільтри, що імпортуються, в кінець?
-import_filters_title=Імпорт фільтрів
-export_filters_title=Експорт фільтрів
-invalid_filters_file=Файл не містить списку фільтрів для Adblock Plus.
-filters_write_error=При записі фільтрів у файл виникла помилка. Можливо на файлі встановлено захист від запису або він використовується іншою програмою.
-clearall_warning=Ви впевнені, що хочете стерти всі фільтри?
-resethitcounts_warning=Ви впевнені, що хочете обнулити статистику для всіх фільтрів? Зауважте: це незворотня дія.
-resethitcounts_selected_warning=Ви впевнені, що ви хочете обнулити статистику для відмічених фільтрів? Зауважте, це незворотня дія!
+clearStats_warning=Це скине всю статистику по фільтрам та вимкне рахування хітів. Продовжити?
 filter_regexp_tooltip=Цей фільтр або регулярний вираз або закороткий для оптимізування. Забагато фільтрів можуть вповільнити перегляд сторінок
 filter_elemhide_duplicate_id=Можна вказати лише один ID приховуваного елемента
 filter_elemhide_nocriteria=Не вказаний критерій за яким упізнати приховуваний елемент
-subscription_notAdded_warning=Ви не додали підписку на фільтри. Без підписки вам треба буде додавати фільтри Adblock Plus вручну.
-subscription_notAdded_warning_addendum=Хочете продовжити?
 subscription_invalid_location=Не вдалося розпізнати введену адресу ні як інтернет адресу, ні як шлях до файлу.
-synchronize_invalid_url=Помилка, невірна адреса
-synchronize_connection_error=Помилка, неможливо викачати
-synchronize_invalid_data=Помилка, не список фільтрів
-synchronize_checksum_mismatch=Помилка, не збіглась контрольна сума
-synchronize_ok=Успіх
-overwrite=Замінити
-append=Додати
-new_filter_group_title=Новий фільтр
 type_label_other=Невідомий
 type_label_script=Скрипт
 type_label_image=Зображення
@@ -56,15 +28,12 @@ type_label_object=Об’єкт
 type_label_subdocument=Фрейм
 type_label_document=Документ
 type_label_elemhide=Приховане
-type_label_xbl=XBL прив’язка
-type_label_ping=Клацання по посиланню
+type_label_popup=виринаюче вікно
 type_label_xmlhttprequest=XML-запит
 type_label_object_subrequest=Запит об’єкта
-type_label_dtd=DTD
 type_label_media=аудіо/відео
 type_label_font=шрифт
 fennec_status_enabled=Adblock Plus увімкнено.
 fennec_status_disabled=Adblock Plus вимкнено.
 fennec_status_enabled_site=Adblock Plus увімкнено для ?1?.
 fennec_status_disabled_site=Adblock Plus вимкнено для ?1?.
-sync_engine_title=Дані Adblock Plus
diff --git a/chrome/adblockplus.jar!/locale/uk/overlay.dtd b/chrome/adblockplus.jar!/locale/uk/overlay.dtd
index dd3da0f..9e64dae 100644
--- a/chrome/adblockplus.jar!/locale/uk/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/uk/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Налаштування Adblock Plus">
 <!ENTITY menuitem.accesskey "A">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: елементи сторінки">
 <!ENTITY context.image.label "Adblock Plus: заблокувати зображення">
 <!ENTITY context.object.label "Adblock Plus: заблокувати об’єкт">
 <!ENTITY context.frame.label "Adblock Plus: заблокувати фрейм">
@@ -13,15 +12,31 @@
 <!ENTITY sidebar.title "Елементи відкритої сторінки">
 <!ENTITY sendReport.label "Повідомити про проблеми на сторінці">
 <!ENTITY sendReport.accesskey "с">
-<!ENTITY settings.label "Налаштування">
-<!ENTITY settings.accesskey "ш">
+<!ENTITY filters.label "Налаштування фільтрів">
+<!ENTITY filters.accesskey "Н">
 <!ENTITY opensidebar.label "Відкрити список елементів">
 <!ENTITY opensidebar.accesskey "п">
 <!ENTITY closesidebar.label "Закрити список елементів">
 <!ENTITY closesidebar.accesskey "п">
 <!ENTITY whitelist.site.label "Вимкнути: на ?1?">
 <!ENTITY whitelist.page.label "Вимкнути: тільки на цій сторінці">
+<!ENTITY disable.label "Вимкнути всюди">
+<!ENTITY options.label "Налаштування">
+<!ENTITY options.accesskey "а">
+<!ENTITY contribute.label "Допомогти Адблоку">
+<!ENTITY showintoolbar.label "Показувати в панелі інструментів">
+<!ENTITY showintoolbar.accesskey "к">
+<!ENTITY showinstatusbar.label "Показувати в рядку стану">
+<!ENTITY showinstatusbar.accesskey "с">
+<!ENTITY showinaddonbar.label "Показувати в панелі додатків">
+<!ENTITY showinaddonbar.accesskey "д">
+<!ENTITY objecttabs.label "Показувати ярлик на Flash і Java">
+<!ENTITY objecttabs.accesskey "я">
+<!ENTITY hideplaceholders.label "Приховувати замінники заблокованих елементів">
+<!ENTITY hideplaceholders.accesskey "х">
+<!ENTITY counthits.label "Рахувати хіти фільтрів">
+<!ENTITY counthits.accesskey "Р">
+<!ENTITY sync.label "Синхронізувати налаштуванна Адблоку">
+<!ENTITY sync.accesskey "С">
 <!ENTITY objecttab.title "Заблокувати">
 <!ENTITY objecttab.tooltip "Натисніть тут, щоб заблокувати цей об’єкт">
-<!ENTITY disable.label "Disable everywhere">
-<!ENTITY recommend.label "Recommend us on Facebook">
diff --git a/chrome/adblockplus.jar!/locale/uk/sendReport.dtd b/chrome/adblockplus.jar!/locale/uk/sendReport.dtd
index 9e087a3..7403a26 100644
--- a/chrome/adblockplus.jar!/locale/uk/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/uk/sendReport.dtd
@@ -25,6 +25,15 @@
 <!ENTITY issues.nofilters.description "Adblock Plus не блокує нічого на поточній сторінці. Маайже напевне, проблема, яку ви бачите, не пов’язана з Adblock Plus.">
 <!ENTITY issues.nosubscriptions.description "Ви не підписані на жоден з готових списків фільтрування котрі автоматично вилучають небажаний вміст з сайтів.">
 <!ENTITY issues.nosubscriptions.add.label "Додати підписку на фільтри">
+<!ENTITY issues.subscriptionCount.description "
+ Здається, ви підписались на забагато фільтрових підписок.
+ Ми не радимо таке робити, оскільки можливість отримати проблеми дуже висока.
+ Також ми не можемо прийняти ваш звіт, оскільки незрозуміло, 
+ котрому з авторів підписок слід щось зробити.
+ Вилучте всі підписки крім дійсно необхідних, і перевірте, 
+ чи проблема все ще буде присутня.
+">
+<!ENTITY issues.openPreferences.label "Відкрити фільтрові підписки">
 <!ENTITY issues.ownfilters.description "Деякі з застосованих фільтрів були задані користувачем. Вимкніть фільтри що могли спричинити проблему.">
 <!ENTITY issues.ownfilters.disable.label "Вимкнути фільтр">
 <!ENTITY issues.disabledgroups.description "Наступні фільтрові підписки/групи вимкнені, але могли вплинути на цю сторінку:">
@@ -71,12 +80,3 @@
 <!ENTITY sendPage.retry.label "Надіслати ще раз">
 <!ENTITY copyLink.label "Скопіювати посилання звіту">
 <!ENTITY copyLink.accesskey "к">
-<!ENTITY issues.openPreferences.label "Open filter preferences">
-<!ENTITY issues.subscriptionCount.description "
-  It seems that you are subscribed to too many filter subscriptions. This
-  setup is not recommended because it will make the likeliness
-  of issues much higher. We also cannot accept your issue report because it
-  is unclear which filter subscription author needs to take action. Please
-  remove all but the really necessary filter subscriptions and test whether
-  the issue still occurs then.
-">
diff --git a/chrome/adblockplus.jar!/locale/uk/settings.dtd b/chrome/adblockplus.jar!/locale/uk/settings.dtd
deleted file mode 100644
index 493e20e..0000000
--- a/chrome/adblockplus.jar!/locale/uk/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus - Налаштування">
-<!ENTITY filters.label "Фільтри">
-<!ENTITY filters.accesskey "і">
-<!ENTITY add.label "Додати фільтр">
-<!ENTITY add.accesskey "д">
-<!ENTITY addsubscription.label "Додати підписку">
-<!ENTITY addsubscription.accesskey "о">
-<!ENTITY synchsubscriptions.label "Викачати всі підписки">
-<!ENTITY synchsubscriptions.accesskey "п">
-<!ENTITY import.label "Імпорт фільтрів">
-<!ENTITY import.accesskey "м">
-<!ENTITY export.label "Експорт фільтрів">
-<!ENTITY export.accesskey "к">
-<!ENTITY clearall.label "Стерти всі фільтри">
-<!ENTITY clearall.accesskey "и">
-<!ENTITY resethitcounts.label "Обнулити статистику попадань">
-<!ENTITY resethitcounts.accesskey "у">
-<!ENTITY edit.label "Правка">
-<!ENTITY edit.accesskey "р">
-<!ENTITY cut.label "Вирізати">
-<!ENTITY cut.accesskey "р">
-<!ENTITY copy.label "Копіювати">
-<!ENTITY copy.accesskey "о">
-<!ENTITY paste.label "Вставити">
-<!ENTITY paste.accesskey "а">
-<!ENTITY remove.label "Вилучити">
-<!ENTITY remove.accesskey "и">
-<!ENTITY menu.find.label "Знайти фільтр">
-<!ENTITY menu.find.accesskey "н">
-<!ENTITY menu.findagain.label "Знайти наступний">
-<!ENTITY menu.findagain.accesskey "т">
-<!ENTITY view.label "Вигляд">
-<!ENTITY view.accesskey "В">
-<!ENTITY sort.label "Сортувати за">
-<!ENTITY sort.accesskey "С">
-<!ENTITY sort.none.label "Несортовано">
-<!ENTITY sort.none.accesskey "Н">
-<!ENTITY sort.ascending.label "Від А до Я">
-<!ENTITY sort.ascending.accesskey "А">
-<!ENTITY sort.descending.label "Від Я до А">
-<!ENTITY sort.descending.accesskey "Я">
-<!ENTITY options.label "Налаштування">
-<!ENTITY options.accesskey "а">
-<!ENTITY enable.label "Увімкнути Adblock Plus">
-<!ENTITY enable.accesskey "У">
-<!ENTITY showintoolbar.label "Показувати в панелі інструментів">
-<!ENTITY showintoolbar.accesskey "к">
-<!ENTITY showinstatusbar.label "Показувати в рядку стану">
-<!ENTITY showinstatusbar.accesskey "с">
-<!ENTITY objecttabs.label "Показувати ярлик на Flash і Java">
-<!ENTITY objecttabs.accesskey "я">
-<!ENTITY collapse.label "Згортати заблоковані елементи">
-<!ENTITY collapse.accesskey "о">
-<!ENTITY help.label "Довідка">
-<!ENTITY help.accesskey "о">
-<!ENTITY gettingStarted.label "Початківцям">
-<!ENTITY gettingStarted.accesskey "П">
-<!ENTITY faq.label "Питання, що часто ставляться (англійською)">
-<!ENTITY faq.accesskey "и">
-<!ENTITY filterdoc.label "Складання фільтрів для Adblock Plus (англійською)">
-<!ENTITY filterdoc.accesskey "а">
-<!ENTITY about.label "Про Adblock Plus">
-<!ENTITY about.accesskey "о">
-<!ENTITY description "Наступні фільтри визначають які адреси блокуються та які дозволяються:">
-<!ENTITY filter.column "Правило фільтрування">
-<!ENTITY filter.accesskey "ф">
-<!ENTITY slow.column "Повільні фільтри">
-<!ENTITY slow.accesskey "і">
-<!ENTITY enabled.column "Увімкнено">
-<!ENTITY enabled.accesskey "в">
-<!ENTITY hitcount.column "Попадань">
-<!ENTITY hitcount.accesskey "п">
-<!ENTITY lasthit.column "Останнє попадання">
-<!ENTITY lasthit.accesskey "О">
-<!ENTITY context.edit.label "Редагувати фільтр">
-<!ENTITY context.resethitcount.label "Обнулити статистику попадань для фільтру">
-<!ENTITY context.synchsubscription.label "Викачати фільтри наново">
-<!ENTITY context.editsubscription.label "Редагувати підписку">
-<!ENTITY context.moveup.label "Зрушити вгору">
-<!ENTITY context.movedown.label "Зрушити вниз">
-<!ENTITY context.movegroupup.label "Зрушити групу вгору">
-<!ENTITY context.movegroupdown.label "Зрушити групу вниз">
-<!ENTITY context.enable.label "Увімкнути">
-<!ENTITY context.disable.label "Вимкнути">
-<!ENTITY apply.label "Застосувати">
-<!ENTITY apply.accesskey "т">
-<!ENTITY fennec.subscription.label "Фільтрові підписки">
-<!ENTITY sync.accesskey "c">
-<!ENTITY sync.label "Sync Adblock Plus settings">
diff --git a/chrome/adblockplus.jar!/locale/uk/sidebar.dtd b/chrome/adblockplus.jar!/locale/uk/sidebar.dtd
index fc309ac..3e2ce93 100644
--- a/chrome/adblockplus.jar!/locale/uk/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/uk/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "Фільтр">
 <!ENTITY state.label "Статус">
 <!ENTITY size.label "Розмір">
+<!ENTITY filterSource.label "Джерело фільтра">
 <!ENTITY docDomain.label "Джерело документа">
 <!ENTITY docDomain.thirdParty "(запит з іншого сайта)">
 <!ENTITY docDomain.firstParty "(запит з того ж сайта)">
diff --git a/chrome/adblockplus.jar!/locale/uk/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/uk/subscriptionSelection.dtd
index 86d3105..63adacf 100644
--- a/chrome/adblockplus.jar!/locale/uk/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/uk/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Додати підписку на фільтри Adblock Plus">
-<!ENTITY dialog.title.edit "Редагувати підписку">
-<!ENTITY description.newInstall "Adblok Plus буде найефективніший якщо ви додасте фільтрову підписку. Фільтрові підписки надаються іншими користувачами Adblock Plus безплатно. Найбільш підходящі для вашої мови підписки вже вибрані.">
 <!ENTITY subscriptionSelector.label "Будь ласка виберіть фільтрову підписку з переліку:">
 <!ENTITY viewList.label "Глянути фільтри">
 <!ENTITY visitHomepage.label "Відвідати домашню сторінку">
 <!ENTITY addSubscription.label "Додати підписку">
-<!ENTITY saveSubscription.label "Зберегти підписку">
-<!ENTITY other.label "Додати іншу підписку">
-<!ENTITY other.accesskey "о">
 <!ENTITY list.download.failed "Adblock Plus не зміг отримати перелік підписок">
 <!ENTITY list.download.retry "Спробувати ще раз">
 <!ENTITY list.download.website "Глянути сайт">
 <!ENTITY fromWeb.description "Будь ласка підтвердіть що ви бажаєте додати цю фільтрову підписку. Ви можете змінити назву чи знаходження перед додаванням.">
-<!ENTITY edit.description "Ви можете змінити назву чи знаходження підписки якщо потрібно.">
-<!ENTITY external.description "Це зовнішня фільтрова підписка. Вона буде оновлюватись додатком що створив цю підписку.">
 <!ENTITY title.label "Назва підписки:">
 <!ENTITY title.accesskey "Н">
 <!ENTITY location.label "Адреса списку фільтрів:">
 <!ENTITY location.accesskey "е">
-<!ENTITY autodownload.label "Оновлювати автоматично">
-<!ENTITY autodownload.accesskey "а">
 <!ENTITY supplementMessage "Ця фільтрова підписка призначена для використання в парі з фільтровою підпискою «?1?», котру ви наразі не використовуєте.">
 <!ENTITY addMain.label "Додати також фільтрову підписку «?1?»">
 <!ENTITY addMain.accesskey "Д">
diff --git a/chrome/adblockplus.jar!/locale/vi/filters.dtd b/chrome/adblockplus.jar!/locale/vi/filters.dtd
new file mode 100644
index 0000000..430218a
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/vi/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY addSubscription.label "Thêm bộ lọc trọn gói">
+<!ENTITY addSubscriptionOther.label "Thêm bộ lọc trọn gói khác">
+<!ENTITY subscription.lastDownload.label "Lần tải cuối:">
+<!ENTITY subscription.lastDownload.inProgress "Đang tải...">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "Thất bại, không phải là địa chỉ hợp lệ">
+<!ENTITY subscription.lastDownload.connectionError "Thất bại, tải xuống thất bại">
+<!ENTITY subscription.lastDownload.invalidData "Thất bại, không phải là danh sách bộ lọc hợp lệ">
+<!ENTITY subscription.lastDownload.checksumMismatch "Thất bại, mã băm không phù hợp">
+<!ENTITY subscription.lastDownload.success "Thành công">
+<!ENTITY addFilter.label "Thêm bộ lọc">
+<!ENTITY filter.cut.label "Cắt">
+<!ENTITY filter.copy.label "Chép">
+<!ENTITY filter.paste.label "Dán">
+<!ENTITY filter.delete.label "Xóa">
+<!ENTITY viewMenu.label "Hiển thị">
+<!ENTITY filter.column "Quy luật lọc">
+<!ENTITY filter.accesskey "Q">
+<!ENTITY slow.column "Bộ lọc chậm">
+<!ENTITY slow.accesskey "B">
+<!ENTITY enabled.column "Hiệu lực">
+<!ENTITY enabled.accesskey "H">
+<!ENTITY hitcount.column "Số lần hit">
+<!ENTITY hitcount.accesskey "S">
+<!ENTITY lasthit.column "Lần hit cuối">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "Sắp xếp theo">
+<!ENTITY sort.accesskey "x">
+<!ENTITY sort.none.label "Chưa sắp xếp">
+<!ENTITY sort.none.accesskey "C">
+<!ENTITY sort.ascending.label "Thứ tự A > Z">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Thứ tự Z > A">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY find.label "Tìm">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY subscription.delete.label "Delete">
+<!ENTITY subscriptions.tab.label "Filter subscriptions">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY subscription.update.label "Update filters">
+<!ENTITY restore.complete.warning "All your filter preferences will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY filter.moveUp.label "Move up">
+<!ENTITY filter.edit.label "Edit">
+<!ENTITY close.label "Close">
+<!ENTITY find.accesskey "n">
+<!ENTITY readMore.label "Read more">
+<!ENTITY subscription.homepage.label "Homepage">
+<!ENTITY filters.remove.warning "Do you really want to remove all selected filters?">
+<!ENTITY restore.custom.warning "All your custom filters will be replaced by the contents of the selected file. Do you want to proceeed?">
+<!ENTITY subscription.actions.label "Actions">
+<!ENTITY filter.selectAll.label "Select All">
+<!ENTITY backupButton.label "Backup and Restore">
+<!ENTITY subscription.source.label "Filter list">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "Add">
+<!ENTITY subscription.showHideFilters.label "Show/hide filters">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY filter.actions.label "Filter actions">
+<!ENTITY filter.moveDown.label "Move down">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY subscription.editTitle.label "Edit title">
+<!ENTITY subscription.moveDown.label "Move down">
+<!ENTITY subscription.disabledFilters.warning "Some filters in this subscription are disabled.">
+<!ENTITY noFiltersInGroup.text "The selected group is empty.">
+<!ENTITY noFilters.text "
+  You don't have any custom filters yet.
+">
+<!ENTITY subscription.external.label "Updated by another extension">
+<!ENTITY noGroupSelected.text "You need to select a filter group before its filters can be displayed.">
+<!ENTITY addSubscriptionCancel.label "Cancel">
+<!ENTITY dialog.title "Adblock Plus Filter Preferences">
+<!ENTITY subscription.minVersion.warning "This filter subscription requires a newer Adblock Plus version, you should update to the latest Adblock Plus version.">
+<!ENTITY backup.error "There was an error writing filters to the file. Make sure that the file isn't write protected or in use by another application.">
+<!ENTITY restore.error "The file's data could not be processed, maybe this isn't an Adblock Plus backup file?">
+<!ENTITY backup.custom.title "Custom filters only">
+<!ENTITY subscription.moveUp.label "Move up">
+<!ENTITY backup.complete.title "All filters and subscriptions">
+<!ENTITY filters.tab.label "Custom filters">
+<!ENTITY acceptableAds.label "Allow non-intrusive advertising">
+<!ENTITY restore.minVersion.warning "Warning: the file has been created with a newer Adblock Plus version. You should update to the latest Adblock Plus version before restoring from this file.">
+<!ENTITY restore.default.label "Restore backup from ?1?">
+<!ENTITY subscription.enabled.label "Enabled">
+<!ENTITY noSubscriptions.text "
+  You haven't added any filter subscriptions yet. Adblock Plus won't block
+  anything without filters, please use &quot;Add filter subscription&quot; to
+  add some.
+">
+<!ENTITY addGroup.label "Add filter group">
+<!ENTITY restore.own.label "Restore own backup">
+<!ENTITY filter.resetHitCounts.label "Reset hit statistics">
+<!ENTITY backup.label "Create new backup">
+<!ENTITY subscription.disabledFilters.enable "Enable disabled filters">
diff --git a/chrome/adblockplus.jar!/locale/vi/firstRun.dtd b/chrome/adblockplus.jar!/locale/vi/firstRun.dtd
new file mode 100644
index 0000000..4689a10
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/vi/firstRun.dtd
@@ -0,0 +1,24 @@
+<!ENTITY dialog.title               "Adblock Plus installation complete">
+
+<!ENTITY confirmation               "
+  Thank you for installing Adblock Plus. Ads will be blocked from now on.
+  Enjoy!">
+
+<!ENTITY advancedSection            "Advanced options">
+
+<!ENTITY listSelection1             "
+  The following filter list has been configured to block advertising:
+">
+
+<!ENTITY noList                     "No filter list">
+<!ENTITY visitHomepage.label        "Visit list home page">
+
+<!ENTITY acceptableAds              "
+  Adblock Plus has also been configured to allow non-intrusive advertising.
+">
+
+<!ENTITY readMore.label             "Read more about this">
+
+<!ENTITY listSelection2             "
+  You can change this selection at any time in the [link]Filter Preferences[/link].
+">
diff --git a/chrome/adblockplus.jar!/locale/vi/global.properties b/chrome/adblockplus.jar!/locale/vi/global.properties
index bebb4c2..93cd8c3 100644
--- a/chrome/adblockplus.jar!/locale/vi/global.properties
+++ b/chrome/adblockplus.jar!/locale/vi/global.properties
@@ -10,44 +10,11 @@ blocked_count_tooltip=?1? trong ?2?
 blocked_count_addendum=(trong danh sách trắng: ?1?, bị ẩn: ?2?)
 no_blocking_suggestions=Không có mục nào trong trang hiện tại có thể chặn được
 whitelisted_page=Adblock Plus đã bị vô hiệu hóa cho trang hiện tại
-whitelist_description=Quy luật Ngoại lệ của Tôi
-filterlist_description=Quy luật Chặn quảng cáo của Tôi
-invalid_description=Quy luật Bất hợp lệ của Tôi
-elemhide_description=Quy luật Ẩn phần tử của Tôi
-subscription_description=Bộ lọc trọn gói:
-subscription_wrong_version=Một số bộ lọc trong bộ trọn gói này cần Adblock Plus ?1? để hoạt động đúng!
-subscription_source=Nguồn:
-subscription_status=Trạng thái:
-subscription_status_autodownload=Cập nhật tự động
-subscription_status_manualdownload=Cập nhật thủ công
-subscription_status_externaldownload=Cập nhật từ bên ngoài (phần mở rộng khác)
-subscription_status_lastdownload=Lần tải cuối:
-subscription_status_lastdownload_inprogress=Đang tải...
-subscription_status_lastdownload_unknown=N/A
 remove_subscription_warning=Bạn có thật sự muốn xóa bộ trọn gói này không?
-import_filters_wrong_version=Cảnh báo: một số bộ lọc trong danh sách này cần Adblock Plus ?1? để hoạt động đúng. Có lẽ bạn nên nâng cấp lên phiên bản mới nhất của Adblock Plus trước khi nhập danh sách này.
-import_filters_warning=Bạn muốn ghi đè lên các bộ lọc hiện tại hay chèn vào cuối danh sách?
-import_filters_title=Nhập bộ lọc
-export_filters_title=Xuất bộ lọc
-invalid_filters_file=Không phải là tập tin bộ lọc hợp lệ của Adblock Plus.
-filters_write_error=Có lỗi khi chép bộ lọc vào tập tin. Hãy chắc chắn rằng tập tin không bị chống ghi hay đang bị sử dụng bởi một chương trình khác.
-clearall_warning=Bạn có thật sự muốn xóa tất cả các bộ lọc trong danh sách không?
-resethitcounts_warning=Bạn có thật sự muốn đặt lại số lần hit của tất cả bộ lọc về 0? Thao tác này không thể hoàn tác được!
-resethitcounts_selected_warning=Bạn có thật sự muốn đặt lại số lần hit của các bộ lọc đã chọn về 0? Thao tác này không thể hoàn tác được!
 filter_regexp_tooltip=Bộ lọc này là một biểu thức quy tắc hoặc là do quá ngắn nên không tối ưu hóa được. Quá nhiều bộ lọc như thế này có thể làm chậm việc duyệt web của bạn.
 filter_elemhide_duplicate_id=Chỉ có thể xác định một ID của phần tử bị ẩn
 filter_elemhide_nocriteria=Không có chuẩn để nhận diện các phần tử bị ẩn
-subscription_notAdded_warning=Bạn đã không thêm một bộ lọc trọn gói. Nếu không có bộ lọc trọn gói, bạn sẽ cần phải tự tạo bộ lọc Adblock Plus riêng.
-subscription_notAdded_warning_addendum=Bạn có muốn tiếp tục không?
 subscription_invalid_location=Địa chỉ để tải bộ lọc không phải là một URL hay tên tập tin hợp lệ.
-synchronize_invalid_url=Thất bại, không phải là địa chỉ hợp lệ
-synchronize_connection_error=Thất bại, tải xuống thất bại
-synchronize_invalid_data=Thất bại, không phải là danh sách bộ lọc hợp lệ
-synchronize_checksum_mismatch=Thất bại, mã băm không phù hợp
-synchronize_ok=Thành công
-overwrite=Ghi đè
-append=Chèn vào cuối
-new_filter_group_title=Bộ lọc mới
 type_label_other=khác
 type_label_script=script
 type_label_image=ảnh
@@ -56,15 +23,17 @@ type_label_object=đối tượng
 type_label_subdocument=khung
 type_label_document=tài liệu
 type_label_elemhide=ẩn
-type_label_xbl=XBL binding
-type_label_ping=ping liên kết
 type_label_xmlhttprequest=yêu cầu XML
 type_label_object_subrequest=subrequest đối tượng
-type_label_dtd=DTD
 type_label_media=tiếng/phim
 type_label_font=phông
 fennec_status_enabled=Adblock Plus đang bật.
 fennec_status_disabled=Adblock Plus đang tắt.
 fennec_status_enabled_site=Adblock Plus đang bật trên ?1?.
 fennec_status_disabled_site=Adblock Plus đang tắt trên ?1?.
-sync_engine_title=Dữ liệu Adblock Plus
+blockingGroup_title=Ad Blocking Rules
+type_label_popup=pop-up window
+whitelistGroup_title=Exception Rules
+clearStats_warning=This will reset all filter hit statistics and disable counting filter hits. Do you want to proceed?
+elemhideGroup_title=Element Hiding Rules
+newGroup_title=New filter group
diff --git a/chrome/adblockplus.jar!/locale/vi/overlay.dtd b/chrome/adblockplus.jar!/locale/vi/overlay.dtd
index b59fad7..4f8ddf6 100644
--- a/chrome/adblockplus.jar!/locale/vi/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/vi/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Tùy chọn Adblock Plus">
 <!ENTITY menuitem.accesskey "P">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: Các Mục Có Thể Chặn">
 <!ENTITY context.image.label "Adblock Plus: Chặn Ảnh">
 <!ENTITY context.object.label "Adblock Plus: Chặn Đối Tượng">
 <!ENTITY context.frame.label "Adblock Plus: Chặn Khung">
@@ -13,8 +12,6 @@
 <!ENTITY sidebar.title "Các mục bị chặn trên trang hiện tại">
 <!ENTITY sendReport.label "Báo cáo vấn đề trên trang này">
 <!ENTITY sendReport.accesskey "B">
-<!ENTITY settings.label "Tùy chọn">
-<!ENTITY settings.accesskey "T">
 <!ENTITY opensidebar.label "Mở các mục có thể chặn được">
 <!ENTITY opensidebar.accesskey "m">
 <!ENTITY closesidebar.label "Đóng các mục có thể chặn được">
@@ -22,6 +19,24 @@
 <!ENTITY whitelist.site.label "Vô hiệu hóa trên ?1?">
 <!ENTITY whitelist.page.label "Chỉ vô hiệu hóa trên trang này">
 <!ENTITY disable.label "Vô hiệu hóa ở mọi nơi">
-<!ENTITY recommend.label "Giới thiệu chúng trên Facebook">
+<!ENTITY options.label "Tùy chọn">
+<!ENTITY options.accesskey "y">
+<!ENTITY showintoolbar.label "Hiện trong thanh công cụ">
+<!ENTITY showintoolbar.accesskey "c">
+<!ENTITY showinstatusbar.label "Hiện trong thanh trạng thái">
+<!ENTITY showinstatusbar.accesskey "r">
+<!ENTITY objecttabs.label "Hiện thẻ trên Flash và Java">
+<!ENTITY objecttabs.accesskey "t">
+<!ENTITY sync.label "Đồng bộ thiết lập Adblock Plus">
+<!ENTITY sync.accesskey "o">
 <!ENTITY objecttab.title "Chặn">
 <!ENTITY objecttab.tooltip "Nhấn vào đây để chặn đối tượng này với Adblock Plus">
+<!ENTITY filters.label "Filter preferences">
+<!ENTITY showinaddonbar.label "Show in add-on bar">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY filters.accesskey "F">
+<!ENTITY hideplaceholders.label "Hide placeholders of blocked elements">
+<!ENTITY contribute.label "Contribute to Adblock Plus">
+<!ENTITY counthits.label "Count filter hits">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY hideplaceholders.accesskey "l">
diff --git a/chrome/adblockplus.jar!/locale/vi/settings.dtd b/chrome/adblockplus.jar!/locale/vi/settings.dtd
deleted file mode 100644
index 05e68f9..0000000
--- a/chrome/adblockplus.jar!/locale/vi/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Tùy chọn Adblock Plus">
-<!ENTITY filters.label "Bộ lọc">
-<!ENTITY filters.accesskey "B">
-<!ENTITY add.label "Thêm bộ lọc">
-<!ENTITY add.accesskey "T">
-<!ENTITY addsubscription.label "Thêm bộ lọc trọn gói">
-<!ENTITY addsubscription.accesskey "m">
-<!ENTITY synchsubscriptions.label "Cập nhật tất cả bộ lọc trọn gói">
-<!ENTITY synchsubscriptions.accesskey "C">
-<!ENTITY import.label "Nhập các bộ lọc">
-<!ENTITY import.accesskey "N">
-<!ENTITY export.label "Xuất các bộ lọc tùy biến">
-<!ENTITY export.accesskey "u">
-<!ENTITY clearall.label "Xóa tất cả bộ lọc tùy biến">
-<!ENTITY clearall.accesskey "X">
-<!ENTITY resethitcounts.label "Đặt lại số lần hit về 0">
-<!ENTITY resethitcounts.accesskey "l">
-<!ENTITY edit.label "Chỉnh sửa">
-<!ENTITY edit.accesskey "C">
-<!ENTITY cut.label "Cắt">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "Chép">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "Dán">
-<!ENTITY paste.accesskey "D">
-<!ENTITY remove.label "Xóa">
-<!ENTITY remove.accesskey "X">
-<!ENTITY menu.find.label "Tìm">
-<!ENTITY menu.find.accesskey "m">
-<!ENTITY menu.findagain.label "Tìm Lại">
-<!ENTITY menu.findagain.accesskey "i">
-<!ENTITY view.label "Hiển thị">
-<!ENTITY view.accesskey "H">
-<!ENTITY sort.label "Sắp xếp theo">
-<!ENTITY sort.accesskey "x">
-<!ENTITY sort.none.label "Chưa sắp xếp">
-<!ENTITY sort.none.accesskey "C">
-<!ENTITY sort.ascending.label "Thứ tự A > Z">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Thứ tự Z > A">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "Tùy chọn">
-<!ENTITY options.accesskey "y">
-<!ENTITY enable.label "Bật Adblock Plus">
-<!ENTITY enable.accesskey "B">
-<!ENTITY showintoolbar.label "Hiện trong thanh công cụ">
-<!ENTITY showintoolbar.accesskey "c">
-<!ENTITY showinstatusbar.label "Hiện trong thanh trạng thái">
-<!ENTITY showinstatusbar.accesskey "r">
-<!ENTITY objecttabs.label "Hiện thẻ trên Flash và Java">
-<!ENTITY objecttabs.accesskey "t">
-<!ENTITY collapse.label "Thu gọn các phần tử bị chặn">
-<!ENTITY collapse.accesskey "u">
-<!ENTITY sync.label "Đồng bộ thiết lập Adblock Plus">
-<!ENTITY sync.accesskey "o">
-<!ENTITY help.label "Trợ giúp">
-<!ENTITY help.accesskey "p">
-<!ENTITY gettingStarted.label "Bắt đầu">
-<!ENTITY gettingStarted.accesskey "B">
-<!ENTITY faq.label "Câu hỏi Thường gặp">
-<!ENTITY faq.accesskey "C">
-<!ENTITY filterdoc.label "Hướng dẫn viết bộ lọc cho Adblock Plus">
-<!ENTITY filterdoc.accesskey "H">
-<!ENTITY about.label "Giới thiệu Adblock Plus">
-<!ENTITY about.accesskey "G">
-<!ENTITY description "Những bộ lọc sau xác định những địa chỉ nào sẽ bị chặn và những địa chỉ nào sẽ được cho phép:">
-<!ENTITY filter.column "Quy luật lọc">
-<!ENTITY filter.accesskey "Q">
-<!ENTITY slow.column "Bộ lọc chậm">
-<!ENTITY slow.accesskey "B">
-<!ENTITY enabled.column "Hiệu lực">
-<!ENTITY enabled.accesskey "H">
-<!ENTITY hitcount.column "Số lần hit">
-<!ENTITY hitcount.accesskey "S">
-<!ENTITY lasthit.column "Lần hit cuối">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "Chỉnh sửa bộ lọc">
-<!ENTITY context.resethitcount.label "Đặt lại số lần hit của bộ lọc về 0">
-<!ENTITY context.synchsubscription.label "Cập nhật bộ trọn gói ngay bây giờ">
-<!ENTITY context.editsubscription.label "Chỉnh sửa bộ trọn gói">
-<!ENTITY context.moveup.label "Di chuyển bộ lọc lên trên">
-<!ENTITY context.movedown.label "Di chuyển bộ lọc xuống dưới">
-<!ENTITY context.movegroupup.label "Di chuyển nhóm lên trên">
-<!ENTITY context.movegroupdown.label "Di chuyển nhóm xuống dưới">
-<!ENTITY context.enable.label "Kích hoạt">
-<!ENTITY context.disable.label "Vô hiệu hóa">
-<!ENTITY apply.label "Áp dụng">
-<!ENTITY apply.accesskey "d">
-<!ENTITY fennec.subscription.label "Bộ lọc trọn gói">
diff --git a/chrome/adblockplus.jar!/locale/vi/sidebar.dtd b/chrome/adblockplus.jar!/locale/vi/sidebar.dtd
index b1968c6..307f32f 100644
--- a/chrome/adblockplus.jar!/locale/vi/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/vi/sidebar.dtd
@@ -33,3 +33,4 @@
 <!ENTITY context.copy.label "Chép địa chỉ của mục này">
 <!ENTITY context.copyFilter.label "Chép bộ lọc">
 <!ENTITY context.selectAll.label "Chọn tất cả">
+<!ENTITY filterSource.label "Filter source">
diff --git a/chrome/adblockplus.jar!/locale/vi/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/vi/subscriptionSelection.dtd
index 0f549ba..fe7542c 100644
--- a/chrome/adblockplus.jar!/locale/vi/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/vi/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "Thêm bộ lọc trọn gói cho Adblock Plus">
-<!ENTITY dialog.title.edit "Chỉnh sửa bộ lọc trọn gói">
-<!ENTITY description.newInstall "Adblock Plus sẽ có hiệu quả nhất khi bạn cài một bộ lọc trọn gói. Bộ lọc trọn gói được cung cấp miễn phí bởi những người dùng Adblock Plus khác. Bộ lọc phù hợp nhất cho ngôn ngữ của bạn đã được chọn sẵn.">
 <!ENTITY subscriptionSelector.label "Vui lòng chọn một bộ lọc trọn gói từ danh sách:">
 <!ENTITY viewList.label "Xem bộ lọc">
 <!ENTITY visitHomepage.label "Vào trang chủ">
 <!ENTITY addSubscription.label "Thêm bộ trọn gói">
-<!ENTITY saveSubscription.label "Lưu bộ trọn gói">
-<!ENTITY other.label "Thêm bộ lọc trọn gói khác">
-<!ENTITY other.accesskey "b">
 <!ENTITY list.download.failed "Adblock Plus không thể lấy danh sách bộ lọc trọn gói.">
 <!ENTITY list.download.retry "Thử lại">
 <!ENTITY list.download.website "Xem trang web">
 <!ENTITY fromWeb.description "Vui lòng xác nhận rằng bạn muốn thêm bộ lọc trọn gói này. Bạn có thể thay đổi tiêu đề hoặc địa chỉ trước khi thêm nó.">
-<!ENTITY edit.description "Bạn có thể thay đổi tiêu đề hoặc địa chỉ của bộ trọn gói nếu cần.">
-<!ENTITY external.description "Đây là bộ lọc trọn gói bên ngoài; nó sẽ được cập nhật bởi phần mở rộng tạo ra nó.">
 <!ENTITY title.label "Tiêu đề của bộ trọn gói:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "Địa chỉ của danh sách bộ lọc:">
 <!ENTITY location.accesskey "a">
-<!ENTITY autodownload.label "Cập nhật tự động">
-<!ENTITY autodownload.accesskey "C">
 <!ENTITY supplementMessage "Bộ lọc trọn gói này chỉ nên dùng kèm với bộ lọc trọn gói "?1?" - cái mà bạn chưa sử dụng.">
 <!ENTITY addMain.label "Kèm thêm bộ lọc trọn gói "?1?"">
 <!ENTITY addMain.accesskey "g">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/about.dtd b/chrome/adblockplus.jar!/locale/zh-CN/about.dtd
index f8b619a..fb21744 100644
--- a/chrome/adblockplus.jar!/locale/zh-CN/about.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-CN/about.dtd
@@ -1,8 +1,6 @@
 <!ENTITY dialog.title "关于">
 <!ENTITY version.title "版本">
-<!ENTITY description "Adblock Plus允许你决定你不想在网页上见到什么。
-	您不再需要下载全部的广告、横幅或其他东西,
-	如果您不想要它们——告诉Adblock Plus!">
+<!ENTITY description "Adblock Plus允许你决定你不想在网页上见到什么。nnn	您不再需要下载全部的广告、横幅或其他东西,nn	如果您不想要它们——告诉Adblock Plus!">
 <!ENTITY homepage.label "Adblock Plus主页:">
 <!ENTITY author.label "作者:">
 <!ENTITY contributors.label "贡献者:">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/filters.dtd b/chrome/adblockplus.jar!/locale/zh-CN/filters.dtd
new file mode 100644
index 0000000..d33d696
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/zh-CN/filters.dtd
@@ -0,0 +1,92 @@
+<!ENTITY dialog.title "Adblock Plus 过滤规则参数">
+<!ENTITY subscriptions.tab.label "过滤规则订阅">
+<!ENTITY filters.tab.label "自定义过滤规则">
+<!ENTITY addSubscription.label "添加过滤规则订阅">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "添加">
+<!ENTITY addSubscriptionCancel.label "取消">
+<!ENTITY addSubscriptionOther.label "添加其他订阅">
+<!ENTITY noSubscriptions.text "
+	您还没有过滤规则订阅. Adblock Plus 没有过滤规则
+	进行无法屏蔽, 请使用 "添加过滤规则订阅" 
+	进行添加.
+">
+<!ENTITY subscription.homepage.label "主页">
+<!ENTITY subscription.external.label "由其他扩展更新">
+<!ENTITY subscription.source.label "过滤规则列表">
+<!ENTITY subscription.enabled.label "启用">
+<!ENTITY subscription.lastDownload.label "最新下载:">
+<!ENTITY subscription.lastDownload.inProgress "下载中……">
+<!ENTITY subscription.lastDownload.unknown "N/A">
+<!ENTITY subscription.lastDownload.invalidURL "失败,不是有效地址">
+<!ENTITY subscription.lastDownload.connectionError "失败,下载失败">
+<!ENTITY subscription.lastDownload.invalidData "失败,不是有效的过滤规则列表">
+<!ENTITY subscription.lastDownload.checksumMismatch "失败,检验和不匹配">
+<!ENTITY subscription.lastDownload.success "成功">
+<!ENTITY subscription.minVersion.warning "该过滤规则订阅需要更新的 Adblock Plus 版本, 您应该更新至最新的 Adblock Plus.">
+<!ENTITY subscription.disabledFilters.warning "该订阅中的某些过滤规则被禁用.">
+<!ENTITY subscription.disabledFilters.enable "启用已禁用的过滤规则">
+<!ENTITY subscription.actions.label "动作">
+<!ENTITY subscription.update.label "更新过滤规则">
+<!ENTITY subscription.editTitle.label "编辑标题">
+<!ENTITY subscription.delete.label "删除">
+<!ENTITY subscription.showHideFilters.label "显示/隐藏过滤规则">
+<!ENTITY subscription.moveUp.label "上移">
+<!ENTITY subscription.moveDown.label "下移">
+<!ENTITY acceptableAds.label "允许非骚扰型广告">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "深入了解">
+<!ENTITY addGroup.label "添加过滤规则组">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+	您还没有自定义过滤规则.
+">
+<!ENTITY addFilter.label "添加">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "过滤规则动作">
+<!ENTITY filter.edit.label "编辑">
+<!ENTITY filter.cut.label "剪切">
+<!ENTITY filter.copy.label "复制">
+<!ENTITY filter.paste.label "粘贴">
+<!ENTITY filter.delete.label "删除">
+<!ENTITY filter.selectAll.label "全部选中">
+<!ENTITY filter.resetHitCounts.label "重置过滤规则应用次数统计">
+<!ENTITY filter.moveUp.label "上移">
+<!ENTITY filter.moveDown.label "下移">
+<!ENTITY viewMenu.label "查看">
+<!ENTITY filter.column "过滤规则">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "慢速过滤规则">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "启用">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "计数">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "最后匹配时间">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "排序">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "未排序">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "A > Z 顺序">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "Z > A 顺序">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "想要显示过滤规则组中的过滤规则, 您需要先选择一个过滤规则组.">
+<!ENTITY noFiltersInGroup.text "选择的组是空的">
+<!ENTITY filters.remove.warning "您确定移除所有选择的过滤规则吗?">
+<!ENTITY backupButton.label "备份与还原">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "创建新备份">
+<!ENTITY restore.default.label "从 ?1? 还原备份">
+<!ENTITY restore.own.label "还原自己的备份">
+<!ENTITY backup.complete.title "所有过滤规则与订阅">
+<!ENTITY backup.custom.title "仅自定义过滤规则">
+<!ENTITY backup.error "将过滤规则写入文件时发生错误. 请确认该文件没有写保护或者正在被其他程序使用.">
+<!ENTITY restore.error "无法处理该文件, 可能该文件不是 Adblock Plus 备份文件?">
+<!ENTITY restore.complete.warning "您所有的过滤规则参数将被选择的文件中的内容所替代. 您是否继续?">
+<!ENTITY restore.custom.warning "您所有的自定义规则将被选择的文件中的内容所替代. 您是否继续?">
+<!ENTITY restore.minVersion.warning "警告: 该文件由新版本的 Adblock Plus 创建. 您应该从该文件还原之前更新至最新版本的 Adblock Plus.">
+<!ENTITY find.label "查找">
+<!ENTITY find.accesskey "n">
+<!ENTITY close.label "关闭">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/firstRun.dtd b/chrome/adblockplus.jar!/locale/zh-CN/firstRun.dtd
new file mode 100644
index 0000000..77c087c
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/zh-CN/firstRun.dtd
@@ -0,0 +1,17 @@
+<!ENTITY dialog.title "Adblock Plus 安装完成">
+<!ENTITY confirmation "
+	感谢您安装 Adblock Plus. 从今往后, 广告将被屏蔽.
+	尽情享受吧!">
+<!ENTITY advancedSection "高级选项">
+<!ENTITY listSelection1 "
+	下面的过滤规则列表已经配置过用于屏蔽广告:
+">
+<!ENTITY noList "无过滤规则列表">
+<!ENTITY visitHomepage.label "访问列表主页">
+<!ENTITY acceptableAds "
+	Adblock Plus 已经配置为允许非骚扰型广告.
+">
+<!ENTITY readMore.label "深入了解">
+<!ENTITY listSelection2 "
+	您可以在任何时候在 [link]过滤规则参数[/link] 中更改选择.
+">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/global.properties b/chrome/adblockplus.jar!/locale/zh-CN/global.properties
index 732a289..a63ca35 100644
--- a/chrome/adblockplus.jar!/locale/zh-CN/global.properties
+++ b/chrome/adblockplus.jar!/locale/zh-CN/global.properties
@@ -10,44 +10,16 @@ blocked_count_tooltip=?1? 项,共 ?2? 项
 blocked_count_addendum=(白名单:?1?,隐藏: ?2?)
 no_blocking_suggestions=当前页面无可过滤项目
 whitelisted_page=Adblock Plus在当前页面已禁用
-whitelist_description=白名单
-filterlist_description=广告过滤规则
-invalid_description=无效过滤规则
-elemhide_description=元素隐藏规则
-subscription_description=过滤规则订阅:
-subscription_wrong_version=该订阅中的某些过滤规则需要 Adblock Plus ?1? 才能正常工作!
-subscription_source=源:
-subscription_status=状态:
-subscription_status_autodownload=自动更新
-subscription_status_manualdownload=手动更新
-subscription_status_externaldownload=外部更新(另外的扩展)
-subscription_status_lastdownload=最新下载:
-subscription_status_lastdownload_inprogress=下载中……
-subscription_status_lastdownload_unknown=N/A
+newGroup_title=新建过滤过则组
+whitelistGroup_title=例外规则
+blockingGroup_title=广告屏蔽规则
+elemhideGroup_title=元素隐藏规则
 remove_subscription_warning=你真的希望移除该订阅么?
-import_filters_wrong_version=警告:列表中某些过滤规则需要Adblock Plus ?1? 才能正常工作。您或许应该在导入该列表前升级到最新版的Adblock Plus。
-import_filters_warning=你希望替换当前的过滤规则还是把新规则附加到列表底部?
-import_filters_title=导入过滤规则
-export_filters_title=导出过滤规则
-invalid_filters_file=不是有效的Adblock Plus过滤规则文件。
-filters_write_error=过滤规则写入文件错误。确保该文件没有写保护或被其他程序使用。
-clearall_warning=你真的想要从列表中移除所有过滤规则么?
-resethitcounts_warning=您真的希望将所有过滤规则的计数归零么?该操作不能撤销!
-resethitcounts_selected_warning=您真的希望将所选过滤规则的计数归零么?该操作不能撤销!
+clearStats_warning=该操作将重置并禁用所有过滤规则应用次数统计. 您是否希望进行此操作?
 filter_regexp_tooltip=该过滤规则是正则表达式或者太短而不能优化。如果这种类型的过滤规则太多会降低您浏览的速度。
 filter_elemhide_duplicate_id=仅可以指定一个要被隐藏的元素ID
 filter_elemhide_nocriteria=没有指定要被隐藏元素的识别标准
-subscription_notAdded_warning=您不能添加过滤规则订阅。没有过滤规则订阅的情况下,您需要手动添加 Adblock Plus 过滤规则。
-subscription_notAdded_warning_addendum=您希望继续么?
 subscription_invalid_location=过滤规则列表的位置不是有效的URL或有效的文件名
-synchronize_invalid_url=失败,不是有效地址
-synchronize_connection_error=失败,下载失败
-synchronize_invalid_data=失败,不是有效的过滤规则列表
-synchronize_checksum_mismatch=失败,检验和不匹配
-synchronize_ok=成功
-overwrite=覆盖
-append=附加
-new_filter_group_title=新建过滤规则
 type_label_other=其他
 type_label_script=脚本
 type_label_image=图片
@@ -56,15 +28,12 @@ type_label_object=对象
 type_label_subdocument=帧
 type_label_document=文档
 type_label_elemhide=隐藏
-type_label_xbl=XBL 绑定
-type_label_ping=链接测试
+type_label_popup=弹出窗口
 type_label_xmlhttprequest=XML 请求
 type_label_object_subrequest=对象子请求
-type_label_dtd=DTD
 type_label_media=音频/视频
 type_label_font=字体
 fennec_status_enabled=Adblock Plus 已启用。
 fennec_status_disabled=Adblock Plus 已禁用。
 fennec_status_enabled_site=Adblock Plus 在 ?1? 上启用。
 fennec_status_disabled_site=Adblock Plus 在 ?1? 上禁用。
-sync_engine_title=Adblock Plus 数据
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/overlay.dtd b/chrome/adblockplus.jar!/locale/zh-CN/overlay.dtd
index 24c29b5..a3d63e9 100644
--- a/chrome/adblockplus.jar!/locale/zh-CN/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-CN/overlay.dtd
@@ -4,7 +4,6 @@
 <!ENTITY menuitem.label "Adblock Plus">
 <!ENTITY menuitem.accesskey "B">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: 可过滤项目">
 <!ENTITY context.image.label "过滤图片(Adblock Plus)">
 <!ENTITY context.object.label "过滤对象(Adblock Plus)">
 <!ENTITY context.frame.label "过滤帧(Adblock Plus)">
@@ -13,8 +12,8 @@
 <!ENTITY sidebar.title "本页可过滤的项目">
 <!ENTITY sendReport.label "报告该页面上的问题">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "首选项">
-<!ENTITY settings.accesskey "F">
+<!ENTITY filters.label "过滤规则参数选择">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "打开可过滤项目">
 <!ENTITY opensidebar.accesskey "B">
 <!ENTITY closesidebar.label "关闭可过滤项目">
@@ -22,6 +21,22 @@
 <!ENTITY whitelist.site.label "在 ?1? 禁用Adblock Plus">
 <!ENTITY whitelist.page.label "仅在本页禁用Adblock Plus">
 <!ENTITY disable.label "完全禁用">
-<!ENTITY recommend.label "在 Facebook 上推荐我们">
+<!ENTITY options.label "选项">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "贡献至 Adblock Plus">
+<!ENTITY showintoolbar.label "在工具栏显示">
+<!ENTITY showintoolbar.accesskey "B">
+<!ENTITY showinstatusbar.label "在状态栏显示">
+<!ENTITY showinstatusbar.accesskey "S">
+<!ENTITY showinaddonbar.label "在附加组件栏显示">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "在Flash和Java上显示标签">
+<!ENTITY objecttabs.accesskey "T">
+<!ENTITY hideplaceholders.label "隐藏已屏蔽元素的占位符">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "过滤规则应用次数">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY sync.label "同步 Adblock Plus 设置">
+<!ENTITY sync.accesskey "c">
 <!ENTITY objecttab.title "过滤">
 <!ENTITY objecttab.tooltip "点击这里使 Adblock Plus 过滤该对象">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/sendReport.dtd b/chrome/adblockplus.jar!/locale/zh-CN/sendReport.dtd
index 9fd7787..088a4ac 100644
--- a/chrome/adblockplus.jar!/locale/zh-CN/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-CN/sendReport.dtd
@@ -20,8 +20,9 @@
 <!ENTITY issues.description "Adblock Plus 已经检测出您的设置可能导致该问题或致使报告困于调研。">
 <!ENTITY issues.whitelist.description "Adblock Plus 在您正在报告的页面上是禁用的。请在提交报告来帮助调研该问题之前重新启用 Adblock Plus 并重新载入页面。">
 <!ENTITY issues.whitelist.remove.label "在该页上重新启用 Adblock Plus">
-<!ENTITY issues.disabled.description "Adblock Plus 已禁用,当前状态下 Adblock Plus 不会过滤任何元素。
-	Adblock Plus is disabled, it will not block anything in its current state.">
+<!ENTITY issues.disabled.description "
+ Adblock Plus 已禁用,当前状态下 Adblock Plus 不会过滤任何元素。
+">
 <!ENTITY issues.disabled.enable.label "启用 Adblock Plus">
 <!ENTITY issues.nofilters.description "Adblock Plus 在当前页面上未过滤任何元素。您遇到的问题很可能与 Adblock Plus 无关。">
 <!ENTITY issues.nosubscriptions.description "您不能显示已订阅的任何预置过滤规则列表。">
@@ -43,8 +44,7 @@
 <!ENTITY reloadButton.label "重新载入页面">
 <!ENTITY reloadButton.accesskey "R">
 <!ENTITY screenshot.heading "附加截图">
-<!ENTITY screenshot.description "同样的页面,不同的人可能见到的并不同。如果您在报告中附加了截图,它可能帮助我们了解问题。您可以移除敏感信息的区域也可以标记出问题区域。点击相应的按钮并用鼠标在图片上选择区域即可。
-click the corresponding button and select a section of the image with your mouse.">
+<!ENTITY screenshot.description "同样的页面,不同的人可能见到的并不同。如果您在报告中附加了截图,它可能帮助我们了解问题。您可以移除敏感信息的区域也可以标记出问题区域。点击相应的按钮并用鼠标在图片上选择区域即可。nnnclick the corresponding button and select a section of the image with your mouse.">
 <!ENTITY screenshot.attach.label "为报告附加页面图片">
 <!ENTITY screenshot.attach.accesskey "t">
 <!ENTITY screenshot.mark.label "标记问题">
@@ -71,10 +71,7 @@ click the corresponding button and select a section of the image with your mouse
 <!ENTITY sendPage.waitMessage "Adblock Plus 正在提交您的报告,请稍等。">
 <!ENTITY sendPage.confirmation "您的报告已保存。您可以通过如下地址访问:">
 <!ENTITY sendPage.knownIssue "您提交的问题可能是个已知问题。详情:">
-<!ENTITY sendPage.errorMessage "发送报告失败,错误码 "?1?"。 请确保您已连接互联网并重试。如果问题依旧,请到 [link]Adblock Plus forum[/link] 寻求帮助。 
-	An attempt to send the report failed with error code "?1?". Please ensure you are
-	connected to the Internet and retry. If the problem persists please request
-	assistance in the [link]Adblock Plus forum[/link].">
+<!ENTITY sendPage.errorMessage "发送报告失败,错误码 "?1?"。 请确保您已连接互联网并重试。如果问题依旧,请到 [link]Adblock Plus forum[/link] 寻求帮助。 nnn	An attempt to send the report failed with error code "?1?". Please ensure you arenn	connected to the Internet and retry. If the problem persists please requestnn	assistance in the [link]Adblock Plus forum[/link].">
 <!ENTITY sendPage.retry.label "再次发送">
 <!ENTITY copyLink.label "复制报告链接">
 <!ENTITY copyLink.accesskey "C">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/settings.dtd b/chrome/adblockplus.jar!/locale/zh-CN/settings.dtd
deleted file mode 100644
index 0c733ad..0000000
--- a/chrome/adblockplus.jar!/locale/zh-CN/settings.dtd
+++ /dev/null
@@ -1,91 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus首选项">
-<!ENTITY filters.label "过滤规则">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "添加">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "添加过滤规则订阅">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "更新所有订阅">
-<!ENTITY synchsubscriptions.accesskey "D">
-<!ENTITY import.label "导入过滤规则">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "导出过滤规则">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "移除所有过滤规则">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "重置规则计数">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "编辑">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "剪切">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "复制">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "粘贴">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "删除">
-<!ENTITY remove.accesskey "D">
-<!ENTITY menu.find.label "查找">
-<!ENTITY menu.find.accesskey "F">
-<!ENTITY menu.findagain.label "再次查找">
-<!ENTITY menu.findagain.accesskey "G">
-<!ENTITY view.label "查看">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "排序">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "未排序">
-<!ENTITY sort.none.accesskey "U">
-<!ENTITY sort.ascending.label "A > Z 顺序">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "Z > A 顺序">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "选项">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "启用Adblock Plus">
-<!ENTITY enable.accesskey "N">
-<!ENTITY showintoolbar.label "在工具栏显示">
-<!ENTITY showintoolbar.accesskey "B">
-<!ENTITY showinstatusbar.label "在状态栏显示图标">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "在Flash和Java上显示标签">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "瓦解可过滤的元素">
-<!ENTITY collapse.accesskey "L">
-<!ENTITY sync.label "同步 Adblock Plus 设置">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "帮助">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "新手入门">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "常见问题">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "Adblock Plus 过滤规则写法">
-<!ENTITY filterdoc.accesskey "R">
-<!ENTITY about.label "关于Adblock Plus">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "添加你想过滤的地址,建议检查下拉列表。
-		你可以使用*作为通配符来创建更通用的过滤规则。
-		高级用户可以使用象 /banner\d+\.gif$/ 这样的正则表达式。">
-<!ENTITY filter.column "过滤规则">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "慢速过滤规则">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "启用">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "计数">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "最后匹配时间">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "编辑过滤规则">
-<!ENTITY context.resethitcount.label "重置该过滤规则的计数">
-<!ENTITY context.synchsubscription.label "现在更新订阅">
-<!ENTITY context.editsubscription.label "编辑订阅">
-<!ENTITY context.moveup.label "上移">
-<!ENTITY context.movedown.label "下移">
-<!ENTITY context.movegroupup.label "上移组">
-<!ENTITY context.movegroupdown.label "下移组">
-<!ENTITY context.enable.label "启用">
-<!ENTITY context.disable.label "禁用">
-<!ENTITY apply.label "应用">
-<!ENTITY apply.accesskey "P">
-<!ENTITY fennec.subscription.label "过滤规则订阅">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/sidebar.dtd b/chrome/adblockplus.jar!/locale/zh-CN/sidebar.dtd
index 5decd20..0c83cc2 100644
--- a/chrome/adblockplus.jar!/locale/zh-CN/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-CN/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "过滤规则">
 <!ENTITY state.label "状态">
 <!ENTITY size.label "大小">
+<!ENTITY filterSource.label "过滤规则源">
 <!ENTITY docDomain.label "文档源">
 <!ENTITY docDomain.thirdParty "(第三方)">
 <!ENTITY docDomain.firstParty "(甲方)">
diff --git a/chrome/adblockplus.jar!/locale/zh-CN/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/zh-CN/subscriptionSelection.dtd
index 5e2e862..9d80b3d 100644
--- a/chrome/adblockplus.jar!/locale/zh-CN/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-CN/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
 <!ENTITY dialog.title "添加 Adblock Plus 过滤规则订阅">
-<!ENTITY dialog.title.edit "编辑过滤规则订阅">
-<!ENTITY description.newInstall "要使 Adblock Plus 发挥最大功效,您应该添加规律规则订阅。这些规律规则订阅由其他 Adblock Plus 用户免费提供。大多数适用于您的语言的过滤过则订阅已经选择了。">
 <!ENTITY subscriptionSelector.label "从列表中选择过滤规则订阅:">
 <!ENTITY viewList.label "查看过滤规则">
 <!ENTITY visitHomepage.label "查看主页">
 <!ENTITY addSubscription.label "添加订阅">
-<!ENTITY saveSubscription.label "保存订阅">
-<!ENTITY other.label "添加其他订阅">
-<!ENTITY other.accesskey "f">
 <!ENTITY list.download.failed "获取订阅列表失败。">
 <!ENTITY list.download.retry "重试">
 <!ENTITY list.download.website "查看站点">
 <!ENTITY fromWeb.description "请确认您希望添加该过滤规则订阅。在添加之前,您可以更改订阅标题或位置。">
-<!ENTITY edit.description "您可以更改订阅挑剔或位置">
-<!ENTITY external.description "这是外部的过滤规则订阅,由该订阅创建的过滤规则列表将会由扩展自动更新">
 <!ENTITY title.label "订阅的标题:">
 <!ENTITY title.accesskey "T">
 <!ENTITY location.label "过滤规则列表位置:">
 <!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "自动更新">
-<!ENTITY autodownload.accesskey "P">
 <!ENTITY supplementMessage "该规律规则订阅意味着该订阅将与您未添加的过滤规则订阅 "?1?" 一起使用。">
 <!ENTITY addMain.label "同时添加过滤规则订阅"?1?"">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/about.dtd b/chrome/adblockplus.jar!/locale/zh-TW/about.dtd
index 331c8d6..c42f88a 100644
--- a/chrome/adblockplus.jar!/locale/zh-TW/about.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-TW/about.dtd
@@ -1,8 +1,9 @@
 <!ENTITY dialog.title "關於 Adblock Plus">
 <!ENTITY version.title "版本">
-<!ENTITY description "Adblock Plus 讓您自行決定甚麼東西才能出現在畫面上,
-	再也不用浪費時間下載礙眼的廣告。
-	討人厭的廣告佔滿網頁? — 讓 Adblock Plus 幫您解決!">
+<!ENTITY description "
+ Adblock Plus 讓您自行決定什麼東西才能出現在畫面上,再也不用浪費時間下載礙眼的廣告。
+討人厭的廣告佔滿網頁? — 讓 Adblock Plus 幫您解決!
+">
 <!ENTITY homepage.label "Adblock Plus 首頁:">
 <!ENTITY author.label "程式作者:">
 <!ENTITY contributors.label "貢獻者:">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/composer.dtd b/chrome/adblockplus.jar!/locale/zh-TW/composer.dtd
index 61d27cc..3cbdbed 100644
--- a/chrome/adblockplus.jar!/locale/zh-TW/composer.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-TW/composer.dtd
@@ -3,23 +3,23 @@
 <!ENTITY advanced.label "進階檢視">
 <!ENTITY basic.label "基本檢視">
 <!ENTITY disabled.warning "Adblock Plus 目前已停用。您還是可以新增過濾條件,但不會有任何作用,除非您[link]啟用 Adblock Plus[/link]。">
-<!ENTITY groupDisabled.warning "此過濾條件應加到過濾條件組 "?1?" 中,但該過濾條件組目前已停用。您還是可以新增過濾條件,但不會有任何作用,除非您[link]啟用該過濾條件組[/link]。">
+<!ENTITY groupDisabled.warning "此過濾條件應加到條件群組 "?1?" 中,但該條件群組目前已停用。您還是可以新增過濾條件,但不會有任何作用,除非您[link]啟用該過濾條件組[/link]。">
 <!ENTITY filter.label "新過濾條件:">
 <!ENTITY filter.accesskey "f">
 <!ENTITY preferences.label "顯示已有的條件...">
 <!ENTITY preferences.accesskey "S">
-<!ENTITY type.filter.label "已阻擋過濾條件">
+<!ENTITY type.filter.label "阻擋條件">
 <!ENTITY type.filter.accesskey "B">
-<!ENTITY type.whitelist.label "例外規則">
+<!ENTITY type.whitelist.label "例外條件">
 <!ENTITY type.whitelist.accesskey "x">
-<!ENTITY pattern.label "要比對的樣式">
-<!ENTITY pattern.explanation "樣式可以是網址的任一部分,符號「*」表示萬用字元。過濾條件只會套用到符合樣式的網址上。">
-<!ENTITY regexp.warning "您輸入的樣式是正規表示式,若清單內有太多正規表示式會拖慢瀏覽速度。若您不打算使用正規表示式,請在樣式結尾加上符號「*」。">
-<!ENTITY shortpattern.warning "您輸入的樣式太短,需要最佳化,若清單內有太多這類的樣式會拖慢瀏覽速度。建議您將此過濾條件改為更長的字串。">
-<!ENTITY match.warning "您輸入的樣式與要阻擋/忽略的網址不符,此樣式將不會生效。">
+<!ENTITY pattern.label "要比對的格式">
+<!ENTITY pattern.explanation "條件格式可以是網址的任一部分,星號 (*) 代表萬用字元。過濾條件只會套用在符合格式的網址上。">
+<!ENTITY regexp.warning "您輸入的格式將被解讀為正規表示法,使用正規表示法可能會使 Adblock Plus 拖慢瀏覽速度。若您不打算使用正規表示式,請在格式結尾加上星號 (*)。">
+<!ENTITY shortpattern.warning "您輸入的格式太短無法最佳化,這可能會拖慢瀏覽速度。建議您選擇較長的字串好讓 Adblock Plus 更有效率。">
+<!ENTITY match.warning "您輸入的格式與該網址不符,此條件不會生效。">
 <!ENTITY custom.pattern.label "自訂:">
 <!ENTITY custom.pattern.accesskey "C">
-<!ENTITY anchors.label "只比對樣式於:">
+<!ENTITY anchors.label "只接受特定格式:">
 <!ENTITY anchor.start.label "網址開頭">
 <!ENTITY anchor.start.accesskey "g">
 <!ENTITY anchor.start.flexible.label "網域名稱開頭">
@@ -29,7 +29,7 @@
 <!ENTITY options.label "選項">
 <!ENTITY domainRestriction.label "網域限制:">
 <!ENTITY domainRestriction.accesskey "d">
-<!ENTITY domainRestriction.help "請輸入要套用此過濾條件的網域名稱,有多個網域請以符號「|」分隔。若在網域名稱前加上符號「~」則表示此條件將「不會」套用於此網域。">
+<!ENTITY domainRestriction.help "此選項可指定一個或多個網域,請用管線符號 (|) 分隔。若在網域名稱前加上波浪符號 (~) 則表示條件不會套用於該網域。">
 <!ENTITY firstParty.label "只限第一方">
 <!ENTITY firstParty.accesskey "r">
 <!ENTITY thirdParty.label "只限第三方">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/filters.dtd b/chrome/adblockplus.jar!/locale/zh-TW/filters.dtd
new file mode 100644
index 0000000..17200ee
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/zh-TW/filters.dtd
@@ -0,0 +1,91 @@
+<!ENTITY dialog.title "Adblock Plus 條件偏好設定">
+<!ENTITY subscriptions.tab.label "過濾條件集">
+<!ENTITY filters.tab.label "自訂條件">
+<!ENTITY addSubscription.label "新增過濾條件集">
+<!ENTITY addSubscription.accesskey "f">
+<!ENTITY addSubscriptionAdd.label "加入">
+<!ENTITY addSubscriptionCancel.label "取消">
+<!ENTITY addSubscriptionOther.label "新增其他條件集">
+<!ENTITY noSubscriptions.text "
+ 您未加入任何過濾條件集。
+ 沒有過濾條件的話 Adblock Plus 不曉得該阻擋什麼,請使用"新增過濾條件集"加入。
+">
+<!ENTITY subscription.homepage.label "首頁">
+<!ENTITY subscription.external.label "由其他擴充套件更新">
+<!ENTITY subscription.source.label "條件列表">
+<!ENTITY subscription.enabled.label "啟用">
+<!ENTITY subscription.lastDownload.label "最後下載:">
+<!ENTITY subscription.lastDownload.inProgress "下載中...">
+<!ENTITY subscription.lastDownload.unknown "無法取得">
+<!ENTITY subscription.lastDownload.invalidURL "失敗,無效的位址">
+<!ENTITY subscription.lastDownload.connectionError "失敗,檔案下載失敗">
+<!ENTITY subscription.lastDownload.invalidData "失敗,無效的過濾條件列表">
+<!ENTITY subscription.lastDownload.checksumMismatch "失敗,驗證碼不符">
+<!ENTITY subscription.lastDownload.success "成功">
+<!ENTITY subscription.minVersion.warning "此條件集需要較新版的 Adblock Plus,您應該更新至最新版本。">
+<!ENTITY subscription.disabledFilters.warning "此條件集內有部份條件被停用。">
+<!ENTITY subscription.disabledFilters.enable "啟用所有條件">
+<!ENTITY subscription.actions.label "操作">
+<!ENTITY subscription.update.label "更新過濾條件">
+<!ENTITY subscription.editTitle.label "編輯標題">
+<!ENTITY subscription.delete.label "刪除">
+<!ENTITY subscription.showHideFilters.label "顯示/隱藏過濾條件">
+<!ENTITY subscription.moveUp.label "往上移">
+<!ENTITY subscription.moveDown.label "往下移">
+<!ENTITY acceptableAds.label "允許非侵入式廣告">
+<!ENTITY acceptableAds.accesskey "i">
+<!ENTITY readMore.label "詳細內容">
+<!ENTITY addGroup.label "新增條件群組">
+<!ENTITY addGroup.accesskey "g">
+<!ENTITY noFilters.text "
+ 您還沒有任何自訂條件。
+">
+<!ENTITY addFilter.label "新增過濾條件">
+<!ENTITY addFilter.accesskey "d">
+<!ENTITY filter.actions.label "條件操作">
+<!ENTITY filter.edit.label "編輯">
+<!ENTITY filter.cut.label "剪下">
+<!ENTITY filter.copy.label "複製">
+<!ENTITY filter.paste.label "貼上">
+<!ENTITY filter.delete.label "刪除">
+<!ENTITY filter.selectAll.label "全部選取">
+<!ENTITY filter.resetHitCounts.label "重設命中統計">
+<!ENTITY filter.moveUp.label "往上移">
+<!ENTITY filter.moveDown.label "往下移">
+<!ENTITY viewMenu.label "檢視">
+<!ENTITY filter.column "過濾條件">
+<!ENTITY filter.accesskey "F">
+<!ENTITY slow.column "慢速過濾條件">
+<!ENTITY slow.accesskey "w">
+<!ENTITY enabled.column "已啟用">
+<!ENTITY enabled.accesskey "n">
+<!ENTITY hitcount.column "命中次數">
+<!ENTITY hitcount.accesskey "H">
+<!ENTITY lasthit.column "最後命中">
+<!ENTITY lasthit.accesskey "L">
+<!ENTITY sort.label "排序">
+<!ENTITY sort.accesskey "S">
+<!ENTITY sort.none.label "不排序">
+<!ENTITY sort.none.accesskey "U">
+<!ENTITY sort.ascending.label "遞增排序 (A > Z)">
+<!ENTITY sort.ascending.accesskey "A">
+<!ENTITY sort.descending.label "遞增排序 (Z > A)">
+<!ENTITY sort.descending.accesskey "Z">
+<!ENTITY noGroupSelected.text "您需要選擇一個條件群組才能顯示其中的過濾條件。">
+<!ENTITY noFiltersInGroup.text "選中的群組是空的">
+<!ENTITY filters.remove.warning "您確定要移除所有選中的過濾條件?">
+<!ENTITY backupButton.label "備份及還原">
+<!ENTITY backupButton.accesskey "B">
+<!ENTITY backup.label "建立新的備份">
+<!ENTITY restore.default.label "還原至 ?1?">
+<!ENTITY restore.own.label "從自己的備份還原">
+<!ENTITY backup.complete.title "全部的條件和過濾條件集">
+<!ENTITY backup.custom.title "只有自訂條件">
+<!ENTITY backup.error "條件寫入檔案時發生錯誤。請確定該檔案沒有寫入保護或正被其他的應用程式使用。">
+<!ENTITY restore.error "無法處理該檔案的資料,也許這不是 Adblock Plus 的備份檔?">
+<!ENTITY restore.complete.warning "所有的條件偏好設定都將被選中的檔案替換。您確定要這麼做嗎?">
+<!ENTITY restore.custom.warning "所有的自訂條件都會被選中的檔案替換。您確定要這麼做嗎?">
+<!ENTITY restore.minVersion.warning "警告:這個檔案由較新版的 Adblock Plus 建立。從這個檔案還原前您應該先更新至最新版的 Adblock Plus。">
+<!ENTITY find.label "尋找">
+<!ENTITY find.accesskey "N">
+<!ENTITY close.label "關閉">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/firstRun.dtd b/chrome/adblockplus.jar!/locale/zh-TW/firstRun.dtd
new file mode 100644
index 0000000..5ef6912
--- /dev/null
+++ b/chrome/adblockplus.jar!/locale/zh-TW/firstRun.dtd
@@ -0,0 +1,16 @@
+<!ENTITY dialog.title "Adblock Plus 安裝完成">
+<!ENTITY confirmation "
+ 感謝您安裝 Adblock Plus。從現在起廣告都會被過濾。
+ 好好享受吧!">
+<!ENTITY advancedSection "進階選項">
+<!ENTITY listSelection1 "
+ 以下過濾條件集已設定用來阻擋廣告:
+">
+<!ENTITY noList "沒有過濾條件集">
+<!ENTITY visitHomepage.label "造訪條件集首頁">
+<!ENTITY acceptableAds "
+ Adblock Plus 已設定為允許非侵入式廣告。
+">
+<!ENTITY readMore.label "了解詳細內容">
+<!ENTITY listSelection2 "
+ 您可以隨時在[link]條件偏好設定[/link]中改變這個選項。">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/global.properties b/chrome/adblockplus.jar!/locale/zh-TW/global.properties
index 5849d28..298e830 100644
--- a/chrome/adblockplus.jar!/locale/zh-TW/global.properties
+++ b/chrome/adblockplus.jar!/locale/zh-TW/global.properties
@@ -1,53 +1,25 @@
 default_dialog_title=Adblock Plus
-action0_tooltip=按一下會跳出功能表,按中鍵則可啟用或停用 Adblock Plus。
-action1_tooltip=按一下會開啟或關閉可阻擋項目清單,按中鍵則可啟用或停用 Adblock Plus。
-action2_tooltip=按一下開啟偏好設定視窗,按中鍵則可啟用或停用 Adblock Plus。
+action0_tooltip=按一下會跳出功能表,按中鍵則可啟用/停用 Adblock Plus。
+action1_tooltip=按一下會開啟或關閉可阻擋項目清單,按中鍵則可啟用/停用 Adblock Plus。
+action2_tooltip=按一下開啟偏好設定視窗,按中鍵則可啟用/停用 Adblock Plus。
 action3_tooltip=按一下可啟用或停用 Adblock Plus。
 disabled_tooltip=Adblock Plus 已停用。
 active_tooltip=Adblock Plus 已啟用,?1? 份條件集已訂閱,?2? 條自訂條件已使用。
-whitelisted_tooltip=Adblock Plus 已啟用但本頁已設為白名單。
+whitelisted_tooltip=Adblock Plus 在目前頁面停用。
 blocked_count_tooltip=?1? 項共 ?2? 項
 blocked_count_addendum=(以及白名單: ?1?, 已隱藏: ?2?)
 no_blocking_suggestions=此頁面無可阻擋的物件
-whitelisted_page=此頁面為白名單,Adblock Plus 暫時停用
-whitelist_description=我的例外規則 (白名單)
-filterlist_description=我的阻擋廣告規則
-invalid_description=我的無效規則
-elemhide_description=我的元素隱藏規則
-subscription_description=已訂閱條件集:
-subscription_wrong_version=此過濾條件集的某些條件需要 Adblock Plus ?1? 方能正確運作!
-subscription_source=訂閱來源:
-subscription_status=狀態:
-subscription_status_autodownload=自動更新
-subscription_status_manualdownload=手動更新
-subscription_status_externaldownload=由外部套件更新
-subscription_status_lastdownload=最後下載日期:
-subscription_status_lastdownload_inprogress=下載中...
-subscription_status_lastdownload_unknown=N/A
-remove_subscription_warning=您確定要移除此訂閱項目嗎?
-import_filters_wrong_version=警告: 此清單中的某些過濾條件需要 Adblock Plus ?1? 方能正確運作。在匯入此清單前請先將 Adblock Plus 升級到最新版。
-import_filters_warning=您確定要覆蓋現有的過濾條件或追加條件於清單最末端?
-import_filters_title=匯入過濾條件
-export_filters_title=匯出過濾條件
-invalid_filters_file=無效的 Adblock Plus 過濾條件檔案。
-filters_write_error=寫入過濾條件到該檔案時發生錯誤。請確定該檔案不是唯讀檔案,或沒有被其他程式佔用。
-clearall_warning=您確定要刪除所有過濾條件嗎?
-resethitcounts_warning=您確定要重設所有條件的統計資料嗎?這個操作無法復原!
-resethitcounts_selected_warning=您確定要重設已選條件的統計資料嗎?這個操作無法復原!
-filter_regexp_tooltip=此過濾條件可能含正規表示式或太短需要最佳化,太多這類過濾條件會拖慢瀏覽速度。
-filter_elemhide_duplicate_id=只能指定一個要被隱藏的元素 ID
-filter_elemhide_nocriteria=未指定規則以辨認出要隱藏的元素
-subscription_notAdded_warning=您未訂閱過濾條件集。不訂閱則您必須手動加入 Adblock Plus 過濾條件。
-subscription_notAdded_warning_addendum=您確定要繼續嗎?
-subscription_invalid_location=過濾條件集網址或檔名無效。
-synchronize_invalid_url=失敗,無效的位址
-synchronize_connection_error=失敗,檔案下載失敗
-synchronize_invalid_data=失敗,無效的過濾條件集
-synchronize_checksum_mismatch=失敗,檢查碼不符
-synchronize_ok=成功
-overwrite=覆蓋
-append=追加
-new_filter_group_title=新過濾條件
+whitelisted_page=Adblock Plus 在目前頁面已被停用
+newGroup_title=新的條件群組
+whitelistGroup_title=例外條件
+blockingGroup_title=廣告阻擋條件
+elemhideGroup_title=元素隱藏條件
+remove_subscription_warning=您確定要移除此條件集嗎?
+clearStats_warning=這會重設所有的條件命中統計並停用命中計數器。您確定要這麼做?
+filter_regexp_tooltip=此過濾條件可能含正規表示法或太短需要最佳化,太多這類過濾條件會拖慢瀏覽速度。
+filter_elemhide_duplicate_id=只能指定一個欲隱藏元素的 ID
+filter_elemhide_nocriteria=未指定可供識別的元素隱藏規則
+subscription_invalid_location=條件集網址或檔名無效。
 type_label_other=其他
 type_label_script=程式碼
 type_label_image=圖片
@@ -56,15 +28,12 @@ type_label_object=物件
 type_label_subdocument=頁框
 type_label_document=文件
 type_label_elemhide=隱藏
-type_label_xbl=XBL binding
-type_label_ping=link ping
+type_label_popup=彈出式視窗
 type_label_xmlhttprequest=XML 請求
 type_label_object_subrequest=物件子請求
-type_label_dtd=DTD
 type_label_media=聲音/影片
 type_label_font=字體
 fennec_status_enabled=Adblock Plus 已啟用。
 fennec_status_disabled=Adblock Plus 已停用。
-fennec_status_enabled_site=Adblock Plus 已啟用於 ?1?。
-fennec_status_disabled_site=Adblock Plus 已停用於 ?1?。
-sync_engine_title=Adblock Plus 資料
+fennec_status_enabled_site=Adblock Plus 已於 ?1? 啟用。
+fennec_status_disabled_site=Adblock Plus 已於 ?1? 停用。
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/overlay.dtd b/chrome/adblockplus.jar!/locale/zh-TW/overlay.dtd
index 0fe97d5..cce2da2 100644
--- a/chrome/adblockplus.jar!/locale/zh-TW/overlay.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-TW/overlay.dtd
@@ -1,27 +1,42 @@
 <!ENTITY status.tooltip "狀態:">
-<!ENTITY blocked.tooltip "此頁已封鎖項目:">
-<!ENTITY filters.tooltip "最常用的條件:">
+<!ENTITY blocked.tooltip "此頁已阻擋項目:">
+<!ENTITY filters.tooltip "最活躍的條件:">
 <!ENTITY menuitem.label "Adblock Plus 偏好設定">
 <!ENTITY menuitem.accesskey "b">
 <!ENTITY toolbarbutton.label "Adblock Plus">
-<!ENTITY view.blockableItems.label "Adblock Plus: 可阻擋項目">
-<!ENTITY context.image.label "Adblock Plus: 阻擋圖片">
-<!ENTITY context.object.label "Adblock Plus: 阻擋物件">
-<!ENTITY context.frame.label "Adblock Plus: 阻擋頁框">
-<!ENTITY context.media.label "Adblock Plus: 阻擋影音">
-<!ENTITY context.removeWhitelist.label "Adblock Plus: 在此頁面重新啟用">
+<!ENTITY context.image.label "Adblock Plus:阻擋圖片">
+<!ENTITY context.object.label "Adblock Plus:阻擋物件">
+<!ENTITY context.frame.label "Adblock Plus:阻擋頁框">
+<!ENTITY context.media.label "Adblock Plus:阻擋影音">
+<!ENTITY context.removeWhitelist.label "Adblock Plus:此頁不設為白名單">
 <!ENTITY sidebar.title "本頁可阻擋項目">
 <!ENTITY sendReport.label "回報此頁面錯誤">
 <!ENTITY sendReport.accesskey "R">
-<!ENTITY settings.label "偏好設定">
-<!ENTITY settings.accesskey "f">
+<!ENTITY filters.label "條件偏好設定">
+<!ENTITY filters.accesskey "F">
 <!ENTITY opensidebar.label "開啟可阻擋項目">
 <!ENTITY opensidebar.accesskey "b">
 <!ENTITY closesidebar.label "關閉可阻擋項目">
 <!ENTITY closesidebar.accesskey "b">
-<!ENTITY whitelist.site.label "在此網域停用: ?1?">
-<!ENTITY whitelist.page.label "只在此頁面停用">
-<!ENTITY disable.label "全部停用">
-<!ENTITY recommend.label "在 Facebook 上給我們建議">
-<!ENTITY objecttab.title "封鎖">
-<!ENTITY objecttab.tooltip "請按這裡用 Adblock Plus 封鎖此物件">
+<!ENTITY whitelist.site.label "此網域設為白名單: ?1?">
+<!ENTITY whitelist.page.label "只將此頁面設為白名單">
+<!ENTITY disable.label "完全停用">
+<!ENTITY options.label "選項">
+<!ENTITY options.accesskey "O">
+<!ENTITY contribute.label "為 Adblock Plus 盡一份力">
+<!ENTITY showintoolbar.label "在工具列顯示">
+<!ENTITY showintoolbar.accesskey "b">
+<!ENTITY showinstatusbar.label "在狀態列顯示">
+<!ENTITY showinstatusbar.accesskey "s">
+<!ENTITY showinaddonbar.label "在附加元件列顯示">
+<!ENTITY showinaddonbar.accesskey "b">
+<!ENTITY objecttabs.label "Flash 和 Java 物件上顯示頁籤">
+<!ENTITY objecttabs.accesskey "t">
+<!ENTITY hideplaceholders.label "隱藏已阻擋元素所佔用的空間">
+<!ENTITY hideplaceholders.accesskey "l">
+<!ENTITY counthits.label "計算條件命中次數">
+<!ENTITY counthits.accesskey "h">
+<!ENTITY sync.label "同步 Adblock Plus 設定值">
+<!ENTITY sync.accesskey "c">
+<!ENTITY objecttab.title "阻擋">
+<!ENTITY objecttab.tooltip "請按這裡用 Adblock Plus 阻擋此物件">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/sendReport.dtd b/chrome/adblockplus.jar!/locale/zh-TW/sendReport.dtd
index 652fa5c..c03e4f8 100644
--- a/chrome/adblockplus.jar!/locale/zh-TW/sendReport.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-TW/sendReport.dtd
@@ -1,15 +1,16 @@
 <!ENTITY wizard.title "錯誤回報器">
-<!ENTITY privacyPolicy.label "隱私政策">
+<!ENTITY privacyPolicy.label "隱私權政策">
 <!ENTITY dataCollector.heading "歡迎使用錯誤回報器">
 <!ENTITY dataCollector.description "請稍候,Adblock Plus 正在蒐集必要的資料。">
 <!ENTITY typeSelector.heading "選擇問題類型">
-<!ENTITY typeSelector.description "本視窗會一步步指導您傳送一份 Adblock Plus 錯誤報告。
-	首先,請先選擇您遇到的錯誤類型:">
+<!ENTITY typeSelector.description "
+ 本視窗會一步步指導您傳送一份 Adblock Plus 錯誤報告。首先,請選擇您在此頁面碰到的錯誤類型:
+">
 <!ENTITY typeSelector.falsePositive.label "Adblock Plus 擋了太多東西">
 <!ENTITY typeSelector.falsePositive.accesskey "m">
-<!ENTITY typeSelector.falsePositive.description "選擇此選項表示網頁缺少了主要內容、顯示錯誤或功能異常。
-	您可以暫時停用 Adblock Plus 後再試一次,若停用後問題消失,
-	則很可能就是 Adblock Plus 的問題。">
+<!ENTITY typeSelector.falsePositive.description "
+ 選擇此選項表示網頁缺少了主要內容、顯示錯誤或功能異常。您可以暫時停用 Adblock Plus 後再試一次,若停用後問題消失,則很可能就是 Adblock Plus 的問題。
+">
 <!ENTITY typeSelector.falseNegative.label "Adblock Plus 沒有擋掉廣告">
 <!ENTITY typeSelector.falseNegative.accesskey "v">
 <!ENTITY typeSelector.falseNegative.description "選擇此選項表示雖然已啟用 Adblock Plus,但廣告依然顯示在網頁中。">
@@ -21,59 +22,70 @@
 <!ENTITY recentReports.clear.label "移除所有錯誤報告">
 <!ENTITY recentReports.clear.accesskey "R">
 <!ENTITY issues.description "Adblock Plus 偵測到某些設定值可能會造成該錯誤,或是影響分析結果。">
-<!ENTITY issues.whitelist.description "Adblock Plus 目前在您回報的頁面中停用。為了協助分析錯誤,在傳送錯誤報告前請重新啟用並重新載入該頁面。">
-<!ENTITY issues.whitelist.remove.label "重新啟用 Adblock Plus 於此頁面">
-<!ENTITY issues.disabled.description "Adblock Plus 已停用,目前狀態下不會阻擋任何網頁內容。">
+<!ENTITY issues.whitelist.description "
+ Adblock Plus 目前在您回報的頁面中停用。請在送出回報前重新啟用並重新整理以協助調查。
+">
+<!ENTITY issues.whitelist.remove.label "在此頁面重新啟用 Adblock Plus">
+<!ENTITY issues.disabled.description "
+ Adblock Plus 已停用,目前狀態下不會阻擋任何網頁內容。
+">
 <!ENTITY issues.disabled.enable.label "啟用 Adblock Plus">
-<!ENTITY issues.nofilters.description "Adblock Plus 於此頁面沒有阻擋任何內容。您回報的錯誤可能和 Adblock Plus 無關。">
-<!ENTITY issues.nosubscriptions.description "您似乎沒有訂閱任何過濾條件集,訂閱過濾條件集可自動移除與網頁內容無關的廣告。">
+<!ENTITY issues.nofilters.description "
+ Adblock Plus 在此頁面沒有阻擋任何東西。您回報的錯誤可能和 Adblock Plus 無關。
+">
+<!ENTITY issues.nosubscriptions.description "
+ 您似乎沒有訂閱任何過濾條件集,訂閱過濾條件集可自動移除與網頁內容無關的廣告。
+">
 <!ENTITY issues.nosubscriptions.add.label "訂閱過濾條件集">
-<!ENTITY issues.subscriptionCount.description "您似乎訂閱了過多的過濾條件集。我們不建議這麼做,因為這可能會增加發生錯誤的機率。同時我們無法接受您的錯誤回報,因為很難分辨是哪個條件集出了問題。請移除不重要的過濾條件集後再測試一次,看看錯誤是否仍會發生。">
+<!ENTITY issues.subscriptionCount.description "您似乎訂閱了過多的過濾條件集。我們不建議這麼做,因為這可能會增加發生錯誤的機率。同時我們無法接受您的錯誤回報,因為很難分辨是哪個條件集出了問題。請移除不重要的過濾條件集後再試一次,看看錯誤是否仍會發生。">
 <!ENTITY issues.openPreferences.label "開啟過濾條件設定視窗">
-<!ENTITY issues.ownfilters.description "該頁面的某些過濾條件是您自己手動設定的。
-	請停用這些過濾條件,這很可能就是導致錯誤發生的原因:">
+<!ENTITY issues.ownfilters.description "
+ 該頁面的某些過濾條件是您自己設定的。請停用這些過濾條件,這很可能就是導致錯誤發生的原因:
+">
 <!ENTITY issues.ownfilters.disable.label "停用過濾條件">
-<!ENTITY issues.disabledgroups.description "下列過濾條件集/過濾條件組已停用,
-	請啟用這些過濾條件,這很可能就是導致錯誤發生的原因:">
-<!ENTITY issues.disabledgroups.enable.label "啟用過濾條件集/過濾條件組">
-<!ENTITY issues.disabledfilters.description "下列過濾條件已停用,
-	請啟用這些過濾條件,這很可能就是導致錯誤發生的原因:">
+<!ENTITY issues.disabledgroups.description "
+ 下列過濾條件集/條件群組已停用,請啟用這些過濾條件,這很可能就是導致錯誤發生的原因:
+">
+<!ENTITY issues.disabledgroups.enable.label "啟用過濾條件集/條件群組">
+<!ENTITY issues.disabledfilters.description "
+ 下列過濾條件已停用,請啟用這些過濾條件,這很可能就是導致錯誤發生的原因:
+">
 <!ENTITY issues.disabledfilters.enable.label "啟用過濾條件">
-<!ENTITY issues.override.label "設定值無誤,繼續回報錯誤">
+<!ENTITY issues.override.label "設定值正確,繼續回報錯誤">
 <!ENTITY issues.override.accesskey "c">
-<!ENTITY issues.change.description "您的設定值已變更。請重新載入頁面測試錯誤是否仍然存在,
-	若錯誤依舊存在,則必須傳送錯誤報告。">
-<!ENTITY typeWarning.description "您表示您要回報的錯誤是 Adblock Plus 本身的錯誤而非過濾條件引起的錯誤。
-	請注意,這類程式錯誤最好能到 [link]Adblock Plus 討論區[/link] 上回報。
-	本回報器對這類錯誤只能用於討論區中已存在文章的補充說明,
-	您必須在 Adblock Plus 討論區的文章中貼上這次回報的錯誤報告連結,否則無人會發現此錯誤報告。
-	錯誤報告連結在傳送成功之後會自動產生。">
+<!ENTITY issues.change.description "
+ 您的設定值已變更。請重新載入頁面測試錯誤是否仍然存在,若錯誤依舊存在,請傳送錯誤報告。
+">
+<!ENTITY typeWarning.description "
+ 您表示要回報的錯誤是 Adblock Plus 本身的錯誤而非過濾條件引起的錯誤。請注意,這類程式錯誤最好到 [link]Adblock Plus 討論區[/link] 上回報。只有為討論串作補充時才應該使用錯誤回報器,沒有人會察覺您的錯誤報告網址,除非您將連結貼出來。
+ 結在傳送成功之後會自動產生。
+">
 <!ENTITY typeWarning.override.label "我了解並要傳送錯誤報告">
 <!ENTITY typeWarning.override.accesskey "s">
 <!ENTITY reloadButton.label "重新載入頁面">
 <!ENTITY reloadButton.accesskey "R">
-<!ENTITY screenshot.heading "附加螢幕抓圖">
-<!ENTITY screenshot.description "同樣的頁面每個人看到的情況可能都不同。附加螢幕抓圖到報告中可以幫我們更能了解問題所在。
-	您可以先移除內含敏感 (私人) 資訊的部份、並標示出錯誤發生的段落。
-	只要按下對應的按鈕並用滑鼠選擇您要移除/標示的段落即可。">
+<!ENTITY screenshot.heading "附加螢幕擷圖">
+<!ENTITY screenshot.description "
+ 同樣的頁面每個人看到的情況可能都不同。附加螢幕擷圖到報告中可以幫助我們更了解問題所在。您可以先移除包含敏感資訊的部份,也可以標示問題發生的區域,使其更為醒目。只要按下相應的按鈕並用滑鼠在圖片上選取即可。
+">
 <!ENTITY screenshot.attach.label "附加頁面圖片到報告中">
 <!ENTITY screenshot.attach.accesskey "t">
 <!ENTITY screenshot.mark.label "標示問題所在">
 <!ENTITY screenshot.mark.accesskey "M">
-<!ENTITY screenshot.remove.label "移除敏感 (私人) 資訊">
+<!ENTITY screenshot.remove.label "移除敏感資料">
 <!ENTITY screenshot.remove.accesskey "R">
 <!ENTITY screenshot.undo.label "復原">
 <!ENTITY screenshot.undo.accesskey "U">
-<!ENTITY commentPage.heading "輸入備註">
-<!ENTITY commentPage.description "下面的文字方塊可以讓您輸入額外的備註,以幫助我們更能了解問題所在。
-	這個步驟不是必須的,但若問題不太明顯或比較複雜,建議您還是寫下錯誤的詳細說明。
-	在回報之前您也可以檢視報告資料。">
+<!ENTITY commentPage.heading "輸入註解">
+<!ENTITY commentPage.description "
+ 下面的文字方塊可以讓您輸入額外的註解,以幫助我們更了解問題所在。這個步驟不是必須的,但若問題不太明顯時還是建議您這麼做。在回報之前您也可以檢視報告資料。
+">
 <!ENTITY comment.label "備註 (選用):">
 <!ENTITY comment.accesskey "C">
-<!ENTITY comment.lengthWarning "您輸入的備註超過 1000 個字元,備註欄位只能傳送 1000 個字元。">
+<!ENTITY comment.lengthWarning "您輸入的註解超過 1000 個字元。只有前 1000 個字元會被傳送。">
 <!ENTITY email.label "進一步聯繫的 Email 地址 (選用):">
 <!ENTITY email.accesskey "m">
-<!ENTITY attachExtensions.label "附加目前啟用的套件清單到報告中,以便排除是套件衝突所造成的錯誤">
+<!ENTITY attachExtensions.label "附加目前啟用的擴充套件列表至報告中,以便排除因套件衝突所產生的問題">
 <!ENTITY attachExtensions.accesskey "x">
 <!ENTITY sendButton.label "傳送報告">
 <!ENTITY sendButton.accesskey "n">
@@ -82,11 +94,11 @@
 <!ENTITY data.accesskey "p">
 <!ENTITY sendPage.heading "傳送報告">
 <!ENTITY sendPage.waitMessage "請稍候,Adblock Plus 正在傳送您的報告。">
-<!ENTITY sendPage.confirmation "您的報告已儲存,您可以點選下列網址檢視報告:">
-<!ENTITY sendPage.knownIssue "您回報的錯誤已重複,檢視更多資訊:">
-<!ENTITY sendPage.errorMessage "傳送錯誤報告失敗,錯誤碼 "?1?"。
-	請確定您已連上網路後再試一次。若依舊失敗,
-	請連上 [link]Adblock Plus 討論區[/link] 尋求幫助。">
+<!ENTITY sendPage.confirmation "您的報告已儲存,您可以在下列網址存取報告:">
+<!ENTITY sendPage.knownIssue "您回報的錯誤已重複。檢視更多資訊:">
+<!ENTITY sendPage.errorMessage "
+ 嘗試傳送報告失敗,錯誤碼 "?1?"。請確定您已連上網路後再試一次。若依舊失敗,請到 [link]Adblock Plus 討論區[/link] 尋求協助。
+">
 <!ENTITY sendPage.retry.label "再次傳送">
 <!ENTITY copyLink.label "複製報告連結">
 <!ENTITY copyLink.accesskey "C">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/settings.dtd b/chrome/adblockplus.jar!/locale/zh-TW/settings.dtd
deleted file mode 100644
index 9cb851d..0000000
--- a/chrome/adblockplus.jar!/locale/zh-TW/settings.dtd
+++ /dev/null
@@ -1,89 +0,0 @@
-<!ENTITY dialog.title "Adblock Plus 偏好設定">
-<!ENTITY filters.label "過濾條件">
-<!ENTITY filters.accesskey "F">
-<!ENTITY add.label "新增過濾條件">
-<!ENTITY add.accesskey "A">
-<!ENTITY addsubscription.label "訂閱過濾條件集">
-<!ENTITY addsubscription.accesskey "S">
-<!ENTITY synchsubscriptions.label "更新所有條件集">
-<!ENTITY synchsubscriptions.accesskey "D">
-<!ENTITY import.label "匯入過濾條件">
-<!ENTITY import.accesskey "M">
-<!ENTITY export.label "匯出過濾條件">
-<!ENTITY export.accesskey "X">
-<!ENTITY clearall.label "刪除所有自訂條件">
-<!ENTITY clearall.accesskey "L">
-<!ENTITY resethitcounts.label "重設命中統計資料">
-<!ENTITY resethitcounts.accesskey "R">
-<!ENTITY edit.label "編輯">
-<!ENTITY edit.accesskey "E">
-<!ENTITY cut.label "剪下">
-<!ENTITY cut.accesskey "T">
-<!ENTITY copy.label "複製">
-<!ENTITY copy.accesskey "C">
-<!ENTITY paste.label "貼上">
-<!ENTITY paste.accesskey "P">
-<!ENTITY remove.label "刪除">
-<!ENTITY remove.accesskey "D">
-<!ENTITY menu.find.label "尋找">
-<!ENTITY menu.find.accesskey "F">
-<!ENTITY menu.findagain.label "重新尋找">
-<!ENTITY menu.findagain.accesskey "G">
-<!ENTITY view.label "檢視">
-<!ENTITY view.accesskey "V">
-<!ENTITY sort.label "排序">
-<!ENTITY sort.accesskey "S">
-<!ENTITY sort.none.label "不排序">
-<!ENTITY sort.none.accesskey "U">
-<!ENTITY sort.ascending.label "遞增排序 (A > Z)">
-<!ENTITY sort.ascending.accesskey "A">
-<!ENTITY sort.descending.label "遞增排序 (Z > A)">
-<!ENTITY sort.descending.accesskey "Z">
-<!ENTITY options.label "選項">
-<!ENTITY options.accesskey "O">
-<!ENTITY enable.label "啟用 Adblock Plus">
-<!ENTITY enable.accesskey "N">
-<!ENTITY showintoolbar.label "在工具列顯示">
-<!ENTITY showintoolbar.accesskey "B">
-<!ENTITY showinstatusbar.label "在狀態列顯示">
-<!ENTITY showinstatusbar.accesskey "S">
-<!ENTITY objecttabs.label "在 Flash 和 Java 物件上顯示頁籤">
-<!ENTITY objecttabs.accesskey "T">
-<!ENTITY collapse.label "折疊已阻擋元素">
-<!ENTITY collapse.accesskey "L">
-<!ENTITY sync.label "同步 Adblock Plus 設定值">
-<!ENTITY sync.accesskey "c">
-<!ENTITY help.label "說明">
-<!ENTITY help.accesskey "H">
-<!ENTITY gettingStarted.label "新手上路 (英文網頁)">
-<!ENTITY gettingStarted.accesskey "s">
-<!ENTITY faq.label "常見問題集 (英文網頁)">
-<!ENTITY faq.accesskey "F">
-<!ENTITY filterdoc.label "如何撰寫過濾條件 (英文網頁)">
-<!ENTITY filterdoc.accesskey "R">
-<!ENTITY about.label "關於 Adblock Plus">
-<!ENTITY about.accesskey "B">
-<!ENTITY description "下面列出的過濾條件會決定哪些網址會被阻擋、哪些網址會允許顯示:">
-<!ENTITY filter.column "過濾規則">
-<!ENTITY filter.accesskey "F">
-<!ENTITY slow.column "緩慢過濾條件">
-<!ENTITY slow.accesskey "w">
-<!ENTITY enabled.column "已啟用">
-<!ENTITY enabled.accesskey "n">
-<!ENTITY hitcount.column "命中數">
-<!ENTITY hitcount.accesskey "H">
-<!ENTITY lasthit.column "最後使用">
-<!ENTITY lasthit.accesskey "L">
-<!ENTITY context.edit.label "編輯過濾條件">
-<!ENTITY context.resethitcount.label "重設此條件統計資料">
-<!ENTITY context.synchsubscription.label "立即更新訂閱條件集">
-<!ENTITY context.editsubscription.label "編輯訂閱清單">
-<!ENTITY context.moveup.label "向上移">
-<!ENTITY context.movedown.label "向下移">
-<!ENTITY context.movegroupup.label "整組向上移">
-<!ENTITY context.movegroupdown.label "整組向下移">
-<!ENTITY context.enable.label "啟用">
-<!ENTITY context.disable.label "停用">
-<!ENTITY apply.label "套用">
-<!ENTITY apply.accesskey "P">
-<!ENTITY fennec.subscription.label "過濾條件訂閱">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/sidebar.dtd b/chrome/adblockplus.jar!/locale/zh-TW/sidebar.dtd
index 71a0bd8..26773c4 100644
--- a/chrome/adblockplus.jar!/locale/zh-TW/sidebar.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-TW/sidebar.dtd
@@ -8,6 +8,7 @@
 <!ENTITY filter.label "過濾條件">
 <!ENTITY state.label "狀態">
 <!ENTITY size.label "大小">
+<!ENTITY filterSource.label "條件來源">
 <!ENTITY docDomain.label "文件來源">
 <!ENTITY docDomain.thirdParty "(第三方)">
 <!ENTITY docDomain.firstParty "(第一方)">
diff --git a/chrome/adblockplus.jar!/locale/zh-TW/subscriptionSelection.dtd b/chrome/adblockplus.jar!/locale/zh-TW/subscriptionSelection.dtd
index 7038bfe..6a4aa70 100644
--- a/chrome/adblockplus.jar!/locale/zh-TW/subscriptionSelection.dtd
+++ b/chrome/adblockplus.jar!/locale/zh-TW/subscriptionSelection.dtd
@@ -1,25 +1,16 @@
-<!ENTITY dialog.title "訂閱 Adblock Plus 過濾條件集">
-<!ENTITY dialog.title.edit "編輯過濾條件集">
-<!ENTITY description.newInstall "為了讓 Adblock Plus 發揮最大效果,您應該訂閱過濾條件集。下列這些條件集是由其他 Adblock Plus 使用者免費提供,最適合您使用語言的過濾條件集會被自動選擇。">
-<!ENTITY subscriptionSelector.label "請從清單中選擇過濾條件集:">
+<!ENTITY dialog.title "新增 Adblock Plus 過濾條件集">
+<!ENTITY subscriptionSelector.label "請從列表中選擇過濾條件集:">
 <!ENTITY viewList.label "檢視過濾條件">
-<!ENTITY visitHomepage.label "瀏覽首頁">
+<!ENTITY visitHomepage.label "造訪首頁">
 <!ENTITY addSubscription.label "新增過濾條件集">
-<!ENTITY saveSubscription.label "儲存過濾條件集">
-<!ENTITY other.label "新增其他訂閱來源">
-<!ENTITY other.accesskey "f">
-<!ENTITY list.download.failed "取回過濾條件集清單失敗。">
+<!ENTITY list.download.failed "接收條件集清單失敗。">
 <!ENTITY list.download.retry "再試一次">
-<!ENTITY list.download.website "瀏覽網站">
+<!ENTITY list.download.website "造訪網站">
 <!ENTITY fromWeb.description "請確認您要訂閱的過濾條件集。訂閱前您可以變更條件集標題或位址。">
-<!ENTITY edit.description "您需要的話可以變更條件集標題或位址。">
-<!ENTITY external.description "這是一份外部過濾條件集,這份條件集會由擴充套件建立並更新。">
 <!ENTITY title.label "訂閱項目名稱:">
-<!ENTITY title.accesskey "T">
+<!ENTITY title.accesskey "t">
 <!ENTITY location.label "過濾條件集位址:">
-<!ENTITY location.accesskey "L">
-<!ENTITY autodownload.label "自動更新">
-<!ENTITY autodownload.accesskey "P">
-<!ENTITY supplementMessage "該過濾條件集需要同時使用您未訂閱的條件集「?1?」。">
-<!ENTITY addMain.label "一併訂閱「?1?」條件集">
+<!ENTITY location.accesskey "l">
+<!ENTITY supplementMessage "此過濾條件集需要與 "?1?" 搭配使用">
+<!ENTITY addMain.label "一併訂閱 "?1?" 條件集">
 <!ENTITY addMain.accesskey "s">
diff --git a/chrome/adblockplus.jar!/skin/filters.css b/chrome/adblockplus.jar!/skin/filters.css
new file mode 100644
index 0000000..8432e5c
--- /dev/null
+++ b/chrome/adblockplus.jar!/skin/filters.css
@@ -0,0 +1,202 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+ at namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
+#buttons
+{
+	margin-top: 10px;
+}
+
+#noSubscriptions
+{
+	font-style: italic;
+}
+
+.localeMatch
+{
+	font-weight: bold;
+}
+.selectSubscriptionItem
+{
+	margin: 0px;
+}
+
+.subscription
+{
+	padding: 5px;
+}
+.subscription:not(:last-child)
+{
+	border-bottom: 1px solid rgba(0, 0, 0, 0.25);
+}
+.subscription:not([selected="true"]) > .disabled
+{
+}
+
+.subscription:not([selected="true"]) > .disabled .titleBox
+{
+	color: #808080;
+	font-style: italic;
+}
+.subscription:not([selected="true"]) > .disabled .status
+{
+	color: #808080;
+}
+
+.subscription description, .subscription textbox
+{
+	margin: 0px !important;
+	padding: 0px !important;
+	border-width: 0px !important;
+	-moz-appearance: none !important;
+}
+
+.subscription .warning
+{
+	color: #FF0000;
+}
+
+splitter
+{
+	border-width: 0px !important;
+}
+
+#filtersTooltip
+{
+	max-width: none;
+}
+
+.tooltipLabel
+{
+	font-weight: bold;
+	-moz-margin-end: 10px;
+}
+
+#tooltip-additional
+{
+	color: #C00000;
+	margin-top: 10px;
+}
+
+tree
+{
+	margin: 0px;
+}
+
+#col-slow {
+	text-align: center;
+}
+
+#col-hitcount, #col-lasthit {
+	text-align: right;
+}
+
+#col-hitcount
+{
+	min-width: 60px;
+}
+#col-enabled
+{
+	min-width: 24px;
+}
+#col-slow
+{
+	min-width: 30px;
+}
+
+/*
+ * Force left-to-right for filter text but not comments
+ */
+treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-invalid),
+treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-whitelist),
+treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-filterlist),
+treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-elemhide)
+{
+	direction: ltr;
+	text-align: end;
+}
+
+treechildren::-moz-tree-cell-text(col-filter, dummy-true)
+{
+	font-style: italic;
+}
+
+treechildren::-moz-tree-cell-text(col-filter, type-whitelist, selected-false)
+{
+	color: #008000;
+}
+
+treechildren::-moz-tree-cell-text(col-filter, type-elemhide, selected-false)
+{
+	color: #000080;
+}
+
+treechildren::-moz-tree-cell-text(col-slow)
+{
+	font-size: 0px;
+}
+
+treechildren::-moz-tree-cell-text(col-filter, disabled-true, selected-false)
+{
+	color: #808080;
+	font-style: italic;
+}
+
+treechildren::-moz-tree-cell-text(col-filter, type-comment, selected-false)
+{
+	color: #808080;
+}
+
+treechildren::-moz-tree-cell-text(col-filter, type-invalid, selected-false)
+{
+	color: #C00000;
+}
+
+treechildren::-moz-tree-image(col-enabled)
+{
+	-moz-margin-start: 7px;
+}
+
+treechildren::-moz-tree-image(col-enabled, disabled-true)
+{
+	list-style-image: url(checkbox.png);
+	-moz-image-region: rect(13px 13px 26px 0px);
+}
+
+treechildren::-moz-tree-image(col-enabled, disabled-false)
+{
+	list-style-image: url(checkbox.png);
+	-moz-image-region: rect(0px 13px 13px 0px);
+}
+
+treechildren::-moz-tree-image(col-slow, slow-true)
+{
+	list-style-image: url(slow.png);
+}
+
+.findbar-highlight
+{
+	display: none;
+}
diff --git a/chrome/adblockplus.jar!/skin/firstRun.css b/chrome/adblockplus.jar!/skin/firstRun.css
new file mode 100644
index 0000000..a2f00a6
--- /dev/null
+++ b/chrome/adblockplus.jar!/skin/firstRun.css
@@ -0,0 +1,70 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+ at namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
+:root
+{
+	max-width: 500px;
+	background-image: url(abp-icon-big.png);
+	background-repeat: no-repeat;
+	background-position: 95% 5%;
+	font-size: 130%;
+}
+
+.sectionTitle
+{
+	font-weight: bold;
+}
+
+#changeDescription > .text-link
+{
+	margin: 0px;
+}
+
+#listNameContainer,
+#listNone
+{
+	margin: 10px 40px;
+}
+
+#listNone
+{
+	font-style: italic;
+}
+
+#acceptableAds
+{
+	font-size: 90%;
+	font-weight: bold;
+}
+#acceptableAds > *
+{
+	font-weight: normal;
+}
+
+.sectionContainer
+{
+	margin: 1em 2em;
+}
diff --git a/chrome/adblockplus.jar!/skin/overlay.css b/chrome/adblockplus.jar!/skin/overlay.css
index eccdf16..07fa71f 100644
--- a/chrome/adblockplus.jar!/skin/overlay.css
+++ b/chrome/adblockplus.jar!/skin/overlay.css
@@ -156,26 +156,19 @@ toolbar[mode="full"] #abp-toolbarbutton[type="menu"]
 	-moz-image-region: rect(0px, 42px, 14px, 28px);
 }
 
-.abp-recommendbutton
+.abp-contributebutton
 {
-	opacity: 0.7;
 	margin-top: 20px;
 }
 
-.abp-recommendbutton:hover
-{
-	opacity: 1;
-}
-
-.abp-recommendbutton-btn
+.abp-contributebutton-btn
 {
 	font-size: 80%;
 	margin-left: 40px;
 	margin-right: 40px;
-	list-style-image: url("data:image/gif;base64,R0lGODlhEAAQAKIAAGF5rEVinmB4q%2Bvu9G2EtP%2F%2F%2FztZmAAAACH5BAAAAAAALAAAAAAQABAAAAM4WLrcCibKGYGiWN4sxt6Y9xWZAZpkdp6R06bTIMpvucLUbeNKQPxAggIY6AWBw1%2BxAClJLI7oIgEAOw%3D%3D");
 }
 
-.abp-recommendbutton-close
+.abp-contributebutton-close
 {
 	border-style: none !important;
 	-moz-user-focus: normal;
@@ -184,18 +177,7 @@ toolbar[mode="full"] #abp-toolbarbutton[type="menu"]
 	-moz-image-region: rect(0px, 14px, 14px, 0px);
 }
 
-.abp-recommendbutton-close:hover
+.abp-contributebutton-close:hover
 {
 	-moz-image-region: rect(0px, 28px, 14px, 14px);
 }
-
-#abp-survey-message > .title
-{
-	font-weight: bold;
-	font-size: 130%;
-}
-
-#abp-survey-message > .note
-{
-	font-size: 80%;
-}
diff --git a/chrome/adblockplus.jar!/skin/settings.css b/chrome/adblockplus.jar!/skin/settings.css
deleted file mode 100644
index ddaf339..0000000
--- a/chrome/adblockplus.jar!/skin/settings.css
+++ /dev/null
@@ -1,165 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Adblock Plus.
- *
- * The Initial Developer of the Original Code is
- * Wladimir Palant.
- * Portions created by the Initial Developer are Copyright (C) 2006-2011
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * ***** END LICENSE BLOCK ***** */
-
- at namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- at namespace html url("http://www.w3.org/1999/xhtml");
-
-dialog {
-	padding: 0px;
-}
-
-.dialog-button-box, #introduction, #listarea {
-	margin: 8px;
-}
-
-deck, deck * {
-	margin: 0px;
-}
-
-#listEditor menupopup description {
-	margin: 1px 3px;
-}
-
-#listEditorIcon {
-	list-style-image: url("close.png");
-	-moz-image-region: rect(0px, 14px, 14px, 0px);
-	margin-left: 2px;
-}
-#listEditorIcon:hover {
-	-moz-image-region: rect(0px, 28px, 14px, 14px);
-}
-#listEditorIcon:hover:active {
-	-moz-image-region: rect(0px, 42px, 14px, 28px);
-}
-
-#col-slow {
-	text-align: center;
-}
-
-#col-hitcount, #col-lasthit {
-	text-align: right;
-}
-
-#col-hitcount {
-	min-width: 60px;
-}
-#col-enabled {
-	min-width: 16px;
-}
-#col-slow {
-	min-width: 30px;
-}
-
-/*
- * Force left-to-right everywhere where we are displaying addresses
- */
-treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-invalid),
-treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-whitelist),
-treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-filterlist),
-treechildren:-moz-locale-dir(rtl)::-moz-tree-cell(col-filter, type-elemhide)
-{
-	direction: ltr;
-	text-align: end;
-}
-
-treechildren::-moz-tree-cell-text(col-filter, description-true, selected-false) {
-	font-size: 80%;
-	color: #808080;
-}
-
-treechildren::-moz-tree-cell-text(col-filter, filter-true, type-whitelist, selected-false) {
-	color: #008000;
-}
-
-treechildren::-moz-tree-cell-text(col-filter, filter-true, type-elemhide, selected-false) {
-	color: #000080;
-}
-
-treechildren::-moz-tree-cell-text(col-filter, filter-false, subscription-upgradeRequired-true, selected-false) {
-	color: #FF0000;
-}
-
-treechildren::-moz-tree-cell-text(col-slow) {
-	font-size: 0px;
-}
-
-treechildren::-moz-tree-row(filter-true, filter-disabled-true, selected-false),
-treechildren::-moz-tree-row(subscription-disabled-true, selected-false) {
-	background-color: #E0E0E0;
-}
-
-treechildren::-moz-tree-cell-text(col-filter, filter-true, type-comment, selected-false) {
-	color: #808080;
-}
-
-treechildren::-moz-tree-cell-text(col-filter, filter-true, type-invalid, selected-false) {
-	color: #C00000;
-}
-
-treechildren::-moz-tree-cell-text(col-filter, subscription-true) {
-	font-weight: bold;
-}
-
-treechildren::-moz-tree-image(col-enabled, filter-true, subscription-disabled-false, filter-disabled-true),
-treechildren::-moz-tree-image(col-enabled, subscription-true, subscription-disabled-true) {
-	list-style-image: url(checkbox.png);
-	-moz-image-region: rect(13px 13px 26px 0px);
-}
-
-treechildren::-moz-tree-image(col-enabled, filter-true, subscription-disabled-false, filter-disabled-false),
-treechildren::-moz-tree-image(col-enabled, subscription-true, subscription-disabled-false, subscription-dummy-false) {
-	list-style-image: url(checkbox.png);
-	-moz-image-region: rect(0px 13px 13px 0px);
-}
-
-treechildren::-moz-tree-image(col-slow, filter-true, filter-regexp-true) {
-	list-style-image: url(slow.png);
-}
-
-treechildren::-moz-tree-image(col-enabled) {
-	margin-left: 7px;
-}
-#col-enabled {
-	min-width: 24px;
-}
-
-.whitelisted:not([_moz-menuactive="true"]) {
-	color: #008000;
-}
-
-.filtered:not([_moz-menuactive="true"]) {
-	color: #C00000;
-}
-
-#findbar {
-	border: none !important;
-}
-
-#findbar .findbar-highlight {
-	display: none;
-}
-
-tooltip {
-	max-width: none;
-}
diff --git a/chrome/adblockplus.jar!/skin/sidebar.css b/chrome/adblockplus.jar!/skin/sidebar.css
index 07dbec5..0e393f4 100644
--- a/chrome/adblockplus.jar!/skin/sidebar.css
+++ b/chrome/adblockplus.jar!/skin/sidebar.css
@@ -96,7 +96,7 @@ treechildren::-moz-tree-image(col-state, dummy-false)
 {
 	list-style-image: url(item-state.png);
 	-moz-image-region: rect(0px 10px 10px 0px);
-	margin-left: 3px;
+	-moz-margin-start: 3px;
 }
 treechildren::-moz-tree-image(col-state, filter-disabled-true, dummy-false) {
 	-moz-image-region: rect(10px 10px 20px 0px);
diff --git a/chrome/adblockplus.jar!/skin/subscriptionSelection.css b/chrome/adblockplus.jar!/skin/subscriptionSelection.css
index 24de1e4..1436a28 100644
--- a/chrome/adblockplus.jar!/skin/subscriptionSelection.css
+++ b/chrome/adblockplus.jar!/skin/subscriptionSelection.css
@@ -26,27 +26,7 @@
 
 dialog
 {
-	min-width: 550px;
-}
-
-dialog[newInstall]
-{
-	background-image: url(abp-icon-big.png);
-	background-repeat: no-repeat;
-	background-position: 95% 5%;
-}
-
-dialog[newInstall] .dialog-content-box,
-dialog[newInstall] #content-scroll
-{
-	min-height: 150px;
-}
-
-#description-newInstall,
-#adblock-warning,
-#filtersetg-warning
-{
-	margin-bottom: 10px;
+	width: 550px;
 }
 
 *[invisible="true"]
@@ -54,8 +34,6 @@ dialog[newInstall] #content-scroll
 	visibility: hidden;
 }
 
-#adblock-warning,
-#filtersetg-warning,
 #supplementMessage
 {
 	color: #F00000;
diff --git a/chrome/adblockplus.jar!/skin/subscriptionSelectionFennec.css b/chrome/adblockplus.jar!/skin/subscriptionSelectionFennec.css
deleted file mode 100644
index e70d5ac..0000000
--- a/chrome/adblockplus.jar!/skin/subscriptionSelectionFennec.css
+++ /dev/null
@@ -1,37 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Adblock Plus.
- *
- * The Initial Developer of the Original Code is
- * Wladimir Palant.
- * Portions created by the Initial Developer are Copyright (C) 2006-2011
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * ***** END LICENSE BLOCK ***** */
-
- at import url("chrome://browser/skin/platform.css");
-
- at namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-dialog
-{
-	min-width: 0px;
-}
-
-#all-subscriptions-container
-{
-	font-size: 60%;
-}
diff --git a/debian/adblock-plus.upstream-changelog b/debian/adblock-plus.upstream-changelog
deleted file mode 100644
index dade970..0000000
--- a/debian/adblock-plus.upstream-changelog
+++ /dev/null
@@ -1,8 +0,0 @@
-Detailed changelog for Adblock Plus 1.3.9
-
-         * Added Latvian and Albanian translations.
-         * Fixed: No preview in the list of blockable items if the image matches a disabled filter. 
-         * Fixed: Failure to save filters cache in Firefox 8, affects startup performance (forum topic).
-         * Fixed: More issues caused by corrupted patterns.ini file (forum topic).
-         * Fixed: Blockable items list might delay garbage collection of compartments (bug 679675).
-         * Some users will be asked to complete a survey about Adblock Plus (forum topic).
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index c1190e6..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,302 +0,0 @@
-adblock-plus (1.3.10-3) unstable; urgency=low
-
-  * Bump maxVersion to 11.0a1 to support Iceweasel/Firefox 10 (Closes: #645215).
-
- -- Benjamin Drung <bdrung at debian.org>  Fri, 18 Nov 2011 13:25:48 +0100
-
-adblock-plus (1.3.10-2) unstable; urgency=low
-
-  * Bump maxVersion to 10.0a1 to support Iceweasel/Firefox 9. (Closes: #645215)
-  * Add xpi:break field to Breaks.
-
- -- Benjamin Drung <bdrung at debian.org>  Thu, 13 Oct 2011 18:54:04 +0200
-
-adblock-plus (1.3.10-1) unstable; urgency=low
-
-  * New upstream release. (Closes: #635983)
-  * debian/control:
-    - add myself as an Uploader.
-  * adblock-plus.upstream-changelog:
-    - updated with latest release's details.
-  * debian/rules:
-    - cleaned up and updated with a new build system. Upstream
-      does not include a build.py anymore so we'll use m-ds to
-      do everything for us.
-
- -- Andrea Veri <and at debian.org>  Fri, 30 Sep 2011 00:30:26 +0200
-
-adblock-plus (1.3.9-2) unstable; urgency=low
-
-  * Added upstream changelog (Closes: #580362)
-  * Switch debhelper to (>= 8)
-  * Added myself to Uploaders
-
- -- Fabrizio Regalli <fabreg at fabreg.it>  Fri, 29 Jul 2011 16:26:46 +0200
-
-adblock-plus (1.3.9-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Benjamin Drung <bdrung at debian.org>  Tue, 28 Jun 2011 23:45:10 +0200
-
-adblock-plus (1.3.8-1) unstable; urgency=low
-
-  * New upstream release.
-  * The upstream build system switched from Perl to Python.
-
- -- Benjamin Drung <bdrung at debian.org>  Sat, 28 May 2011 19:14:57 +0200
-
-adblock-plus (1.3.7-1) unstable; urgency=low
-
-  * New upstream release.
-  * Bump Standards-Version to 3.9.2 (no changes required).
-
- -- Benjamin Drung <bdrung at debian.org>  Mon, 16 May 2011 09:48:38 +0200
-
-adblock-plus (1.3.6-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Benjamin Drung <bdrung at debian.org>  Mon, 04 Apr 2011 11:40:33 +0200
-
-adblock-plus (1.3.5-1) unstable; urgency=low
-
-  * New upstream release.
-  * Drop max_version.patch.
-  * Drop DM-Upload-Allowed field.
-
- -- Benjamin Drung <bdrung at debian.org>  Fri, 25 Mar 2011 15:30:44 +0100
-
-adblock-plus (1.3.3-3) unstable; urgency=low
-
-  [ Dmitry E. Oboukhov ]
-  * Bump maxVersion properly, thanks to Benjamin Drung.
-
-  [ Benjamin Drung ]
-  * Update my email address.
-
- -- Benjamin Drung <bdrung at debian.org>  Wed, 02 Mar 2011 16:57:41 +0100
-
-adblock-plus (1.3.3-2) unstable; urgency=low
-
-  * Bump Iceweasel/Firefox maxVersion to 4.*.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Wed, 02 Mar 2011 09:38:47 +0300
-
-adblock-plus (1.3.3-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Sat, 25 Dec 2010 20:17:41 +0100
-
-adblock-plus (1.3.2-1) unstable; urgency=low
-
-  * New upstream release.
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Fri, 10 Dec 2010 15:54:49 +0100
-
-adblock-plus (1.3.1-2) unstable; urgency=low
-
-  * Add ${xpi:Depends} to Depends and rebuild with mozilla-devscripts 0.25.
-    (LP: #674171)
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Fri, 26 Nov 2010 01:30:51 +0100
-
-adblock-plus (1.3.1-1) unstable; urgency=low
-
-  * New upstream release.
-  * Drop all patches (included upstream).
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Fri, 05 Nov 2010 18:42:36 +0100
-
-adblock-plus (1.2.2-3) unstable; urgency=low
-
-  * Bump Iceweasel/Firefox maxVersion to 4.0b8pre.
-  * Drop transitional package.
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Thu, 16 Sep 2010 00:58:42 +0200
-
-adblock-plus (1.2.2-2) unstable; urgency=low
-
-  * Bump Iceweasel/Firefox maxVersion to 4.0b5. (Closes: #594730)
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Sun, 12 Sep 2010 23:00:31 +0200
-
-adblock-plus (1.2.2-1) unstable; urgency=low
-
-  * New upstream release.
-    - Support Firefox 4 nightly builds and Firefox 4 Beta 3
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Wed, 18 Aug 2010 11:06:04 +0200
-
-adblock-plus (1.2.1-3) unstable; urgency=low
-
-  * Bump Iceweasel/Firefox maxVersion to 4.0b3. (Closes: #592702)
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Thu, 12 Aug 2010 23:50:53 +0200
-
-adblock-plus (1.2.1-2) unstable; urgency=low
-
-  * Bump Iceweasel/Firefox maxVersion to 4.0b3pre (Closes: #592702).
-  * Bump Standards-Version to 3.9.1 (no changes required).
-  * Switch from cdbs to dh.
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Thu, 12 Aug 2010 12:49:34 +0200
-
-adblock-plus (1.2.1-1) unstable; urgency=low
-
-  * New upstream release (Closes: #588579).
-  * Update debian/watch file.
-  * Bump Standards-Version to 3.9.0 (no changes required).
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Sat, 10 Jul 2010 12:39:24 +0200
-
-adblock-plus (1.2-1) unstable; urgency=low
-
-  * New upstream release.
-  * Bump Standards-Version to 3.8.4 (no changes required).
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Tue, 04 May 2010 14:45:07 +0200
-
-adblock-plus (1.1.3-1) unstable; urgency=low
-
-  * New upstream release.
-  * Switch to source format 3.0 (quilt).
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Thu, 07 Jan 2010 17:25:17 +0100
-
-adblock-plus (1.1.2-1) unstable; urgency=low
-
-  * New upstream version.
-  * Update build command and debian/copyright.
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Sat, 12 Dec 2009 18:20:36 +0100
-
-adblock-plus (1.1.1-2) unstable; urgency=low
-
-  [ Dmitry E. Oboukhov ]
-  * Obsolete symlink was removed, thanks for Ian Zimmerman <itz at buug.org>,
-    closes: #547615.
-
-  [ Benjamin Drung ]
-  * Use mozilla-devscripts 0.16 to build the package:
-    - add mozilla-devscripts to build depends
-    - use ${xpi:Recommends} instead of hardcode supported apps
-    - remove unzip from build depends
-    - add Provides and Enhances
-    - remove clean and build target from rules
-    - remove files not needed by mozilla-devscripts
-  * Standards-Version bumped to 3.8.3.
-  * Update Homepage field.
-  * Merge package description from Debian and Ubuntu.
-  * Rename binary package to xul-ext-adblock-plus according new policy:
-    http://wiki.debian.org/Teams/DebianMozExtTeam
-  * Add myself to uploaders.
-  * Move git repository to pkg-mozext group.
-  * Bump debhelper to level 7.
-  * Add DM-Upload-Allowed tag.
-
- -- Benjamin Drung <bdrung at ubuntu.com>  Fri, 02 Oct 2009 16:32:39 +0200
-
-adblock-plus (1.1.1-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Thu, 27 Aug 2009 11:10:22 +0400
-
-adblock-plus (1.1-1) unstable; urgency=low
-
-  * New upstream version.
-    * Added handling of HTTP redirects, the redirect address now shows
-      up in the list of blockable items as well as the original address,
-      both can be blocked.
-    * Added support for flexible anchors at start of filter (forum topic).
-    * Added support for ^ character that will match a single separator
-      character or end of address (forum topic).
-    * Added support for domain exceptions in element hiding analogous to
-      the $domain option of regular filters, e.g.
-      "example.com,~foo.example.com##foo" or "~example.com##foo" (forum
-      topic).
-  * Standards-Version bumped to 3.8.2.
-  * Added Debian Mozilla Extension Maintainers
-    <pkg-mozext-maintainers at lists.alioth.debian.org> to uploaders.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 13 Jul 2009 22:09:25 +0400
-
-adblock-plus (1.0.2-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 21 Apr 2009 09:53:58 +0400
-
-adblock-plus (1.0.1-2) unstable; urgency=low
-
-  * Fixed debian/watch.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Wed, 25 Feb 2009 18:48:54 +0300
-
-adblock-plus (1.0.1-1) unstable; urgency=low
-
-  * New upstream version.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Mon, 12 Jan 2009 23:06:10 +0300
-
-adblock-plus (1.0.0-1) unstable; urgency=low
-
-  * New upstream version.
-    [Known issues]
-    *  Format of the filter storage changed so going back to a previous
-       version requires exporting the filters and re-importing them
-       after the downgrade
-    * Mac OS X: Flash movies might not be displayed properly if “Show
-       tabs on Flash and Java” option is switched on
-    * Some translations contain untranslated English strings
-    [New features]
-    * New filter composer dialog makes adding filters easier
-    * New filter options $third-party and $~third-party restrict
-       filters to third-party/first-party requests (forum topic)
-    etc
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Fri, 05 Dec 2008 10:27:57 +0300
-
-adblock-plus (0.7.5.5-4) unstable; urgency=low
-
-  * Change depends from iceape to iceape-browser, closes: #506867.
-  * Removed absoluted paths from post|preinst scripts, closes lintian
-    warnings.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 25 Nov 2008 21:14:06 +0300
-
-adblock-plus (0.7.5.5-3) unstable; urgency=low
-
-  * Fix typo in description, closes: #489789.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Tue, 08 Jul 2008 10:12:10 +0400
-
-adblock-plus (0.7.5.5-2) unstable; urgency=low
-
-  * Fix debian/copyright issues.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Sat, 05 Jul 2008 22:42:52 +0400
-
-adblock-plus (0.7.5.5-1) unstable; urgency=low
-
-  * Fix debian/copyright issues.
-  * Added debian/watch.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Thu, 19 Jun 2008 22:07:01 +0400
-
-adblock-plus (0.7.5.4-2) unstable; urgency=low
-
-  * My email address has been changed.
-  * Patch for iceweasel 3.0.
-  * Standards-Version bumped to 3.8.0.
-
- -- Dmitry E. Oboukhov <unera at debian.org>  Thu, 12 Jun 2008 23:15:32 +0400
-
-adblock-plus (0.7.5.4-1) unstable; urgency=low
-
-  * Initial release (Closes: #479788)
-  * Upload sponsored by Al Nikolov <clown at debian.org>
-
- -- Dmitry E. Oboukhov <dimka at avanto.org>  Wed,  7 May 2008 12:43:23 +0400
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index 45a4fb7..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-8
diff --git a/debian/control b/debian/control
deleted file mode 100644
index 8157e8a..0000000
--- a/debian/control
+++ /dev/null
@@ -1,37 +0,0 @@
-Source: adblock-plus
-Section: web
-Priority: optional
-Maintainer: Dmitry E. Oboukhov <unera at debian.org>
-Uploaders: Debian Mozilla Extension Maintainers <pkg-mozext-maintainers at lists.alioth.debian.org>,
-           Benjamin Drung <bdrung at debian.org>,
-           Fabrizio Regalli <fabreg at fabreg.it>,
-           Andrea Veri <and at debian.org>
-Build-Depends: debhelper (>= 8),
-               mercurial,
-               mozilla-devscripts (>= 0.19~),
-               python,
-               python-jinja2
-Standards-Version: 3.9.2
-Homepage: http://adblockplus.org/
-VCS-Browser: http://git.debian.org/?p=pkg-mozext/adblock-plus.git;a=summary
-VCS-Git: git://git.debian.org/pkg-mozext/adblock-plus.git
-
-Package: xul-ext-adblock-plus
-Architecture: all
-Depends: ${misc:Depends}, ${xpi:Depends}
-Recommends: ${xpi:Recommends}
-Provides: ${xpi:Provides}
-Enhances: ${xpi:Enhances}
-Conflicts: mozilla-firefox-adblock
-Breaks: adblock-plus (<< 1.1.1-2), ${xpi:Breaks}
-Replaces: adblock-plus (<< 1.1.1-2)
-Description: Advertisement blocking extension for web browsers
- Adblock Plus is a content-filtering extension for Iceweasel, Firefox,
- SeaMonkey, and several other applications; it allows users to prevent webpage
- elements, such as advertisements, from being downloaded and displayed.
- .
- On the first run, Adblock Plus will ask you if you want to subscribe to
- a filter list, which is automatically updated and blocks a lot of common
- advertisements. Additional filters can be added at will, and it's also
- possible to use wildcards in order to block e.g. all images or JavaScript
- files from specific servers or directories.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index dee17be..0000000
--- a/debian/copyright
+++ /dev/null
@@ -1,606 +0,0 @@
-This package was debianized by Dmitry E. Oboukhov <dimka at avanto.org> on
-Tue May  6 18:39:03 MSD 2008
-
-It was downloaded from:
-	https://addons.mozilla.org/en-US/firefox/addon/1865
-
-adblock-plus parts:
-
-Upstream Authors:
-	Wladimir Palant <trev at adblockplus.org>
-
-Contributors:
-	* Ahmet Serkan Tıratacı — Turkish translation
-	* Aigar Vals — Estonian translation
-	* Antonio Urquia — Spanish translation of the
-	  Element Hiding Helper extension
-	* Bahram Maravandi — Persian translation
-	* Bayarsaikhan Enkhtaivan — Mongolian translation
-	* Besmir Godole — Albanian translation of the Element
-	  Hiding Helper extension
-	* Blackdire — Chinese Simplified translation
-	* Cédric Menge — “Cédrics Liste” filter subscription and
-	  many suggestions
-	* Claude Lespagnol aka Efdur — icons
-	* Claudio Périco — Brazilian Portuguese translation
-	* Dagobert_78 — French translation
-	* Finn Sørensen — Danish translation
-	* Gárdonyi László — Hungarian translation
-	* Hrvoje Majer — Croatian translation
-	* Humberto Sartini — Brazilian Portuguese translation of
-	  the Element Hiding Helper extension
-	* Jacen — Slovak translation
-	* Jakub Tománek — Czech translation
-	* Jari Huttunen — Finnish translation of the Element
-	  Hiding Helper extension
-	* Jesús Vidal Panalés — Spanish translation
-	* jojaba — French translation (extension and site)
-	* Jonas Slivka — Lithuanian translation
-	* Joni Heinonen aka Akilles — Finnish translation
-	* Jose Sun — Chinese Traditional translation
-	* Kevin Keller — icons
-	* Leszek (teo) Życzkowski — Polish translation
-	* Luana Di Muzio — Italian translation
-	* Malte Kraus — “Filter von Dr.Evil” filter subscription
-	* Mark Heijl — Dutch translation of the Element Hiding
-	  Helper extension
-	* Mark Schlögel — German FAQ translation
-	* Mark Tyndall — British English translation
-	* Martin Srebotnjak — Slovenian translation
-	* Mikes Kaszmán István — Hungarian translation
-	* Moayad Mardini — Arabic translation
-	* moZes — Frisian translation
-	* Navid Kashani — Persian translation
-	* Olexander Kasyanyuk — Ukrainian translation
-	* Paul Dicker — Dutch translation
-	* pirlouy — French translation
-	* Premier — Japanese translation
-	* Rick Petnel — EasyList filter subscription and many suggestions
-	* Rob Brown — Aardvark code reused in the Element Hiding
-	  Helper extension
-	* Robbie Groenewoudt — dutchblock filter subscription
-	* srxo1978 — Spanish translation
-	* Stefan Lewitas — Swedish translation
-	* Stian Domben Bårdsen — Norwegian translation
-	* Suphanat Thitiphattharakon — Thai translation
-	* sushizang — Korean translation
-	* Thanos — Greek translation
-	* Toni Barrera — Catalan translation
-	* Tony Nguyen — Vietnamese translation
-	* ultravioletu — Romanian translation
-	* znaya — Portuguese translation
-
-Adblock development before Adblock Plus 0.6
-	* Henrik Aasted Sorensen — Original Adblock
-	* Michael McDonald — Adblock Plus 0.5
-	* rue — Adblock 0.4/0.5
-	* Ben Karel — Adblock 0.4/0.5
-	* Stefan Kinitz — Adblock 0.4/0.5
-
-Other contributors seen in source code:
-        -   Netscape Communications Corporation
-        -   Blake Ross <blake at cs.stanford.edu>
-        -   David Hyatt <hyatt at mozilla.org>
-        -   Joe Hewitt <hewitt at netscape.com>
-        -   Pierre Chanial <chanial at noos.fr>
-        -   Dean Tessman <dean_tessman at hotmail.com>
-
-Copyright (C) 2006-2007 Wladimir Palant <trev at adblockplus.org>
-Copyright (C) 2004 Blake Ross
-
-
-License:
-	The contents of this file are subject to  the  Mozilla	Public
-	License Version 1.1 (the "License"); you may not use this file
-	except	in  compliance	with  the  License.
-
-	Software distributed under the License is  distributed	on  an
-	"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-	implied.  See the License for the specific language  governing
-	rights  and  limitations under  the License.
-
-	The Original Code is Adblock Plus.
-
-	The Initial Developer of the Original Code is Wladimir Palant.
-	Portions created by the Initial Developer  are	Copyright  (C)
-	2006-2007 the Initial Developer. All Rights Reserved.
-
-adblock part:
-
-Copyright Holder: AdBlock Team
-
-License:
-	The AdBlock extension is subject to the Mozilla Public License
-	Version 1.1 (the "License"); you may not  use  this  extension
-	except in compliance with the License.
-
-	Software distributed under the License is  distributed	on  an
-	"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-	implied.  See the License for the specific language  governing
-	rights and limitations under the License.
-
-	The Original Code is AdBlock for Mozilla.
-
-	The Initial Developer of the Original Code  is	Henrik	Aasted
-	Sorensen.  Portions  created  by  the  Initial	Developer  are
-	Copyright (C) 2002 the Initial Developer. All Rights Reserved.
-
-	Contributor(s):  Henrik  Aasted  Sorensen  <henrik at aasted.org>
-	Stefan Kinitz <mcmurmel.blah at gmx.de> Rue  <quill at ethereal.net>
-
-
-Full text of MPL-license:
-
-                          MOZILLA PUBLIC LICENSE
-                                Version 1.1
-
-                              ---------------
-
-1. Definitions.
-
-     1.0.1. "Commercial Use" means distribution or otherwise making the
-     Covered Code available to a third party.
-
-     1.1. "Contributor" means each entity that creates or contributes to
-     the creation of Modifications.
-
-     1.2. "Contributor Version" means the combination of the Original
-     Code, prior Modifications used by a Contributor, and the Modifications
-     made by that particular Contributor.
-
-     1.3. "Covered Code" means the Original Code or Modifications or the
-     combination of the Original Code and Modifications, in each case
-     including portions thereof.
-
-     1.4. "Electronic Distribution Mechanism" means a mechanism generally
-     accepted in the software development community for the electronic
-     transfer of data.
-
-     1.5. "Executable" means Covered Code in any form other than Source
-     Code.
-
-     1.6. "Initial Developer" means the individual or entity identified
-     as the Initial Developer in the Source Code notice required by Exhibit
-     A.
-
-     1.7. "Larger Work" means a work which combines Covered Code or
-     portions thereof with code not governed by the terms of this License.
-
-     1.8. "License" means this document.
-
-     1.8.1. "Licensable" means having the right to grant, to the maximum
-     extent possible, whether at the time of the initial grant or
-     subsequently acquired, any and all of the rights conveyed herein.
-
-     1.9. "Modifications" means any addition to or deletion from the
-     substance or structure of either the Original Code or any previous
-     Modifications. When Covered Code is released as a series of files, a
-     Modification is:
-          A. Any addition to or deletion from the contents of a file
-          containing Original Code or previous Modifications.
-
-          B. Any new file that contains any part of the Original Code or
-          previous Modifications.
-
-     1.10. "Original Code" means Source Code of computer software code
-     which is described in the Source Code notice required by Exhibit A as
-     Original Code, and which, at the time of its release under this
-     License is not already Covered Code governed by this License.
-
-     1.10.1. "Patent Claims" means any patent claim(s), now owned or
-     hereafter acquired, including without limitation,  method, process,
-     and apparatus claims, in any patent Licensable by grantor.
-
-     1.11. "Source Code" means the preferred form of the Covered Code for
-     making modifications to it, including all modules it contains, plus
-     any associated interface definition files, scripts used to control
-     compilation and installation of an Executable, or source code
-     differential comparisons against either the Original Code or another
-     well known, available Covered Code of the Contributor's choice. The
-     Source Code can be in a compressed or archival form, provided the
-     appropriate decompression or de-archiving software is widely available
-     for no charge.
-
-     1.12. "You" (or "Your")  means an individual or a legal entity
-     exercising rights under, and complying with all of the terms of, this
-     License or a future version of this License issued under Section 6.1.
-     For legal entities, "You" includes any entity which controls, is
-     controlled by, or is under common control with You. For purposes of
-     this definition, "control" means (a) the power, direct or indirect,
-     to cause the direction or management of such entity, whether by
-     contract or otherwise, or (b) ownership of more than fifty percent
-     (50%) of the outstanding shares or beneficial ownership of such
-     entity.
-
-2. Source Code License.
-
-     2.1. The Initial Developer Grant.
-     The Initial Developer hereby grants You a world-wide, royalty-free,
-     non-exclusive license, subject to third party intellectual property
-     claims:
-          (a)  under intellectual property rights (other than patent or
-          trademark) Licensable by Initial Developer to use, reproduce,
-          modify, display, perform, sublicense and distribute the Original
-          Code (or portions thereof) with or without Modifications, and/or
-          as part of a Larger Work; and
-
-          (b) under Patents Claims infringed by the making, using or
-          selling of Original Code, to make, have made, use, practice,
-          sell, and offer for sale, and/or otherwise dispose of the
-          Original Code (or portions thereof).
-
-          (c) the licenses granted in this Section 2.1(a) and (b) are
-          effective on the date Initial Developer first distributes
-          Original Code under the terms of this License.
-
-          (d) Notwithstanding Section 2.1(b) above, no patent license is
-          granted: 1) for code that You delete from the Original Code; 2)
-          separate from the Original Code;  or 3) for infringements caused
-          by: i) the modification of the Original Code or ii) the
-          combination of the Original Code with other software or devices.
-
-     2.2. Contributor Grant.
-     Subject to third party intellectual property claims, each Contributor
-     hereby grants You a world-wide, royalty-free, non-exclusive license
-
-          (a)  under intellectual property rights (other than patent or
-          trademark) Licensable by Contributor, to use, reproduce, modify,
-          display, perform, sublicense and distribute the Modifications
-          created by such Contributor (or portions thereof) either on an
-          unmodified basis, with other Modifications, as Covered Code
-          and/or as part of a Larger Work; and
-
-          (b) under Patent Claims infringed by the making, using, or
-          selling of  Modifications made by that Contributor either alone
-          and/or in combination with its Contributor Version (or portions
-          of such combination), to make, use, sell, offer for sale, have
-          made, and/or otherwise dispose of: 1) Modifications made by that
-          Contributor (or portions thereof); and 2) the combination of
-          Modifications made by that Contributor with its Contributor
-          Version (or portions of such combination).
-
-          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
-          effective on the date Contributor first makes Commercial Use of
-          the Covered Code.
-
-          (d)    Notwithstanding Section 2.2(b) above, no patent license is
-          granted: 1) for any code that Contributor has deleted from the
-          Contributor Version; 2)  separate from the Contributor Version;
-          3)  for infringements caused by: i) third party modifications of
-          Contributor Version or ii)  the combination of Modifications made
-          by that Contributor with other software  (except as part of the
-          Contributor Version) or other devices; or 4) under Patent Claims
-          infringed by Covered Code in the absence of Modifications made by
-          that Contributor.
-
-3. Distribution Obligations.
-
-     3.1. Application of License.
-     The Modifications which You create or to which You contribute are
-     governed by the terms of this License, including without limitation
-     Section 2.2. The Source Code version of Covered Code may be
-     distributed only under the terms of this License or a future version
-     of this License released under Section 6.1, and You must include a
-     copy of this License with every copy of the Source Code You
-     distribute. You may not offer or impose any terms on any Source Code
-     version that alters or restricts the applicable version of this
-     License or the recipients' rights hereunder. However, You may include
-     an additional document offering the additional rights described in
-     Section 3.5.
-
-     3.2. Availability of Source Code.
-     Any Modification which You create or to which You contribute must be
-     made available in Source Code form under the terms of this License
-     either on the same media as an Executable version or via an accepted
-     Electronic Distribution Mechanism to anyone to whom you made an
-     Executable version available; and if made available via Electronic
-     Distribution Mechanism, must remain available for at least twelve (12)
-     months after the date it initially became available, or at least six
-     (6) months after a subsequent version of that particular Modification
-     has been made available to such recipients. You are responsible for
-     ensuring that the Source Code version remains available even if the
-     Electronic Distribution Mechanism is maintained by a third party.
-
-     3.3. Description of Modifications.
-     You must cause all Covered Code to which You contribute to contain a
-     file documenting the changes You made to create that Covered Code and
-     the date of any change. You must include a prominent statement that
-     the Modification is derived, directly or indirectly, from Original
-     Code provided by the Initial Developer and including the name of the
-     Initial Developer in (a) the Source Code, and (b) in any notice in an
-     Executable version or related documentation in which You describe the
-     origin or ownership of the Covered Code.
-
-     3.4. Intellectual Property Matters
-          (a) Third Party Claims.
-          If Contributor has knowledge that a license under a third party's
-          intellectual property rights is required to exercise the rights
-          granted by such Contributor under Sections 2.1 or 2.2,
-          Contributor must include a text file with the Source Code
-          distribution titled "LEGAL" which describes the claim and the
-          party making the claim in sufficient detail that a recipient will
-          know whom to contact. If Contributor obtains such knowledge after
-          the Modification is made available as described in Section 3.2,
-          Contributor shall promptly modify the LEGAL file in all copies
-          Contributor makes available thereafter and shall take other steps
-          (such as notifying appropriate mailing lists or newsgroups)
-          reasonably calculated to inform those who received the Covered
-          Code that new knowledge has been obtained.
-
-          (b) Contributor APIs.
-          If Contributor's Modifications include an application programming
-          interface and Contributor has knowledge of patent licenses which
-          are reasonably necessary to implement that API, Contributor must
-          also include this information in the LEGAL file.
-
-               (c)    Representations.
-          Contributor represents that, except as disclosed pursuant to
-          Section 3.4(a) above, Contributor believes that Contributor's
-          Modifications are Contributor's original creation(s) and/or
-          Contributor has sufficient rights to grant the rights conveyed by
-          this License.
-
-     3.5. Required Notices.
-     You must duplicate the notice in Exhibit A in each file of the Source
-     Code.  If it is not possible to put such notice in a particular Source
-     Code file due to its structure, then You must include such notice in a
-     location (such as a relevant directory) where a user would be likely
-     to look for such a notice.  If You created one or more Modification(s)
-     You may add your name as a Contributor to the notice described in
-     Exhibit A.  You must also duplicate this License in any documentation
-     for the Source Code where You describe recipients' rights or ownership
-     rights relating to Covered Code.  You may choose to offer, and to
-     charge a fee for, warranty, support, indemnity or liability
-     obligations to one or more recipients of Covered Code. However, You
-     may do so only on Your own behalf, and not on behalf of the Initial
-     Developer or any Contributor. You must make it absolutely clear than
-     any such warranty, support, indemnity or liability obligation is
-     offered by You alone, and You hereby agree to indemnify the Initial
-     Developer and every Contributor for any liability incurred by the
-     Initial Developer or such Contributor as a result of warranty,
-     support, indemnity or liability terms You offer.
-
-     3.6. Distribution of Executable Versions.
-     You may distribute Covered Code in Executable form only if the
-     requirements of Section 3.1-3.5 have been met for that Covered Code,
-     and if You include a notice stating that the Source Code version of
-     the Covered Code is available under the terms of this License,
-     including a description of how and where You have fulfilled the
-     obligations of Section 3.2. The notice must be conspicuously included
-     in any notice in an Executable version, related documentation or
-     collateral in which You describe recipients' rights relating to the
-     Covered Code. You may distribute the Executable version of Covered
-     Code or ownership rights under a license of Your choice, which may
-     contain terms different from this License, provided that You are in
-     compliance with the terms of this License and that the license for the
-     Executable version does not attempt to limit or alter the recipient's
-     rights in the Source Code version from the rights set forth in this
-     License. If You distribute the Executable version under a different
-     license You must make it absolutely clear that any terms which differ
-     from this License are offered by You alone, not by the Initial
-     Developer or any Contributor. You hereby agree to indemnify the
-     Initial Developer and every Contributor for any liability incurred by
-     the Initial Developer or such Contributor as a result of any such
-     terms You offer.
-
-     3.7. Larger Works.
-     You may create a Larger Work by combining Covered Code with other code
-     not governed by the terms of this License and distribute the Larger
-     Work as a single product. In such a case, You must make sure the
-     requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
-     If it is impossible for You to comply with any of the terms of this
-     License with respect to some or all of the Covered Code due to
-     statute, judicial order, or regulation then You must: (a) comply with
-     the terms of this License to the maximum extent possible; and (b)
-     describe the limitations and the code they affect. Such description
-     must be included in the LEGAL file described in Section 3.4 and must
-     be included with all distributions of the Source Code. Except to the
-     extent prohibited by statute or regulation, such description must be
-     sufficiently detailed for a recipient of ordinary skill to be able to
-     understand it.
-
-5. Application of this License.
-
-     This License applies to code to which the Initial Developer has
-     attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
-     6.1. New Versions.
-     Netscape Communications Corporation ("Netscape") may publish revised
-     and/or new versions of the License from time to time. Each version
-     will be given a distinguishing version number.
-
-     6.2. Effect of New Versions.
-     Once Covered Code has been published under a particular version of the
-     License, You may always continue to use it under the terms of that
-     version. You may also choose to use such Covered Code under the terms
-     of any subsequent version of the License published by Netscape. No one
-     other than Netscape has the right to modify the terms applicable to
-     Covered Code created under this License.
-
-     6.3. Derivative Works.
-     If You create or use a modified version of this License (which you may
-     only do in order to apply it to code which is not already Covered Code
-     governed by this License), You must (a) rename Your license so that
-     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
-     "MPL", "NPL" or any confusingly similar phrase do not appear in your
-     license (except to note that your license differs from this License)
-     and (b) otherwise make it clear that Your version of the license
-     contains terms which differ from the Mozilla Public License and
-     Netscape Public License. (Filling in the name of the Initial
-     Developer, Original Code or Contributor in the notice described in
-     Exhibit A shall not of themselves be deemed to be modifications of
-     this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
-     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
-     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
-     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
-     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
-     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
-     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
-     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
-     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
-     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
-     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
-     8.1.  This License and the rights granted hereunder will terminate
-     automatically if You fail to comply with terms herein and fail to cure
-     such breach within 30 days of becoming aware of the breach. All
-     sublicenses to the Covered Code which are properly granted shall
-     survive any termination of this License. Provisions which, by their
-     nature, must remain in effect beyond the termination of this License
-     shall survive.
-
-     8.2.  If You initiate litigation by asserting a patent infringement
-     claim (excluding declatory judgment actions) against Initial Developer
-     or a Contributor (the Initial Developer or Contributor against whom
-     You file such action is referred to as "Participant")  alleging that:
-
-     (a)  such Participant's Contributor Version directly or indirectly
-     infringes any patent, then any and all rights granted by such
-     Participant to You under Sections 2.1 and/or 2.2 of this License
-     shall, upon 60 days notice from Participant terminate prospectively,
-     unless if within 60 days after receipt of notice You either: (i)
-     agree in writing to pay Participant a mutually agreeable reasonable
-     royalty for Your past and future use of Modifications made by such
-     Participant, or (ii) withdraw Your litigation claim with respect to
-     the Contributor Version against such Participant.  If within 60 days
-     of notice, a reasonable royalty and payment arrangement are not
-     mutually agreed upon in writing by the parties or the litigation claim
-     is not withdrawn, the rights granted by Participant to You under
-     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
-     the 60 day notice period specified above.
-
-     (b)  any software, hardware, or device, other than such Participant's
-     Contributor Version, directly or indirectly infringes any patent, then
-     any rights granted to You by such Participant under Sections 2.1(b)
-     and 2.2(b) are revoked effective as of the date You first made, used,
-     sold, distributed, or had made, Modifications made by that
-     Participant.
-
-     8.3.  If You assert a patent infringement claim against Participant
-     alleging that such Participant's Contributor Version directly or
-     indirectly infringes any patent where such claim is resolved (such as
-     by license or settlement) prior to the initiation of patent
-     infringement litigation, then the reasonable value of the licenses
-     granted by such Participant under Sections 2.1 or 2.2 shall be taken
-     into account in determining the amount or value of any payment or
-     license.
-
-     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
-     all end user license agreements (excluding distributors and resellers)
-     which have been validly granted by You or any distributor hereunder
-     prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
-     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
-     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
-     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
-     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
-     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
-     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
-     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
-     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
-     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
-     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
-     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
-     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
-     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
-     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
-     The Covered Code is a "commercial item," as that term is defined in
-     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
-     software" and "commercial computer software documentation," as such
-     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
-     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
-     all U.S. Government End Users acquire Covered Code with only those
-     rights set forth herein.
-
-11. MISCELLANEOUS.
-
-     This License represents the complete agreement concerning subject
-     matter hereof. If any provision of this License is held to be
-     unenforceable, such provision shall be reformed only to the extent
-     necessary to make it enforceable. This License shall be governed by
-     California law provisions (except to the extent applicable law, if
-     any, provides otherwise), excluding its conflict-of-law provisions.
-     With respect to disputes in which at least one party is a citizen of,
-     or an entity chartered or registered to do business in the United
-     States of America, any litigation relating to this License shall be
-     subject to the jurisdiction of the Federal Courts of the Northern
-     District of California, with venue lying in Santa Clara County,
-     California, with the losing party responsible for costs, including
-     without limitation, court costs and reasonable attorneys' fees and
-     expenses. The application of the United Nations Convention on
-     Contracts for the International Sale of Goods is expressly excluded.
-     Any law or regulation which provides that the language of a contract
-     shall be construed against the drafter shall not apply to this
-     License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
-     As between Initial Developer and the Contributors, each party is
-     responsible for claims and damages arising, directly or indirectly,
-     out of its utilization of rights under this License and You agree to
-     work with Initial Developer and Contributors to distribute such
-     responsibility on an equitable basis. Nothing herein is intended or
-     shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
-     Initial Developer may designate portions of the Covered Code as
-     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
-     Developer permits you to utilize portions of the Covered Code under
-     Your choice of the NPL or the alternative licenses, if any, specified
-     by the Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License.
-
-     ``The contents of this file are subject to the Mozilla Public License
-     Version 1.1 (the "License"); you may not use this file except in
-     compliance with the License. You may obtain a copy of the License at
-     http://www.mozilla.org/MPL/
-
-     Software distributed under the License is distributed on an "AS IS"
-     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-     License for the specific language governing rights and limitations
-     under the License.
-
-     The Original Code is ______________________________________.
-
-     The Initial Developer of the Original Code is ________________________.
-     Portions created by ______________________ are Copyright (C) ______
-     _______________________. All Rights Reserved.
-
-     Contributor(s): ______________________________________.
-
-     Alternatively, the contents of this file may be used under the terms
-     of the _____ license (the  "[___] License"), in which case the
-     provisions of [______] License are applicable instead of those
-     above.  If you wish to allow use of your version of this file only
-     under the terms of the [____] License and not to allow others to use
-     your version of this file under the MPL, indicate your decision by
-     deleting  the provisions above and replace  them with the notice and
-     other provisions required by the [___] License.  If you do not delete
-     the provisions above, a recipient may use your version of this file
-     under either the MPL or the [___] License."
-
-     [NOTE: The text of this Exhibit A may differ slightly from the text of
-     the notices in the Source Code files of the Original Code. You should
-     use the text of this Exhibit A rather than the text found in the
-     Original Code Source Code for Your Modifications.]
-
-
-The Debian packaging is © 2008, Dmitry E. Oboukhov <dimka at avanto.org>
-and is licensed under the GPL, see /usr/share/common-licenses/GPL-3.
diff --git a/debian/patches/bump-maxversion.patch b/debian/patches/bump-maxversion.patch
deleted file mode 100644
index 354faf0..0000000
--- a/debian/patches/bump-maxversion.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Description: Bump maxVersion to 11.0a1 to support Iceweasel/Firefox 10.
-Author: Benjamin Drung <bdrung at debian.org>
-Bug-Debian: http://bugs.debian.org/645215
-
---- adblock-plus-1.3.10.orig/install.rdf
-+++ adblock-plus-1.3.10/install.rdf
-@@ -534,7 +534,7 @@
-         <!-- fennec -->
-         <em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id>
-         <em:minVersion>1.1</em:minVersion>
--        <em:maxVersion>9.0a1</em:maxVersion>
-+        <em:maxVersion>11.0a1</em:maxVersion>
-       </Description>
-     </em:targetApplication>
-     <em:targetApplication>
-@@ -542,7 +542,7 @@
-         <!-- firefox -->
-         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-         <em:minVersion>3.5</em:minVersion>
--        <em:maxVersion>9.0a1</em:maxVersion>
-+        <em:maxVersion>11.0a1</em:maxVersion>
-       </Description>
-     </em:targetApplication>
-     <em:targetApplication>
-@@ -558,7 +558,7 @@
-         <!-- seamonkey -->
-         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
-         <em:minVersion>2.0</em:minVersion>
--        <em:maxVersion>2.6a1</em:maxVersion>
-+        <em:maxVersion>2.8a1</em:maxVersion>
-       </Description>
-     </em:targetApplication>
-     <em:targetApplication>
-@@ -574,8 +574,8 @@
-         <!-- thunderbird -->
-         <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
-         <em:minVersion>3.0</em:minVersion>
--        <em:maxVersion>9.0a1</em:maxVersion>
-+        <em:maxVersion>11.0a1</em:maxVersion>
-       </Description>
-     </em:targetApplication>
-   </Description>
--</RDF>
-\ No newline at end of file
-+</RDF>
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index de6fab7..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-bump-maxversion.patch
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index b1c7888..0000000
--- a/debian/rules
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/make -f
-
-%:
-	dh $@ --with xul-ext
-
-override_dh_auto_build:
-	xpi-pack . adblock-plus.xpi
-
-override_dh_auto_install:
-	install-xpi adblock-plus.xpi
-
-override_dh_installchangelogs:
-	dh_installchangelogs $(CURDIR)/debian/adblock-plus.upstream-changelog
-
-override_dh_auto_clean:
-	rm -f adblock-plus.xpi
diff --git a/debian/source/format b/debian/source/format
deleted file mode 100644
index 163aaf8..0000000
--- a/debian/source/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/debian/source/local-options b/debian/source/local-options
deleted file mode 100644
index 4aceb10..0000000
--- a/debian/source/local-options
+++ /dev/null
@@ -1 +0,0 @@
-unapply-patches
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index 17ba2c4..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,2 +0,0 @@
-version=3
-http://adblockplus.org/en/source .*/adblockplus-(.*)-source.tgz
diff --git a/defaults/patterns.ini b/defaults/patterns.ini
index 40f904e..afb6774 100644
--- a/defaults/patterns.ini
+++ b/defaults/patterns.ini
@@ -1,14 +1,2 @@
 # Adblock Plus preferences
-version=3
-
-[Subscription]
-url=~il~
-
-[Subscription]
-url=~wl~
-
-[Subscription]
-url=~fl~
-
-[Subscription]
-url=~eh~
+version=4
diff --git a/defaults/preferences/adblockplus.js b/defaults/preferences/adblockplus.js
index 8b6ac1e..30b6cd1 100644
--- a/defaults/preferences/adblockplus.js
+++ b/defaults/preferences/adblockplus.js
@@ -4,15 +4,13 @@ pref("extensions.adblockplus.currentVersion", "0.0");
 pref("extensions.adblockplus.enabled", true);
 pref("extensions.adblockplus.frameobjects", true);
 pref("extensions.adblockplus.fastcollapse", false);
-pref("extensions.adblockplus.showintoolbar", true);
 pref("extensions.adblockplus.showinstatusbar", false);
 pref("extensions.adblockplus.detachsidebar", false);
-pref("extensions.adblockplus.synchronizationinterval", 24);
 pref("extensions.adblockplus.defaulttoolbaraction", 0);
 pref("extensions.adblockplus.defaultstatusbaraction", 0);
 pref("extensions.adblockplus.sidebar_key", "Accel Shift V");
 pref("extensions.adblockplus.sendReport_key", "");
-pref("extensions.adblockplus.settings_key", "Accel Shift E, Accel Shift F, Accel Shift O");
+pref("extensions.adblockplus.filters_key", "Accel Shift E, Accel Shift F, Accel Shift O");
 pref("extensions.adblockplus.enable_key", "");
 pref("extensions.adblockplus.flash_scrolltoitem", true);
 pref("extensions.adblockplus.previewimages", true);
@@ -21,9 +19,11 @@ pref("extensions.adblockplus.patternsbackups", 5);
 pref("extensions.adblockplus.patternsbackupinterval", 24);
 pref("extensions.adblockplus.whitelistschemes", "about chrome file irc moz-safe-about news resource snews x-jsd addbook cid imap mailbox nntp pop data javascript moz-icon");
 pref("extensions.adblockplus.hideimagemanager", true);
-pref("extensions.adblockplus.subscriptions_listurl", "https://adblockplus.org/subscriptions.xml");
+pref("extensions.adblockplus.subscriptions_listurl", "https://adblockplus.org/subscriptions2.xml");
 pref("extensions.adblockplus.subscriptions_fallbackurl", "https://adblockplus.org/getSubscription?version=%VERSION%&url=%SUBSCRIPTION%&downloadURL=%URL%&error=%ERROR%&channelStatus=%CHANNELSTATUS%&responseStatus=%RESPONSESTATUS%");
 pref("extensions.adblockplus.subscriptions_fallbackerrors", 5);
+pref("extensions.adblockplus.subscriptions_exceptionsurl", "https://easylist-downloads.adblockplus.org/exceptionrules.txt");
+pref("extensions.adblockplus.subscriptions_exceptionscheckbox", true);
 pref("extensions.adblockplus.documentation_link", "https://adblockplus.org/redirect?link=%LINK%&lang=%LANG%");
 pref("extensions.adblockplus.savestats", true);
 pref("extensions.adblockplus.composer_default", 2);
diff --git a/install.rdf b/install.rdf
index e57ff21..8dda3fc 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
 
   <Description about="urn:mozilla:install-manifest">
     <em:id>{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}</em:id>
-    <em:version>1.3.10</em:version>
+    <em:version>2.0.1</em:version>
     <em:name>Adblock Plus</em:name>
     <em:description>Ads were yesterday!</em:description>
     <em:creator>Wladimir Palant</em:creator>
@@ -14,18 +14,22 @@
     <em:iconURL>chrome://adblockplus/skin/adblockplus.png</em:iconURL>
     <em:aboutURL>chrome://adblockplus/content/ui/about.xul</em:aboutURL>
     <em:optionsURL>chrome://adblockplus/content/ui/settings.xul</em:optionsURL>
+    <em:optionsType>2</em:optionsType>
     <em:contributor>Claude Lespagnol aka Efdur</em:contributor>
     <em:contributor>Nickolay Ponomarev</em:contributor>
     <em:contributor>Kevin Keller</em:contributor>
     <em:contributor>Fabrice Desré</em:contributor>
+    <em:contributor>Hubird</em:contributor>
     <em:contributor>Günther Beyer (opoloo.de)</em:contributor>
     <em:translator>Ahmet Serkan Tıratacı</em:translator>
     <em:translator>Aivo Kuhlberg</em:translator>
+    <em:translator>Algimantas Margevičius</em:translator>
     <em:translator>AlleyKat</em:translator>
     <em:translator>Dagobert_78</em:translator>
     <em:translator>Genti Ereqi</em:translator>
     <em:translator>Hrvoje Majer</em:translator>
     <em:translator>Jakub Tománek</em:translator>
+    <em:translator>Jonas Slivka</em:translator>
     <em:translator>Joni Heinonen</em:translator>
     <em:translator>Jose Sun</em:translator>
     <em:translator>Ján Kendi (Jacen)</em:translator>
@@ -57,7 +61,6 @@
     <em:translator>Urko</em:translator>
     <em:translator>Wim Benes</em:translator>
     <em:translator>Wladimir Palant</em:translator>
-    <em:translator>anonymous74100</em:translator>
     <em:translator>bahramm</em:translator>
     <em:translator>blackdire</em:translator>
     <em:translator>catcat</em:translator>
@@ -83,7 +86,7 @@
     <em:localized>
       <Description>
         <em:locale>ar</em:locale>
-        <em:name>Adblock Plus</em:name>
+        <em:name>آدبلوك بلس</em:name>
         <em:description>الإعلانات أصبحت من الأمس!</em:description>
         <em:creator>Wladimir Palant</em:creator>
         <em:homepageURL>http://adblockplus.org/ar/</em:homepageURL>
@@ -325,6 +328,15 @@
     </em:localized>
     <em:localized>
       <Description>
+        <em:locale>ka-GE</em:locale>
+        <em:name>Adblock Plus</em:name>
+        <em:description>Ads were yesterday!</em:description>
+        <em:creator>Wladimir Palant</em:creator>
+        <em:homepageURL>http://adblockplus.org/</em:homepageURL>
+      </Description>
+    </em:localized>
+    <em:localized>
+      <Description>
         <em:locale>kk-KZ</em:locale>
         <em:name>Adblock Plus</em:name>
         <em:description>Жарнамаға жол жоқ!</em:description>
@@ -336,16 +348,25 @@
       <Description>
         <em:locale>ko</em:locale>
         <em:name>Adblock Plus</em:name>
-        <em:description>콘텐츠 이용을 방해하고 불건전한 광고, 이제 안녕!</em:description>
+        <em:description>인터넷 이용을 방해하거나 유해한 광고의 차단!</em:description>
         <em:creator>Wladimir Palant</em:creator>
         <em:homepageURL>http://adblockplus.org/ko/</em:homepageURL>
       </Description>
     </em:localized>
     <em:localized>
       <Description>
+        <em:locale>lt</em:locale>
+        <em:name>Adblock Plus</em:name>
+        <em:description>Reklamos - tai jau praeitis!</em:description>
+        <em:creator>Wladimir Palant</em:creator>
+        <em:homepageURL>http://adblockplus.org/</em:homepageURL>
+      </Description>
+    </em:localized>
+    <em:localized>
+      <Description>
         <em:locale>lv</em:locale>
         <em:name>Adblock Plus</em:name>
-        <em:description>Reklāmas bija vakardiena!</em:description>
+        <em:description>Ads were yesterday!</em:description>
         <em:creator>Wladimir Palant</em:creator>
         <em:homepageURL>http://adblockplus.org/</em:homepageURL>
       </Description>
@@ -533,48 +554,32 @@
       <Description>
         <!-- fennec -->
         <em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id>
-        <em:minVersion>1.1</em:minVersion>
-        <em:maxVersion>9.0a1</em:maxVersion>
+        <em:minVersion>4.0.*</em:minVersion>
+        <em:maxVersion>11.0a1</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
       <Description>
         <!-- firefox -->
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-        <em:minVersion>3.5</em:minVersion>
-        <em:maxVersion>9.0a1</em:maxVersion>
-      </Description>
-    </em:targetApplication>
-    <em:targetApplication>
-      <Description>
-        <!-- prism -->
-        <em:id>prism at developer.mozilla.org</em:id>
-        <em:minVersion>1.0b1</em:minVersion>
-        <em:maxVersion>1.0.*</em:maxVersion>
+        <em:minVersion>3.6</em:minVersion>
+        <em:maxVersion>11.0a1</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
       <Description>
         <!-- seamonkey -->
         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
-        <em:minVersion>2.0</em:minVersion>
-        <em:maxVersion>2.6a1</em:maxVersion>
-      </Description>
-    </em:targetApplication>
-    <em:targetApplication>
-      <Description>
-        <!-- songbird -->
-        <em:id>songbird at songbirdnest.com</em:id>
-        <em:minVersion>1.9.0a</em:minVersion>
-        <em:maxVersion>1.11.0a</em:maxVersion>
+        <em:minVersion>2.1</em:minVersion>
+        <em:maxVersion>2.8a1</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
       <Description>
         <!-- thunderbird -->
         <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
-        <em:minVersion>3.0</em:minVersion>
-        <em:maxVersion>9.0a1</em:maxVersion>
+        <em:minVersion>3.1</em:minVersion>
+        <em:maxVersion>11.0a1</em:maxVersion>
       </Description>
     </em:targetApplication>
   </Description>
diff --git a/modules/AppIntegration.jsm b/modules/AppIntegration.jsm
index df36b09..7a97708 100644
--- a/modules/AppIntegration.jsm
+++ b/modules/AppIntegration.jsm
@@ -41,10 +41,13 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import(baseURL.spec + "Utils.jsm");
 Cu.import(baseURL.spec + "Prefs.jsm");
 Cu.import(baseURL.spec + "ContentPolicy.jsm");
+Cu.import(baseURL.spec + "FilterListener.jsm");
 Cu.import(baseURL.spec + "FilterStorage.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
 Cu.import(baseURL.spec + "SubscriptionClasses.jsm");
 Cu.import(baseURL.spec + "RequestNotifier.jsm");
+Cu.import(baseURL.spec + "Synchronizer.jsm");
 Cu.import(baseURL.spec + "Sync.jsm");
 
 if (Utils.isFennec)
@@ -57,14 +60,25 @@ if (Utils.isFennec)
 let wrappers = [];
 
 /**
- * Stores the current value of showintoolbar preference (to detect changes).
+ * Stores the selected hotkeys, initialized when the first browser window opens.
  */
-let currentlyShowingInToolbar = Prefs.showintoolbar;
+let hotkeys = null;
 
 /**
- * Stores the selected hotkeys, initialized when the first browser window opens.
+ * Object observing add-on manager notifications about add-on options being initialized.
+ * @type nsIObserver
  */
-let hotkeys = null;
+let optionsObserver =
+{
+	QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
+	observe: function(subject, topic, data)
+	{
+		if (data != Utils.addonID)
+			return;
+
+		initOptionsDoc(subject.QueryInterface(Ci.nsIDOMDocument));
+	}
+};
 
 /**
  * Initializes app integration module
@@ -77,10 +91,15 @@ function init()
 	// Listen for pref and filters changes
 	Prefs.addListener(function(name)
 	{
-		if (name == "enabled" || name == "showintoolbar" || name == "showinstatusbar" || name == "defaulttoolbaraction" || name == "defaultstatusbaraction")
+		if (name == "enabled" || name == "showinstatusbar" || name == "defaulttoolbaraction" || name == "defaultstatusbaraction")
+			reloadPrefs();
+	});
+	FilterNotifier.addListener(function(action)
+	{
+		if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(action))
 			reloadPrefs();
 	});
-	FilterStorage.addObserver(reloadPrefs);
+	Utils.observerService.addObserver(optionsObserver, "addon-options-displayed", true);
 }
 
 /**
@@ -120,7 +139,7 @@ var AppIntegration =
 							observerService.removeObserver(observer, "sessionstore-windows-restored");
 							timer.cancel();
 							timer = null;
-							showSubscriptions();
+							addSubscription();
 						}
 					};
 	
@@ -132,7 +151,7 @@ var AppIntegration =
 					timer.init(observer, 1000, Ci.nsITimer.TYPE_ONE_SHOT);
 				}
 				else
-					Utils.runAsync(showSubscriptions);
+					addSubscription();
 			}
 		}
 
@@ -164,14 +183,36 @@ var AppIntegration =
 
 	/**
 	 * Toggles the pref for the Adblock Plus sync engine.
+	 * @return {Boolean} new state of the sync engine
 	 */
 	toggleSync: function()
 	{
 		let syncEngine = Sync.getEngine();
 		syncEngine.enabled = !syncEngine.enabled;
+		return syncEngine.enabled;
 	},
 	
 	/**
+	 * Adds or removes the Adblock Plus toolbar icon.
+	 * @return {Boolean} new state of the toolbar button
+	 */
+	toggleToolbarIcon: function()
+	{
+		if (!wrappers.length)
+			return false;
+
+		let newVal = !wrappers[0].isToolbarIconVisible();
+		for (let i = 0; i < wrappers.length; i++)
+		{
+			if (newVal)
+				wrappers[i].installToolbarIcon();
+			else
+				wrappers[i].hideToolbarIcon();
+		}
+		return wrappers[0].isToolbarIconVisible();
+	},
+
+	/**
 	 * If the given filter is already in user's list, removes it from the list. Otherwise adds it.
 	 */
 	toggleFilter: function(/**Filter*/ filter)
@@ -179,16 +220,53 @@ var AppIntegration =
 		if (filter.subscriptions.length)
 		{
 			if (filter.disabled || filter.subscriptions.some(function(subscription) !(subscription instanceof SpecialSubscription)))
-			{
 				filter.disabled = !filter.disabled;
-				FilterStorage.triggerObservers(filter.disabled ? "filters disable" : "filters enable", [filter]);
-			}
 			else
 				FilterStorage.removeFilter(filter);
 		}
 		else
 			FilterStorage.addFilter(filter);
-		FilterStorage.saveToDisk();
+	},
+
+	/**
+	 * Opens ABP menu.
+	 */
+	openMenu: function(window)
+	{
+		let wrapper = AppIntegration.getWrapperForWindow(window.top);
+		if (!wrapper)
+		{
+			// Maybe we got a content window
+			window = window.QueryInterface(Ci.nsIInterfaceRequestor)
+										 .getInterface(Ci.nsIWebNavigation)
+										 .QueryInterface(Ci.nsIDocShellTreeItem)
+										 .rootTreeItem
+										 .QueryInterface(Ci.nsIInterfaceRequestor)
+										 .getInterface(Ci.nsIDOMWindow);
+			if (window.wrappedJSObject)
+				window = window.wrappedJSObject;
+			wrapper = AppIntegration.getWrapperForWindow(window);
+		}
+		if (!wrapper)
+		{
+			// Try to find any known window
+			let enumerator = Utils.windowMediator.getZOrderDOMWindowEnumerator(null, true);
+			if (!enumerator.hasMoreElements())
+			{
+				// On Linux the list returned will be empty, see bug 156333. Fall back to random order.
+				enumerator = Utils.windowMediator.getEnumerator(null);
+			}
+			while (enumerator.hasMoreElements())
+			{
+				window = enumerator.getNext().QueryInterface(Ci.nsIDOMWindow);
+				wrapper = AppIntegration.getWrapperForWindow(window);
+				if (wrapper)
+					break;
+			}
+		}
+
+		if (wrapper)
+			Utils.runAsync(wrapper.openMenu, wrapper);
 	}
 };
 
@@ -276,7 +354,7 @@ WindowWrapper.prototype =
 	 * Methods that can be defined at attributes of the hooks element.
 	 * @type Array of String
 	 */
-	customMethods: ["getBrowser", "addTab", "getContextMenu", "getToolbox", "getDefaultToolbar", "toolbarInsertBefore", "unhideToolbar"],
+	customMethods: ["getBrowser", "addTab", "getContextMenu", "getToolbox", "getDefaultToolbar", "toolbarInsertBefore", "hasAddonBar"],
 
 	/**
 	 * Progress listener used to watch for location changes, if any.
@@ -363,15 +441,15 @@ WindowWrapper.prototype =
 	 */
 	fixupMenus: function()
 	{
-		function fixId(node)
+		function fixId(node, newId)
 		{
 			if (node.nodeType == node.ELEMENT_NODE)
 			{
 				if (node.hasAttribute("id"))
-					node.setAttribute("id", node.getAttribute("id").replace(/abp-status/, "abp-toolbar"));
+					node.setAttribute("id", node.getAttribute("id").replace(/abp-status/, newId));
 		
 				for (let i = 0, len = node.childNodes.length; i < len; i++)
-					fixId(node.childNodes[i]);
+					fixId(node.childNodes[i], newId);
 			}
 			return node;
 		}
@@ -379,10 +457,13 @@ WindowWrapper.prototype =
 		let menuSource = this.E("abp-status-popup");
 		let paletteButton = this.getPaletteButton();
 		let toolbarButton = this.E("abp-toolbarbutton");
+		let menuItem = this.E("abp-menuitem");
 		if (toolbarButton)
-			toolbarButton.appendChild(fixId(menuSource.cloneNode(true)));
+			toolbarButton.appendChild(fixId(menuSource.cloneNode(true), "abp-toolbar"));
 		if (paletteButton && paletteButton != toolbarButton)
-			paletteButton.appendChild(fixId(menuSource.cloneNode(true)));
+			paletteButton.appendChild(fixId(menuSource.cloneNode(true), "abp-toolbar"));
+		if (menuItem)
+			menuItem.appendChild(fixId(menuSource.cloneNode(true), "abp-menuitem"));
 	},
 	
 	/**
@@ -416,7 +497,7 @@ WindowWrapper.prototype =
 			let element = this.E(id);
 			if (element)
 				element.addEventListener(event, handler, false);
-	
+
 			if (id in paletteButtonIDs)
 				paletteButtonIDs[id].addEventListener(event, handler, false);
 		}
@@ -541,20 +622,15 @@ WindowWrapper.prototype =
 				return;
 	
 			if (element.tagName == "statusbarpanel")
-				element.hidden = !Prefs.showinstatusbar;
+				element.hidden = !Prefs.showinstatusbar || (this.hasAddonBar && this.hasAddonBar());
 			else
 			{
-				element.hidden = !Prefs.showintoolbar;
 				if (element.hasAttribute("context") && Prefs.defaulttoolbaraction == 0)
 					element.setAttribute("type", "menu");
 				else
 					element.setAttribute("type", "menu-button");
 			}
 
-			// HACKHACK: Show status bar icon instead of toolbar icon if the application doesn't have a toolbar icon
-			if (element.hidden && element.tagName == "statusbarpanel" && !this.getDefaultToolbar)
-				element.hidden = !Prefs.showintoolbar;
-	
 			element.setAttribute("abpstate", state);
 		};
 	
@@ -732,7 +808,8 @@ WindowWrapper.prototype =
 		if (contextMenu)
 		{
 			contextMenu.addEventListener("popupshowing", this._bindMethod(this.updateContextMenu), false);
-		
+			contextMenu.addEventListener("popuphidden", this._bindMethod(this.clearContextMenu), false);
+
 			// Make sure our context menu items are at the bottom
 			contextMenu.appendChild(this.E("abp-removeWhitelist-menuitem"));
 			contextMenu.appendChild(this.E("abp-frame-menuitem"));
@@ -743,32 +820,88 @@ WindowWrapper.prototype =
 	},
 
 	/**
+	 * Checks whether the toolbar icon is currently displayed.
+	 */
+	isToolbarIconVisible: function()
+	{
+		let tb = this.E("abp-toolbarbutton");
+		if (!tb || tb.parentNode.localName == "toolbarpalette")
+			return false;
+
+		if (tb.parentNode.collapsed)
+			return false;
+
+		return true;
+	},
+
+	/**
 	 * Makes sure the toolbar button is displayed.
 	 */
 	installToolbarIcon: function()
 	{
 		let tb = this.E("abp-toolbarbutton");
-		if (tb && tb.parentNode.localName != "toolbarpalette")
-			return;
+		if (!tb || tb.parentNode.localName == "toolbarpalette")
+		{
+			let toolbar = (this.getDefaultToolbar ? this.getDefaultToolbar() : null);
+			if (!toolbar || typeof toolbar.insertItem != "function")
+				return;
 
-		let toolbar = (this.getDefaultToolbar ? this.getDefaultToolbar() : null);
-		if (!toolbar || typeof toolbar.insertItem != "function")
-			return;
+			let insertBefore = (this.toolbarInsertBefore ? this.toolbarInsertBefore() : null);
+			if (insertBefore && insertBefore.parentNode != toolbar)
+				insertBefore = null;
+
+			toolbar.insertItem("abp-toolbarbutton", insertBefore, null, false);
+
+			toolbar.setAttribute("currentset", toolbar.currentSet);
+			this.window.document.persist(toolbar.id, "currentset");
+		}
+
+		tb = this.E("abp-toolbarbutton");
+		if (tb && tb.parentNode.collapsed)
+		{
+			tb.parentNode.setAttribute("collapsed", "false");
+			this.window.document.persist(tb.parentNode.id, "collapsed");
+		}
+	},
 
-		let insertBefore = (this.toolbarInsertBefore ? this.toolbarInsertBefore() : null);
-		if (insertBefore && insertBefore.parentNode != toolbar)
-			insertBefore = null;
+	/**
+	 * Removes toolbar button from the toolbar.
+	 */
+	hideToolbarIcon: function()
+	{
+		let tb = this.E("abp-toolbarbutton");
+		if (!tb || tb.parentNode.localName != "toolbar")
+			return;
 
-		toolbar.insertItem("abp-toolbarbutton", insertBefore, null, false);
+		let toolbar = tb.parentNode;
+		toolbar.currentSet = toolbar.currentSet.split(",").filter(function(id) id != "abp-toolbarbutton").join(",");
 
 		toolbar.setAttribute("currentset", toolbar.currentSet);
 		this.window.document.persist(toolbar.id, "currentset");
+	},
+
+	/**
+	 * Opens Adblock Plus menu.
+	 */
+	openMenu: function()
+	{
+		this.installToolbarIcon();
 
-		if (this.unhideToolbar && this.unhideToolbar())
+		let button = this.E("abp-toolbarbutton");
+		if (!button)
+			return;
+
+		let toolbar = button.parentNode;
+		if (toolbar.collapsed)
 		{
 			toolbar.setAttribute("collapsed", "false");
 			this.window.document.persist(toolbar.id, "collapsed");
 		}
+
+		Utils.runAsync(function()
+		{
+			button.open = true;
+		});
 	},
 
 	/**
@@ -868,7 +1001,7 @@ WindowWrapper.prototype =
 		// Open dialog
 		if (!Utils.isFennec)
 		{
-			let subscription = {url: url, title: title, disabled: false, external: false, autoDownload: true,
+			let subscription = {url: url, title: title, disabled: false, external: false,
 													mainSubscriptionTitle: mainSubscriptionTitle, mainSubscriptionURL: mainSubscriptionURL};
 			this.window.openDialog("chrome://adblockplus/content/ui/subscriptionSelection.xul", "_blank",
 														 "chrome,centerscreen,resizable,dialog=no", subscription, null);
@@ -891,6 +1024,17 @@ WindowWrapper.prototype =
 			event.preventDefault();
 			return;
 		}
+
+		// Prevent tooltip from overlapping menu
+		for each (let id in ["abp-toolbar-popup", "abp-status-popup"])
+		{
+			let element = this.E(id);
+			if (element && element.state == "open")
+			{
+				event.preventDefault();
+				return;
+			}
+		}
 	
 		let type = (node.id == "abp-toolbarbutton" ? "toolbar" : "statusbar");
 		let action = parseInt(Prefs["default" + type + "action"]);
@@ -977,7 +1121,7 @@ WindowWrapper.prototype =
 		let popup = event.target;
 	
 		// Submenu being opened - ignore
-		if (!/^(abp-(?:toolbar|status)-)popup$/.test(popup.getAttribute("id")))
+		if (!/^(abp-(?:toolbar|status|menuitem)-)popup$/.test(popup.getAttribute("id")))
 			return;
 		let prefix = RegExp.$1;
 	
@@ -1032,40 +1176,31 @@ WindowWrapper.prototype =
 		this.E(prefix + "disabled").setAttribute("checked", !Prefs.enabled);
 		this.E(prefix + "frameobjects").setAttribute("checked", Prefs.frameobjects);
 		this.E(prefix + "slowcollapse").setAttribute("checked", !Prefs.fastcollapse);
-		this.E(prefix + "showintoolbar").setAttribute("checked", Prefs.showintoolbar);
+		this.E(prefix + "savestats").setAttribute("checked", Prefs.savestats);
+
+		let hasToolbar = this.getDefaultToolbar && this.getDefaultToolbar();
+		let hasAddonBar = this.hasAddonBar && this.hasAddonBar();
+		let hasStatusBar = this.E("abp-status");
+		this.E(prefix + "showinaddonbar").hidden = !hasAddonBar || prefix == "abp-toolbar-";
+		this.E(prefix + "showintoolbar").hidden = !hasToolbar || hasAddonBar || prefix == "abp-toolbar-";
+		this.E(prefix + "showinstatusbar").hidden = !hasStatusBar || hasAddonBar;
+		this.E(prefix + "iconSettingsSeparator").hidden = this.E(prefix + "showinaddonbar").hidden && this.E(prefix + "showintoolbar").hidden && this.E(prefix + "showinstatusbar").hidden;
+
+		this.E(prefix + "showinaddonbar").setAttribute("checked", this.isToolbarIconVisible());
+		this.E(prefix + "showintoolbar").setAttribute("checked", this.isToolbarIconVisible());
 		this.E(prefix + "showinstatusbar").setAttribute("checked", Prefs.showinstatusbar);
 	
 		let syncEngine = Sync.getEngine();
 		this.E(prefix + "sync").hidden = !syncEngine;
 		this.E(prefix + "sync").setAttribute("checked", syncEngine && syncEngine.enabled);
 
-		let defAction = (prefix == "abp-toolbar-" || this.window.document.popupNode.id == "abp-toolbarbutton" ?
+		let defAction = (!this.window.document.popupNode || this.window.document.popupNode.id == "abp-toolbarbutton" ?
 										 Prefs.defaulttoolbaraction :
 										 Prefs.defaultstatusbaraction);
 		this.E(prefix + "opensidebar").setAttribute("default", defAction == 1);
 		this.E(prefix + "closesidebar").setAttribute("default", defAction == 1);
-		this.E(prefix + "settings").setAttribute("default", defAction == 2);
+		this.E(prefix + "filters").setAttribute("default", defAction == 2);
 		this.E(prefix + "disabled").setAttribute("default", defAction == 3);
-
-		// Only show "Recommend" button to Facebook users, we don't want to advertise Facebook
-		this.E(prefix + "recommendbutton").hidden = true;
-		if (!this.E("abp-hooks").hasAttribute("forceHideRecommend"))
-		{
-			let cookieManager = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
-			if ("getCookiesFromHost" in cookieManager)
-			{
-				let enumerator = cookieManager.getCookiesFromHost("facebook.com");
-				while (enumerator.hasMoreElements())
-				{
-					let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie);
-					if (cookie.name == "lu")
-					{
-						this.E(prefix + "recommendbutton").hidden = false;
-						break;
-					}
-				}
-			}
-		}
 	},
 
 	/**
@@ -1081,25 +1216,26 @@ WindowWrapper.prototype =
 	},
 
 	/**
-	 * Opens Facebook's recommend page.
+	 * Opens our contribution page.
 	 */
-	recommend: function()
+	openContributePage: function()
 	{
-		this.window.open("http://www.facebook.com/share.php?u=http%3A%2F%2Fadblockplus.org%2F&t=Adblock%20Plus", "_blank", "width=550,height=350");
+		Utils.loadDocLink("contribute");
 	},
 
 	/**
-	 * Hide recommend button and persist this choice.
+	 * Hide contribute button and persist this choice.
 	 */
-	recommendHide: function(event)
+	hideContributeButton: function(event)
 	{
-		let hooks = this.E("abp-hooks");
-		hooks.setAttribute("forceHideRecommend", "true");
-		this.window.document.persist(hooks.id, "forceHideRecommend");
-
-		for each (let button in [this.E("abp-status-recommendbutton"), this.E("abp-toolbar-recommendbutton")])
+		for each (let button in [this.E("abp-status-contributebutton"), this.E("abp-toolbar-contributebutton"), this.E("abp-menuitem-contributebutton")])
+		{
 			if (button)
-				button.hidden = true;
+			{
+				button.setAttribute("hidden", "true");
+				this.window.document.persist(button.id, "hidden");
+			}
+		}
 	},
 
 	/**
@@ -1138,10 +1274,6 @@ WindowWrapper.prototype =
 			else
 				this.detachedSidebar = this.window.openDialog("chrome://adblockplus/content/ui/sidebarDetached.xul", "_blank", "chrome,resizable,dependent,dialog=no");
 		}
-	
-		let menuItem = this.E("abp-blockableitems");
-		if (menuItem)
-			menuItem.setAttribute("checked", this.isSidebarOpen());
 	},
 
 	/**
@@ -1162,6 +1294,24 @@ WindowWrapper.prototype =
 	},
 
 	/**
+	 * Toggles "Count filter hits" option.
+	 */
+	toggleSaveStats: function()
+	{
+		if (Prefs.savestats)
+		{
+			if (!Utils.confirm(this.window, Utils.getString("clearStats_warning")))
+				return;
+
+			FilterStorage.resetHitCounts();
+			FilterListener.setDirty(0);   // Force saving to disk
+			Prefs.savestats = false;
+		}
+		else
+			Prefs.savestats = true;
+	},
+
+	/**
 	 * Handles command events on toolbar icon.
 	 */
 	handleToolbarCommand: function(event)
@@ -1207,7 +1357,7 @@ WindowWrapper.prototype =
 		if (action == 1)
 			this.toggleSidebar();
 		else if (action == 2)
-			Utils.openSettingsDialog();
+			Utils.openFiltersDialog();
 		else if (action == 3)
 		{
 			// If there is a whitelisting rule for current page - remove it (reenable).
@@ -1305,6 +1455,18 @@ WindowWrapper.prototype =
 	},
 
 	/**
+	 * Clears context menu data once the menu is closed.
+	 */
+	clearContextMenu: function()
+	{
+		this.nodeData = null;
+		this.currentNode = null;
+		this.backgroundData = null;
+		this.frameData = null;
+		this.currentFrame = null;
+	},
+
+	/**
 	 * Brings up the filter composer dialog to block an item.
 	 */
 	blockItem: function(/**Node*/ node, /**RequestEntry*/ item)
@@ -1325,19 +1487,21 @@ WindowWrapper.prototype.eventHandlers = [
 	["abp-tooltip", "popupshowing", WindowWrapper.prototype.fillTooltip],
 	["abp-status-popup", "popupshowing", WindowWrapper.prototype.fillPopup],
 	["abp-toolbar-popup", "popupshowing", WindowWrapper.prototype.fillPopup],
+	["abp-menuitem-popup", "popupshowing", WindowWrapper.prototype.fillPopup],
 	["abp-command-sendReport", "command", WindowWrapper.prototype.openReportDialog],
-	["abp-command-settings", "command", function() {Utils.openSettingsDialog();}],
+	["abp-command-filters", "command", function() {Utils.openFiltersDialog();}],
 	["abp-command-sidebar", "command", WindowWrapper.prototype.toggleSidebar],
 	["abp-command-togglesitewhitelist", "command", function() { AppIntegration.toggleFilter(this.siteWhitelist); }],
 	["abp-command-togglepagewhitelist", "command", function() { AppIntegration.toggleFilter(this.pageWhitelist); }],
 	["abp-command-toggleobjtabs", "command", function() { AppIntegration.togglePref("frameobjects"); }],
 	["abp-command-togglecollapse", "command", function() { AppIntegration.togglePref("fastcollapse"); }],
+	["abp-command-togglesavestats", "command", WindowWrapper.prototype.toggleSaveStats],
 	["abp-command-togglesync", "command", AppIntegration.toggleSync],
-	["abp-command-toggleshowintoolbar", "command", function() { AppIntegration.togglePref("showintoolbar"); }],
+	["abp-command-toggleshowintoolbar", "command", AppIntegration.toggleToolbarIcon],
 	["abp-command-toggleshowinstatusbar", "command", function() { AppIntegration.togglePref("showinstatusbar"); }],
 	["abp-command-enable", "command", function() { AppIntegration.togglePref("enabled"); }],
-	["abp-command-recommend", "command", WindowWrapper.prototype.recommend],
-	["abp-command-recommend-hide", "command", WindowWrapper.prototype.recommendHide],
+	["abp-command-contribute", "command", WindowWrapper.prototype.openContributePage],
+	["abp-command-contribute-hide", "command", WindowWrapper.prototype.hideContributeButton],
 	["abp-toolbarbutton", "command", WindowWrapper.prototype.handleToolbarCommand],
 	["abp-toolbarbutton", "click", WindowWrapper.prototype.handleToolbarClick],
 	["abp-status", "click", WindowWrapper.prototype.handleStatusClick],
@@ -1354,19 +1518,72 @@ WindowWrapper.prototype.eventHandlers = [
  */
 function reloadPrefs()
 {
-	if (currentlyShowingInToolbar != Prefs.showintoolbar)
-	{
-		currentlyShowingInToolbar = Prefs.showintoolbar;
-		if (Prefs.showintoolbar)
-			for each (let wrapper in wrappers)
-				wrapper.installToolbarIcon();
-	}
-
 	for each (let wrapper in wrappers)
 		wrapper.updateState();
 }
 
 /**
+ * Initializes options in add-on manager when they show up.
+ */
+function initOptionsDoc(/**Document*/ doc)
+{
+	function E(id) doc.getElementById(id);
+
+	E("adblockplus-filters").addEventListener("command", Utils.openFiltersDialog, false);
+
+	let wrapper = wrappers.length ? wrappers[0] : null;
+	let hasToolbar = wrapper && wrapper.getDefaultToolbar && wrapper.getDefaultToolbar();
+	let hasAddonBar = wrapper && wrapper.hasAddonBar && wrapper.hasAddonBar();
+	let hasStatusBar = wrapper && wrapper.E("abp-status");
+
+	let syncEngine = Sync.getEngine();
+	E("adblockplus-sync").collapsed = !syncEngine;
+
+	E("adblockplus-showinaddonbar").collapsed = !hasAddonBar;
+	E("adblockplus-showintoolbar").collapsed = !hasToolbar || hasAddonBar;
+	E("adblockplus-showinstatusbar").collapsed = !hasStatusBar || hasAddonBar;
+
+	function initCheckboxes()
+	{
+		if (!("value" in E("adblockplus-showinaddonbar")))
+		{
+			// XBL bindings didn't apply yet (bug 708397), try later
+			Utils.runAsync(initCheckboxes);
+			return;
+		}
+
+		E("adblockplus-savestats").value = Prefs.savestats;
+		E("adblockplus-savestats").addEventListener("command", function()
+		{
+			wrapper.toggleSaveStats.call({window: doc.defaultView});
+			E("adblockplus-savestats").value = Prefs.savestats;
+		}, false);
+
+		E("adblockplus-sync").value = syncEngine && syncEngine.enabled;
+		E("adblockplus-sync").addEventListener("command", function()
+		{
+			E("adblockplus-sync").value = AppIntegration.toggleSync();
+		}, false);
+
+		if (wrapper)
+		{
+			E("adblockplus-showinaddonbar").value =
+				E("adblockplus-showintoolbar").value =
+				wrapper.isToolbarIconVisible();
+			let handler = function()
+			{
+				E("adblockplus-showinaddonbar").value =
+					E("adblockplus-showintoolbar").value =
+					AppIntegration.toggleToolbarIcon();
+			};
+			E("adblockplus-showinaddonbar").addEventListener("command", handler, false);
+			E("adblockplus-showintoolbar").addEventListener("command", handler, false);
+		}
+	}
+	initCheckboxes();
+}
+
+/**
  * Tests whether image manager context menu entry should be hidden with user's current preferences.
  * @return Boolean
  */
@@ -1400,33 +1617,97 @@ function shouldHideImageManager()
 }
 
 /**
- * Executed on first run, presents the user with a list of filter subscriptions
- * and allows choosing one.
+ * Executed on first run, adds a filter subscription and notifies that user
+ * about that.
  */
-function showSubscriptions()
+function addSubscription()
 {
-	let wrapper = (wrappers.length ? wrappers[0] : null);
+	// Add "acceptable ads" subscription for new users and user updating from old ABP versions.
+	// Don't add it for users of privacy subscriptions (use a hardcoded list for now).
+	let addAcceptable = (Utils.versionComparator.compare(Prefs.lastVersion, "2.0b.3269") < 0);
+	let privacySubscriptions = {
+		"https://easylist-downloads.adblockplus.org/easyprivacy+easylist.txt": true,
+		"https://easylist-downloads.adblockplus.org/easyprivacy.txt": true,
+		"https://secure.fanboy.co.nz/fanboy-tracking.txt": true,
+		"https://fanboy-adblock-list.googlecode.com/hg/fanboy-adblocklist-stats.txt": true,
+		"https://bitbucket.org/fanboy/fanboyadblock/raw/tip/fanboy-adblocklist-stats.txt": true,
+		"https://hg01.codeplex.com/fanboyadblock/raw-file/tip/fanboy-adblocklist-stats.txt": true,
+		"https://adversity.googlecode.com/hg/Adversity-Tracking.txt": true
+	};
+	if (FilterStorage.subscriptions.some(function(subscription) subscription.url == Prefs.subscriptions_exceptionsurl || subscription.url in privacySubscriptions))
+		addAcceptable = false;
+
+	// Don't add subscription if the user has a subscription already
+	let addSubscription = true;
+	if (FilterStorage.subscriptions.some(function(subscription) subscription instanceof DownloadableSubscription && subscription.url != Prefs.subscriptions_exceptionsurl))
+		addSubscription = false;
+
+	// Only add subscription if this is the first run or the user has no filters
+	if (addSubscription)
+	{
+		let hasFilters = FilterStorage.subscriptions.some(function(subscription) subscription.filters.length);
+		if (hasFilters && Utils.versionComparator.compare(Prefs.lastVersion, "0.0") > 0)
+			addSubscription = false;
+	}
 
-	// Don't annoy the user if he has a subscription already
-	let hasSubscriptions = FilterStorage.subscriptions.some(function(subscription) subscription instanceof DownloadableSubscription);
-	if (hasSubscriptions)
-		return;
+	// Add "acceptable ads" subscription
+	if (addAcceptable)
+	{
+		let subscription = Subscription.fromURL(Prefs.subscriptions_exceptionsurl);
+		if (subscription)
+		{
+			subscription.title = "Allow non-intrusive advertising";
+			FilterStorage.addSubscription(subscription);
+			if (subscription instanceof DownloadableSubscription && !subscription.lastDownload)
+				Synchronizer.execute(subscription);
+		}
+		else
+			addAcceptable = false;
+	}
 
-	// Only show the list if this is the first run or the user has no filters
-	let hasFilters = FilterStorage.subscriptions.some(function(subscription) subscription.filters.length);
-	if (hasFilters && Utils.versionComparator.compare(Prefs.lastVersion, "0.0") > 0)
+	if (!addSubscription && !addAcceptable)
 		return;
 
-	if (wrapper && wrapper.addTab)
+	function notifyUser()
 	{
-		wrapper.addTab("chrome://adblockplus/content/ui/subscriptionSelection.xul");
+		let wrapper = (wrappers.length ? wrappers[0] : null);
+		if (wrapper && wrapper.addTab)
+		{
+			wrapper.addTab("chrome://adblockplus/content/ui/firstRun.xul");
+		}
+		else
+		{
+			Utils.windowWatcher.openWindow(wrapper ? wrapper.window : null,
+																		 "chrome://adblockplus/content/ui/firstRun.xul",
+																		 "_blank", "chrome,centerscreen,resizable,dialog=no", null);
+		}
 	}
-	else
+
+	if (addSubscription)
 	{
-		Utils.windowWatcher.openWindow(wrapper ? wrapper.window : null,
-																	 "chrome://adblockplus/content/ui/subscriptionSelection.xul",
-																	 "_blank", "chrome,centerscreen,resizable,dialog=no", null);
+		// Load subscriptions data
+		let request = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIJSXMLHttpRequest);
+		request.open("GET", "chrome://adblockplus/content/ui/subscriptions.xml");
+		request.addEventListener("load", function()
+		{
+			let node = Utils.chooseFilterSubscription(request.responseXML.getElementsByTagName("subscription"));
+			let subscription = (node ? Subscription.fromURL(node.getAttribute("url")) : null);
+			if (subscription)
+			{
+				FilterStorage.addSubscription(subscription);
+				subscription.disabled = false;
+				subscription.title = node.getAttribute("title");
+				subscription.homepage = node.getAttribute("homepage");
+				if (subscription instanceof DownloadableSubscription && !subscription.lastDownload)
+					Synchronizer.execute(subscription);
+
+				notifyUser();
+			}
+		}, false);
+		request.send();
 	}
+	else
+		notifyUser();
 }
 
 /**
diff --git a/modules/AppIntegrationFennec.jsm b/modules/AppIntegrationFennec.jsm
index d6b6161..f4dd89e 100644
--- a/modules/AppIntegrationFennec.jsm
+++ b/modules/AppIntegrationFennec.jsm
@@ -41,6 +41,7 @@ Cu.import(baseURL.spec + "Prefs.jsm");
 Cu.import(baseURL.spec + "ContentPolicy.jsm");
 Cu.import(baseURL.spec + "ElemHide.jsm");
 Cu.import(baseURL.spec + "FilterStorage.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
 Cu.import(baseURL.spec + "SubscriptionClasses.jsm");
 Cu.import(baseURL.spec + "Synchronizer.jsm");
@@ -54,17 +55,19 @@ let PolicyPrivate = Cu.import(baseURL.spec + "ContentPolicy.jsm", null).PolicyPr
  * needs to be passed on to the content policy.
  * @constructor
  */
-function FakeWindow(/**String*/ location, /**FakeNode*/ document, /**FakeWindow*/ top)
+function FakeWindow(/**String*/ location, /**FakeNode*/ document, /**FakeWindow*/ parent, /**FakeWindow*/ top)
 {
 	this._location = location;
-	this._top = top;
+	this._parent = (parent || this);
+	this._top = (top || this);
 	this.document = document;
 }
 FakeWindow.prototype =
 {
 	get location() this,
 	get href() this._location,
-	get top() this._top || this
+	get parent() this._parent,
+	get top() this._top
 }
 
 /**
@@ -72,13 +75,22 @@ FakeWindow.prototype =
  * needs to be passed on to the content policy.
  * @constructor
  */
-function FakeNode(/**String*/ wndLocation, /**String*/ topLocation)
+function FakeNode(/**String[]*/ locations)
 {
-	let topWnd = new FakeWindow(topLocation, this, null);
-	this.defaultView = new FakeWindow(wndLocation, this, topWnd);
+	let parentWindow = null;
+	let topWindow = null;
+	while (locations.length)
+	{
+		let wnd = new FakeWindow(locations.pop(), this, parentWindow, topWindow);
+		parentWindow = wnd;
+		if (!topWindow)
+			topWindow = wnd;
+	}
+	this.defaultView = parentWindow;
 }
 FakeNode.prototype =
 {
+	defaultView: null,
 	get ownerDocument() this,
 	getUserData: function() {return null},
 	setUserData: function() {}
@@ -108,7 +120,7 @@ try
 		try
 		{
 			let data = message.json;
-			let fakeNode = new FakeNode(data.wndLocation, data.topLocation);
+			let fakeNode = new FakeNode(data.locations);
 			let result = PolicyPrivate.shouldLoad(data.contentType, data.contentLocation, null, fakeNode);
 			return {value: result, postProcess: needPostProcess};
 		}
@@ -136,7 +148,7 @@ try
 			if (!filter)
 				return false;
 
-			let fakeNode = new FakeNode(data.wndLocation, data.topLocation);
+			let fakeNode = new FakeNode(data.locations);
 			return !Policy.processNode(fakeNode.defaultView, fakeNode, Policy.type.ELEMHIDE, filter);
 		}
 		catch (e)
@@ -148,11 +160,11 @@ try
 	});
 
 	// Trigger update in child processes if elemhide stylesheet or matcher data change
-	FilterStorage.addObserver(function(action)
+	FilterNotifier.addListener(function(action)
 	{
 		if (action == "elemhideupdate")
 			Utils.parentMessageManager.sendAsyncMessage("AdblockPlus:ElemHide:updateStyleURL", ElemHide.styleURL);
-		else if (/^(filters|subscriptions) (add|remove|enable|disable|update)$/.test(action))
+		else if (/^(filter|subscription)\.(added|removed|disabled|updated)$/.test(action))
 			Utils.parentMessageManager.sendAsyncMessage("AdblockPlus:Matcher:clearCache");
 	});
 
@@ -284,15 +296,15 @@ function onCreateOptions(wrapper, event)
 
 	let updateFunction = function(action, items)
 	{
-		if (/^subscriptions\b/.test(action))
+		if (/^subscription\b/.test(action))
 			updateSubscriptionList(wrapper);
 	}
-	updateFunction("subscriptions");
-	FilterStorage.addObserver(updateFunction);
+	updateFunction("subscription");
+	FilterNotifier.addListener(updateFunction);
 
 	wrapper.window.addEventListener("unload", function()
 	{
-		FilterStorage.removeObserver(updateFunction);
+		FilterNotifier.removeListener(updateFunction);
 	}, false);
 }
 
@@ -346,7 +358,6 @@ function setSubscription(url, title)
 
 	FilterStorage.addSubscription(currentSubscription);
 	Synchronizer.execute(currentSubscription, false);
-	FilterStorage.saveToDisk();
 }
 
 function updateFennecStatusUI(wrapper)
diff --git a/modules/Bootstrap.jsm b/modules/Bootstrap.jsm
index 48dd110..8cff1d8 100644
--- a/modules/Bootstrap.jsm
+++ b/modules/Bootstrap.jsm
@@ -92,7 +92,6 @@ let defaultModules = [
 	baseURL.spec + "FilterListener.jsm",
 	baseURL.spec + "ContentPolicy.jsm",
 	baseURL.spec + "Synchronizer.jsm",
-	baseURL.spec + "Survey.jsm",
 	baseURL.spec + "Sync.jsm"
 ];
 
diff --git a/modules/ContentPolicy.jsm b/modules/ContentPolicy.jsm
index b07b8c5..f1adcca 100644
--- a/modules/ContentPolicy.jsm
+++ b/modules/ContentPolicy.jsm
@@ -49,13 +49,13 @@ Cu.import(baseURL.spec + "RequestNotifier.jsm");
  * List of explicitly supported content types
  * @type Array of String
  */
-const contentTypes = ["OTHER", "SCRIPT", "IMAGE", "STYLESHEET", "OBJECT", "SUBDOCUMENT", "DOCUMENT", "XBL", "PING", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "DTD", "FONT", "MEDIA"];
+const contentTypes = ["OTHER", "SCRIPT", "IMAGE", "STYLESHEET", "OBJECT", "SUBDOCUMENT", "DOCUMENT", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "FONT", "MEDIA"];
 
 /**
  * List of content types that aren't associated with a visual document area
  * @type Array of String
  */
-const nonVisualTypes = ["SCRIPT", "STYLESHEET", "XBL", "PING", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "DTD", "FONT"];
+const nonVisualTypes = ["SCRIPT", "STYLESHEET", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "FONT"];
 
 /**
  * Public policy checking functions and auxiliary objects
@@ -117,6 +117,10 @@ var Policy =
 		Policy.typeDescr[0xFFFD] = "ELEMHIDE";
 		Policy.localizedDescr[0xFFFD] = Utils.getString("type_label_elemhide");
 	
+		Policy.type.POPUP = 0xFFFE;
+		Policy.typeDescr[0xFFFE] = "POPUP";
+		Policy.localizedDescr[0xFFFE] = Utils.getString("type_label_popup");
+
 		for each (let type in nonVisualTypes)
 			Policy.nonVisual[Policy.type[type]] = true;
 	
@@ -160,6 +164,7 @@ var Policy =
 			catMan.addCategoryEntry(category, PolicyPrivate.classDescription, PolicyPrivate.contractID, false, true);
 
 		Utils.observerService.addObserver(PolicyPrivate, "http-on-modify-request", true);
+		Utils.observerService.addObserver(PolicyPrivate, "content-document-global-created", true);
 
 
 	},
@@ -184,14 +189,53 @@ var Policy =
 		if (!topWnd || !topWnd.location || !topWnd.location.href)
 			return true;
 
+		let originWindow = Utils.getOriginWindow(wnd);
+		let wndLocation = originWindow.location.href;
+		let docDomain = getHostname(wndLocation);
 		let match = null;
 		if (!match && Prefs.enabled)
 		{
-			match = Policy.isWindowWhitelisted(topWnd);
-			if (match)
+			let testWnd = wnd;
+			let parentWndLocation = getWindowLocation(testWnd);
+			while (true)
 			{
-				FilterStorage.increaseHitCount(match);
-				return true;
+				let testWndLocation = parentWndLocation;
+				parentWndLocation = (testWnd == testWnd.parent ? testWndLocation : getWindowLocation(testWnd.parent));
+				match = Policy.isWhitelisted(testWndLocation, parentWndLocation);
+
+				if (!(match instanceof WhitelistFilter))
+				{
+					let keydata = (testWnd.document && testWnd.document.documentElement ? testWnd.document.documentElement.getAttribute("data-adblockkey") : null);
+					if (keydata && keydata.indexOf("_") >= 0)
+					{
+						let [key, signature] = keydata.split("_", 2);
+						let keyMatch = defaultMatcher.matchesByKey(testWndLocation, key.replace(/=/g, ""), docDomain);
+						if (keyMatch && Utils.crypto)
+						{
+							// Website specifies a key that we know but is the signature valid?
+							let uri = Utils.makeURI(testWndLocation);
+							let params = [
+								uri.path.replace(/#.*/, ""),  // REQUEST_URI
+								uri.asciiHost,                // HTTP_HOST
+								Utils.httpProtocol.userAgent  // HTTP_USER_AGENT
+							];
+							if (Utils.verifySignature(key, signature, params.join("\0")))
+								match = keyMatch;
+						}
+					}
+				}
+
+				if (match instanceof WhitelistFilter)
+				{
+					FilterStorage.increaseHitCount(match);
+					RequestNotifier.addNodeData(testWnd.document, topWnd, Policy.type.DOCUMENT, getHostname(parentWndLocation), false, testWndLocation, match);
+					return true;
+				}
+
+				if (testWnd.parent == testWnd)
+					break;
+				else
+					testWnd = testWnd.parent;
 			}
 		}
 
@@ -204,18 +248,27 @@ var Policy =
 			contentType = Policy.type.OBJECT;
 
 		let locationText = location.spec;
-		let originWindow = Utils.getOriginWindow(wnd);
-		let wndLocation = originWindow.location.href;
-		let docDomain = getHostname(wndLocation);
 		if (!match && contentType == Policy.type.ELEMHIDE)
 		{
-			match = defaultMatcher.matchesAny(wndLocation, "ELEMHIDE", docDomain, false);
-			if (match && match instanceof WhitelistFilter)
+			let testWnd = wnd;
+			let parentWndLocation = getWindowLocation(testWnd);
+			while (true)
 			{
-				FilterStorage.increaseHitCount(match);
+				let testWndLocation = parentWndLocation;
+				parentWndLocation = (testWnd == testWnd.parent ? testWndLocation : getWindowLocation(testWnd.parent));
+				let parentDocDomain = getHostname(parentWndLocation);
+				match = defaultMatcher.matchesAny(testWndLocation, "ELEMHIDE", parentDocDomain, false);
+				if (match instanceof WhitelistFilter)
+				{
+					FilterStorage.increaseHitCount(match);
+					RequestNotifier.addNodeData(testWnd.document, topWnd, contentType, parentDocDomain, false, testWndLocation, match);
+					return true;
+				}
 
-				RequestNotifier.addNodeData(wnd.document, topWnd, contentType, docDomain, false, wndLocation, match);
-				return true;
+				if (testWnd.parent == testWnd)
+					break;
+				else
+					testWnd = testWnd.parent;
 			}
 
 			match = location;
@@ -266,23 +319,25 @@ var Policy =
 
 	/**
 	 * Checks whether a page is whitelisted.
-	 * @param url {String}
+	 * @param {String} url
+	 * @param {String} [parentUrl] location of the parent page
 	 * @return {Filter} filter that matched the URL or null if not whitelisted
 	 */
-	isWhitelisted: function(url)
+	isWhitelisted: function(url, parentUrl)
 	{
-		// Do not allow whitelisting about:. We get a check for about: during
-		// startup, it should be dealt with fast - without checking filters which
-		// might load patterns.ini.
-		if (/^(moz-safe-)?about:/.test(url))
+		// Do not apply exception rules to schemes on our whitelistschemes list.
+		if (!url || (/^([\w\-]+):/.test(url) && RegExp.$1 in Policy.whitelistSchemes))
 			return null;
 
+		if (!parentUrl)
+			parentUrl = url;
+
 		// Ignore fragment identifier
 		let index = url.indexOf("#");
 		if (index >= 0)
 			url = url.substring(0, index);
 
-		let result = defaultMatcher.matchesAny(url, "DOCUMENT", getHostname(url), false);
+		let result = defaultMatcher.matchesAny(url, "DOCUMENT", getHostname(parentUrl), false);
 		return (result instanceof WhitelistFilter ? result : null);
 	},
 
@@ -293,11 +348,7 @@ var Policy =
 	 */
 	isWindowWhitelisted: function(wnd)
 	{
-		let location = getWindowLocation(wnd);
-		if (!location)
-			return null;
-
-		return Policy.isWhitelisted(location);
+		return Policy.isWhitelisted(getWindowLocation(wnd));
 	},
 
 
@@ -366,7 +417,7 @@ var PolicyPrivate =
 			// We didn't block this request so we will probably see it again in
 			// http-on-modify-request. Keep it so that we can associate it with the
 			// channel there - will be needed in case of redirect.
-			PolicyPrivate.previousRequest = [node, contentType, location];
+			PolicyPrivate.previousRequest = [location, contentType];
 		}
 		return (result ? Ci.nsIContentPolicy.ACCEPT : Ci.nsIContentPolicy.REJECT_REQUEST);
 	},
@@ -379,41 +430,76 @@ var PolicyPrivate =
 	//
 	// nsIObserver interface implementation
 	//
-	observe: function(subject, topic, data)
+	observe: function(subject, topic, data, additional)
 	{
-		if (topic != "http-on-modify-request"  || !(subject instanceof Ci.nsIHttpChannel))
-			return;
-
-		if (Prefs.enabled)
+		switch (topic)
 		{
-			let match = defaultMatcher.matchesAny(subject.URI.spec, "DONOTTRACK", null, false);
-			if (match && match instanceof BlockingFilter)
+			case "content-document-global-created":
 			{
-				FilterStorage.increaseHitCount(match);
-				subject.setRequestHeader("DNT", "1", false);
+				if (!(subject instanceof Ci.nsIDOMWindow) || !subject.opener)
+					return;
 
-				// Bug 23845 - Some routers are broken and cannot handle DNT header
-				// following Connection header. Make sure Connection header is last.
-				try
+				let uri = additional || Utils.makeURI(subject.location.href);
+				if (!Policy.processNode(subject.opener, subject.opener.document, Policy.type.POPUP, uri, false))
 				{
-					let connection = subject.getRequestHeader("Connection");
-					subject.setRequestHeader("Connection", null, false);
-					subject.setRequestHeader("Connection", connection, false);
-				} catch(e) {}
+					subject.stop();
+					Utils.runAsync(subject.close, subject);
+				}
+				else if (uri.spec == "about:blank")
+				{
+					// An about:blank pop-up most likely means that a load will be
+					// initiated synchronously. Set a flag for our "http-on-modify-request"
+					// handler.
+					PolicyPrivate.expectingPopupLoad = true;
+					Utils.runAsync(function()
+					{
+						PolicyPrivate.expectingPopupLoad = false;
+					});
+				}
+				break;
 			}
-		}
+			case "http-on-modify-request":
+			{
+				if (!(subject instanceof Ci.nsIHttpChannel))
+					return;
 
-		if (PolicyPrivate.previousRequest && subject.URI == PolicyPrivate.previousRequest[2] &&
-				subject instanceof Ci.nsIWritablePropertyBag)
-		{
-			// We just handled a content policy call for this request - associate
-			// the data with the channel so that we can find it in case of a redirect.
-			subject.setProperty("abpRequestData", PolicyPrivate.previousRequest);
-			PolicyPrivate.previousRequest = null;
-
-			// Add our listener to remove the data again once the request is done
-			if (subject instanceof Ci.nsITraceableChannel)
-				new TraceableChannelCleanup(subject);
+				if (Prefs.enabled)
+				{
+					let match = defaultMatcher.matchesAny(subject.URI.spec, "DONOTTRACK", null, false);
+					if (match && match instanceof BlockingFilter)
+					{
+						FilterStorage.increaseHitCount(match);
+						subject.setRequestHeader("DNT", "1", false);
+
+						// Bug 23845 - Some routers are broken and cannot handle DNT header
+						// following Connection header. Make sure Connection header is last.
+						try
+						{
+							let connection = subject.getRequestHeader("Connection");
+							subject.setRequestHeader("Connection", null, false);
+							subject.setRequestHeader("Connection", connection, false);
+						} catch(e) {}
+					}
+				}
+
+				if (PolicyPrivate.previousRequest && subject.URI == PolicyPrivate.previousRequest[0] &&
+						subject instanceof Ci.nsIWritablePropertyBag)
+				{
+					// We just handled a content policy call for this request - associate
+					// the data with the channel so that we can find it in case of a redirect.
+					subject.setProperty("abpRequestType", PolicyPrivate.previousRequest[1]);
+					PolicyPrivate.previousRequest = null;
+				}
+
+				if (PolicyPrivate.expectingPopupLoad)
+				{
+					let wnd = Utils.getRequestWindow(subject);
+					if (wnd && wnd.opener && wnd.location.href == "about:blank")
+						PolicyPrivate.observe(wnd, "content-document-global-created", null, subject.URI);
+				}
+
+				break;
+			}
 		}
 	},
 
@@ -427,12 +513,12 @@ var PolicyPrivate =
 		try
 		{
 			// Try to retrieve previously stored request data from the channel
-			let requestData;
+			let contentType;
 			if (oldChannel instanceof Ci.nsIWritablePropertyBag)
 			{
 				try
 				{
-					requestData = oldChannel.getProperty("abpRequestData");
+					contentType = oldChannel.getProperty("abpRequestType");
 				}
 				catch(e)
 				{
@@ -449,8 +535,12 @@ var PolicyPrivate =
 			if (!newLocation)
 				return;
 
+			let wnd = Utils.getRequestWindow(newChannel);
+			if (!wnd)
+				return;
+
 			// HACK: NS_BINDING_ABORTED would be proper error code to throw but this will show up in error console (bug 287107)
-			if (!Policy.processNode(Utils.getWindow(requestData[0]), requestData[0], requestData[1], newLocation, false))
+			if (!Policy.processNode(wnd, wnd.document, contentType, newLocation, false))
 				throw Cr.NS_BASE_STREAM_WOULD_BLOCK;
 			else
 				return;
diff --git a/modules/ContentPolicyRemote.jsm b/modules/ContentPolicyRemote.jsm
index 84b86ce..230e08f 100644
--- a/modules/ContentPolicyRemote.jsm
+++ b/modules/ContentPolicyRemote.jsm
@@ -68,6 +68,7 @@ var PolicyRemote =
 			catMan.addCategoryEntry(category, PolicyRemote.classDescription, PolicyRemote.contractID, false, true);
 
 		Utils.observerService.addObserver(PolicyRemote, "http-on-modify-request", true);
+		Utils.observerService.addObserver(PolicyRemote, "content-document-global-created", true);
 
 		// Generate class identifier used to collapse node and register corresponding
 		// stylesheet.
@@ -111,16 +112,24 @@ var PolicyRemote =
 
 		wnd = Utils.getOriginWindow(wnd);
 
-		let wndLocation = wnd.location.href;
-		let topLocation = wnd.top.location.href;
-		let key = contentType + " " + contentLocation.spec + " " + wndLocation + " " + topLocation;
+		let locations = [];
+		let testWnd = wnd;
+		while (true)
+		{
+			locations.push(testWnd.location.href);
+			if (testWnd.parent == testWnd)
+				break;
+			else
+				testWnd = testWnd.parent;
+		}
+
+		let key = contentType + " " + contentLocation.spec + " " + locations.join(" ");
 		if (!(key in this.cache.data))
 		{
 			this.cache.add(key, Utils.childMessageManager.sendSyncMessage("AdblockPlus:Policy:shouldLoad", {
 							contentType: contentType,
 							contentLocation: contentLocation.spec,
-							wndLocation: wnd.location.href,
-							topLocation: wnd.top.location.href})[0]);
+							locations: locations})[0]);
 		}
 
 		let result = this.cache.data[key];
@@ -129,7 +138,7 @@ var PolicyRemote =
 			// We didn't block this request so we will probably see it again in
 			// http-on-modify-request. Keep it so that we can associate it with the
 			// channel there - will be needed in case of redirect.
-			PolicyRemote.previousRequest = [node, contentType, Utils.unwrapURL(contentLocation)];
+			PolicyRemote.previousRequest = [Utils.unwrapURL(contentLocation), contentType];
 		}
 		else if (result.postProcess)
 			Utils.schedulePostProcess(node);
@@ -144,24 +153,60 @@ var PolicyRemote =
 	//
 	// nsIObserver interface implementation
 	//
-	observe: function(subject, topic, data)
+	observe: function(subject, topic, data, additional)
 	{
-		if (topic != "http-on-modify-request"  || !(subject instanceof Ci.nsIHttpChannel))
-			return;
+		switch (topic)
+		{
+			case "content-document-global-created":
+			{
+				if (!(subject instanceof Ci.nsIDOMWindow) || !subject.opener)
+					return;
 
-		// TODO: Do-not-track header
+				let uri = additional || Utils.makeURI(subject.location.href);
+				if (PolicyRemote.shouldLoad(0xFFFE /*Policy.type.POPUP*/, uri, null, subject.opener.document, null, null) != Ci.nsIContentPolicy.ACCEPT)
+				{
+					subject.stop();
+					Utils.runAsync(subject.close, subject);
+				}
+				else if (uri.spec == "about:blank")
+				{
+					// An about:blank pop-up most likely means that a load will be
+					// initiated synchronously. Set a flag for our "http-on-modify-request"
+					// handler.
+					PolicyRemote.expectingPopupLoad = true;
+					Utils.runAsync(function()
+					{
+						PolicyRemote.expectingPopupLoad = false;
+					});
+				}
 
-		if (PolicyRemote.previousRequest && subject.URI == PolicyRemote.previousRequest[2] &&
-				subject instanceof Ci.nsIWritablePropertyBag)
-		{
-			// We just handled a content policy call for this request - associate
-			// the data with the channel so that we can find it in case of a redirect.
-			subject.setProperty("abpRequestData", PolicyRemote.previousRequest);
-			PolicyRemote.previousRequest = null;
-
-			// Add our listener to remove the data again once the request is done
-			if (subject instanceof Ci.nsITraceableChannel)
-				new TraceableChannelCleanup(subject);
+				break;
+			}
+			case "http-on-modify-request":
+			{
+				if (!(subject instanceof Ci.nsIHttpChannel))
+					return;
+
+				// TODO: Do-not-track header
+
+				if (PolicyRemote.previousRequest && subject.URI == PolicyRemote.previousRequest[0] &&
+						subject instanceof Ci.nsIWritablePropertyBag)
+				{
+					// We just handled a content policy call for this request - associate
+					// the data with the channel so that we can find it in case of a redirect.
+					subject.setProperty("abpRequestType", PolicyRemote.previousRequest[1]);
+					PolicyRemote.previousRequest = null;
+				}
+
+				if (PolicyRemote.expectingPopupLoad)
+				{
+					let wnd = Utils.getRequestWindow(subject);
+					if (wnd && wnd.opener && wnd.location.href == "about:blank")
+						PolicyRemote.observe(wnd, "content-document-global-created", null, subject.URI);
+				}
+
+				break;
+			}
 		}
 	},
 
@@ -174,12 +219,12 @@ var PolicyRemote =
 		try
 		{
 			// Try to retrieve previously stored request data from the channel
-			let requestData;
+			let contentType;
 			if (oldChannel instanceof Ci.nsIWritablePropertyBag)
 			{
 				try
 				{
-					requestData = oldChannel.getProperty("abpRequestData");
+					contentType = oldChannel.getProperty("abpRequestType");
 				}
 				catch(e)
 				{
@@ -196,8 +241,12 @@ var PolicyRemote =
 			if (!newLocation)
 				return;
 
+			let wnd = Utils.getRequestWindow(newChannel);
+			if (!wnd)
+				return;
+
 			// HACK: NS_BINDING_ABORTED would be proper error code to throw but this will show up in error console (bug 287107)
-			if (PolicyRemote.shouldLoad(requestData[1], newLocation, null, requestData[0]) != Ci.nsIContentPolicy.ACCEPT)
+			if (PolicyRemote.shouldLoad(contentType, newLocation, null, wnd.document) != Ci.nsIContentPolicy.ACCEPT)
 				throw Cr.NS_BASE_STREAM_WOULD_BLOCK;
 			else
 				return;
diff --git a/modules/ElemHide.jsm b/modules/ElemHide.jsm
index 1871931..e5fa22c 100644
--- a/modules/ElemHide.jsm
+++ b/modules/ElemHide.jsm
@@ -39,7 +39,7 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import(baseURL.spec + "Utils.jsm");
 Cu.import(baseURL.spec + "Prefs.jsm");
 Cu.import(baseURL.spec + "ContentPolicy.jsm");
-Cu.import(baseURL.spec + "FilterStorage.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
 
 
@@ -298,7 +298,7 @@ var ElemHide =
 		}
 		finally
 		{
-			FilterStorage.triggerObservers("elemhideupdate");
+			FilterNotifier.triggerListeners("elemhideupdate");
 		}
 	},
 
diff --git a/modules/ElemHideRemote.jsm b/modules/ElemHideRemote.jsm
index eaa91c1..e21d9d3 100644
--- a/modules/ElemHideRemote.jsm
+++ b/modules/ElemHideRemote.jsm
@@ -151,13 +151,25 @@ HitRegistrationChannel.prototype = {
 	{
 		let data = "<bindings xmlns='http://www.mozilla.org/xbl'><binding id='dummy'/></bindings>";
 		let wnd = Utils.getRequestWindow(this);
+
 		if (wnd)
 		{
 			wnd = Utils.getOriginWindow(wnd);
+
+			let locations = [];
+			let testWnd = wnd;
+			while (true)
+			{
+				locations.push(testWnd.location.href);
+				if (testWnd.parent == testWnd)
+					break;
+				else
+					testWnd = testWnd.parent;
+			}
+
 			let result = Utils.childMessageManager.sendSyncMessage("AdblockPlus:ElemHide:checkHit", {
 								key: this.key,
-								wndLocation: wnd.location.href,
-								topLocation: wnd.top.location.href})[0];
+								locations: locations})[0];
 			if (result)
 				data = "<bindings xmlns='http://www.mozilla.org/xbl'/>";
 		}
diff --git a/modules/FilterClasses.jsm b/modules/FilterClasses.jsm
index eb9317e..f84eb2c 100644
--- a/modules/FilterClasses.jsm
+++ b/modules/FilterClasses.jsm
@@ -36,6 +36,7 @@ const Cu = Components.utils;
 let baseURL = Cc["@adblockplus.org/abp/private;1"].getService(Ci.nsIURI);
 
 Cu.import(baseURL.spec + "Utils.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 
 /**
  * Abstract base class for filters
@@ -139,11 +140,11 @@ Filter.fromObject = function(obj)
 	if (ret instanceof ActiveFilter)
 	{
 		if ("disabled" in obj)
-			ret.disabled = (obj.disabled == "true");
+			ret._disabled = (obj.disabled == "true");
 		if ("hitCount" in obj)
-			ret.hitCount = parseInt(obj.hitCount) || 0;
+			ret._hitCount = parseInt(obj.hitCount) || 0;
 		if ("lastHit" in obj)
-			ret.lastHit = parseInt(obj.lastHit) || 0;
+			ret._lastHit = parseInt(obj.lastHit) || 0;
 	}
 	return ret;
 }
@@ -239,32 +240,67 @@ function ActiveFilter(text, domains)
 	if (domains)
 	{
 		this.domainSource = domains;
-		this.__defineGetter__("includeDomains", this._getIncludeDomains);
-		this.__defineGetter__("excludeDomains", this._getExcludeDomains);
+		this.__defineGetter__("domains", this._getDomains);
 	}
 }
 ActiveFilter.prototype =
 {
 	__proto__: Filter.prototype,
 
+	_disabled: false,
+	_hitCount: 0,
+	_lastHit: 0,
+
 	/**
 	 * Defines whether the filter is disabled
 	 * @type Boolean
 	 */
-	disabled: false,
+	get disabled() this._disabled,
+	set disabled(value)
+	{
+		if (value != this._disabled)
+		{
+			let oldValue = this._disabled;
+			this._disabled = value;
+			FilterNotifier.triggerListeners("filter.disabled", this, value, oldValue);
+		}
+		return this._disabled;
+	},
+
 	/**
 	 * Number of hits on the filter since the last reset
 	 * @type Number
 	 */
-	hitCount: 0,
+	get hitCount() this._hitCount,
+	set hitCount(value)
+	{
+		if (value != this._hitCount)
+		{
+			let oldValue = this._hitCount;
+			this._hitCount = value;
+			FilterNotifier.triggerListeners("filter.hitCount", this, value, oldValue);
+		}
+		return this._hitCount;
+	},
+
 	/**
 	 * Last time the filter had a hit (in milliseconds since the beginning of the epoch)
 	 * @type Number
 	 */
-	lastHit: 0,
+	get lastHit() this._lastHit,
+	set lastHit(value)
+	{
+		if (value != this._lastHit)
+		{
+			let oldValue = this._lastHit;
+			this._lastHit = value;
+			FilterNotifier.triggerListeners("filter.lastHit", this, value, oldValue);
+		}
+		return this._lastHit;
+	},
 
 	/**
-	 * String that the includeDomains and excludeDomains properties should be generated from
+	 * String that the domains property should be generated from
 	 * @type String
 	 */
 	domainSource: null,
@@ -276,69 +312,63 @@ ActiveFilter.prototype =
 	domainSeparator: null,
 
 	/**
-	 * Map containing domains that this filter should match on or null if the filter should match on all domains
+	 * Map containing domains that this filter should match on/not match on or null if the filter should match on all domains
 	 * @type Object
 	 */
-	includeDomains: null,
-	/**
-	 * Map containing domains that this filter should not match on or null if the filter should match on all domains
-	 * @type Object
-	 */
-	excludeDomains: null,
+	domains: null,
 
 	/**
-	 * Called first time includeDomains property is requested, triggers _generateDomains method.
-	 */
-	_getIncludeDomains: function()
-	{
-		this._generateDomains();
-		return this.includeDomains;
-	},
-	/**
-	 * Called first time excludeDomains property is requested, triggers _generateDomains method.
+	 * Called first time domains property is requested, triggers _generateDomains method.
 	 */
-	_getExcludeDomains: function()
+	_getDomains: function()
 	{
 		this._generateDomains();
-		return this.excludeDomains;
+		return this.domains;
 	},
 
 	/**
-	 * Generates includeDomains and excludeDomains properties when one of them is requested for the first time.
+	 * Generates domains property when it is requested for the first time.
 	 */
 	_generateDomains: function()
 	{
 		let domains = this.domainSource.split(this.domainSeparator);
 
 		delete this.domainSource;
-		delete this.includeDomains;
-		delete this.excludeDomains;
+		delete this.domains;
 
 		if (domains.length == 1 && domains[0][0] != "~")
 		{
 			// Fast track for the common one-domain scenario
-			this.includeDomains = {__proto__: null};
-			this.includeDomains[domains[0]] = true;
+			this.domains = {__proto__: null, "": false};
+			this.domains[domains[0]] = true;
 		}
 		else
 		{
-			for each (let domain in domains)
+			let hasIncludes = false;
+			for (let i = 0; i < domains.length; i++)
 			{
+				let domain = domains[i];
 				if (domain == "")
 					continue;
 	
-				let hash = "includeDomains";
+				let include;
 				if (domain[0] == "~")
 				{
-					hash = "excludeDomains";
+					include = false;
 					domain = domain.substr(1);
 				}
+				else
+				{
+					include = true;
+					hasIncludes = true;
+				}
 	
-				if (!this[hash])
-					this[hash] = {__proto__: null};
+				if (!this.domains)
+					this.domains = {__proto__: null};
 	
-				this[hash][domain] = true;
+				this.domains[domain] = include;
 			}
+			this.domains[""] = !hasIncludes;
 		}
 	},
 
@@ -347,28 +377,27 @@ ActiveFilter.prototype =
 	 */
 	isActiveOnDomain: function(/**String*/ docDomain) /**Boolean*/
 	{
+		// If no domains are set the rule matches everywhere
+		if (!this.domains)
+			return true;
+
 		// If the document has no host name, match only if the filter isn't restricted to specific domains
 		if (!docDomain)
-			return (!this.includeDomains);
-
-		if (!this.includeDomains && !this.excludeDomains)
-			return true;
+			return this.domains[""];
 
 		docDomain = docDomain.replace(/\.+$/, "").toUpperCase();
 
 		while (true)
 		{
-			if (this.includeDomains && docDomain in this.includeDomains)
-				return true;
-			if (this.excludeDomains && docDomain in this.excludeDomains)
-				return false;
+			if (docDomain in this.domains)
+				return this.domains[docDomain];
 
 			let nextDot = docDomain.indexOf(".");
 			if (nextDot < 0)
 				break;
 			docDomain = docDomain.substr(nextDot + 1);
 		}
-		return (this.includeDomains == null);
+		return this.domains[""];
 	},
 
 	/**
@@ -376,13 +405,13 @@ ActiveFilter.prototype =
 	 */
 	isActiveOnlyOnDomain: function(/**String*/ docDomain) /**Boolean*/
 	{
-		if (!docDomain || !this.includeDomains)
+		if (!docDomain || !this.domains || this.domains[""])
 			return false;
 
 		docDomain = docDomain.replace(/\.+$/, "").toUpperCase();
 
-		for (let domain in this.includeDomains)
-			if (domain != docDomain && (domain.length <= docDomain.length || domain.indexOf("." + docDomain) != domain.length - docDomain.length - 1))
+		for (let domain in this.domains)
+			if (this.domains[domain] && domain != docDomain && (domain.length <= docDomain.length || domain.indexOf("." + docDomain) != domain.length - docDomain.length - 1))
 				return false;
 
 		return true;
@@ -393,15 +422,15 @@ ActiveFilter.prototype =
 	 */
 	serialize: function(buffer)
 	{
-		if (this.disabled || this.hitCount || this.lastHit)
+		if (this._disabled || this._hitCount || this._lastHit)
 		{
 			Filter.prototype.serialize.call(this, buffer);
-			if (this.disabled)
+			if (this._disabled)
 				buffer.push("disabled=true");
-			if (this.hitCount)
-				buffer.push("hitCount=" + this.hitCount);
-			if (this.lastHit)
-				buffer.push("lastHit=" + this.lastHit);
+			if (this._hitCount)
+				buffer.push("hitCount=" + this._hitCount);
+			if (this._lastHit)
+				buffer.push("lastHit=" + this._lastHit);
 		}
 	}
 };
@@ -428,7 +457,7 @@ function RegExpFilter(text, regexpSource, contentType, matchCase, domains, third
 	if (thirdParty != null)
 		this.thirdParty = thirdParty;
 
-	if (regexpSource[0] == "/" && regexpSource[regexpSource.length - 1] == "/")
+	if (regexpSource.length >= 2 && regexpSource[0] == "/" && regexpSource[regexpSource.length - 1] == "/")
 	{
 		// The filter is a regular expression - convert it immediately to catch syntax errors
 		this.regexp = new RegExp(regexpSource.substr(1, regexpSource.length - 2), this.matchCase ? "" : "i");
@@ -537,17 +566,18 @@ RegExpFilter.prototype =
  */
 RegExpFilter.fromText = function(text)
 {
-	let constructor = BlockingFilter;
+	let blocking = true;
 	let origText = text;
 	if (text.indexOf("@@") == 0)
 	{
-		constructor = WhitelistFilter;
+		blocking = false;
 		text = text.substr(2);
 	}
 
 	let contentType = null;
 	let matchCase = null;
 	let domains = null;
+	let siteKeys = null;
 	let thirdParty = null;
 	let collapse = null;
 	let options;
@@ -557,8 +587,13 @@ RegExpFilter.fromText = function(text)
 		text = RegExp.leftContext;
 		for each (let option in options)
 		{
-			let value;
-			[option, value] = option.split("=", 2);
+			let value = null;
+			let separatorIndex = option.indexOf("=");
+			if (separatorIndex >= 0)
+			{
+				value = option.substr(separatorIndex + 1);
+				option = option.substr(0, separatorIndex);
+			}
 			option = option.replace(/-/, "_");
 			if (option in RegExpFilter.typeMap)
 			{
@@ -584,10 +619,12 @@ RegExpFilter.fromText = function(text)
 				collapse = true;
 			else if (option == "~COLLAPSE")
 				collapse = false;
+			else if (option == "SITEKEY" && typeof value != "undefined")
+				siteKeys = value.split(/\|/);
 		}
 	}
 
-	if (constructor == WhitelistFilter && (contentType == null || (contentType & RegExpFilter.typeMap.DOCUMENT)) &&
+	if (!blocking && (contentType == null || (contentType & RegExpFilter.typeMap.DOCUMENT)) &&
 			(!options || options.indexOf("DOCUMENT") < 0) && !/^\|?[\w\-]+:/.test(text))
 	{
 		// Exception filters shouldn't apply to pages by default unless they start with a protocol name
@@ -595,10 +632,15 @@ RegExpFilter.fromText = function(text)
 			contentType = RegExpFilter.prototype.contentType;
 		contentType &= ~RegExpFilter.typeMap.DOCUMENT;
 	}
+	if (!blocking && siteKeys)
+		contentType = RegExpFilter.typeMap.DOCUMENT;
 
 	try
 	{
-		return new constructor(origText, text, contentType, matchCase, domains, thirdParty, collapse);
+		if (blocking)
+			return new BlockingFilter(origText, text, contentType, matchCase, domains, thirdParty, collapse);
+		else
+			return new WhitelistFilter(origText, text, contentType, matchCase, domains, thirdParty, siteKeys);
 	}
 	catch (e)
 	{
@@ -617,22 +659,23 @@ RegExpFilter.typeMap = {
 	OBJECT: 16,
 	SUBDOCUMENT: 32,
 	DOCUMENT: 64,
-	XBL: 512,
-	PING: 1024,
+	XBL: 1,
+	PING: 1,
 	XMLHTTPREQUEST: 2048,
 	OBJECT_SUBREQUEST: 4096,
-	DTD: 8192,
+	DTD: 1,
 	MEDIA: 16384,
 	FONT: 32768,
 
 	BACKGROUND: 4,    // Backwards compat, same as IMAGE
 
+	POPUP: 0x10000000,
 	DONOTTRACK: 0x20000000,
 	ELEMHIDE: 0x40000000
 };
 
-// ELEMHIDE and DONOTTRACK option shouldn't be there by default
-RegExpFilter.prototype.contentType &= ~(RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.DONOTTRACK);
+// ELEMHIDE, DONOTTRACK, POPUP option shouldn't be there by default
+RegExpFilter.prototype.contentType &= ~(RegExpFilter.typeMap.ELEMHIDE | RegExpFilter.typeMap.DONOTTRACK | RegExpFilter.typeMap.POPUP);
 
 /**
  * Class for blocking filters
@@ -671,16 +714,26 @@ BlockingFilter.prototype =
  * @param {Boolean} matchCase see RegExpFilter()
  * @param {String} domains see RegExpFilter()
  * @param {Boolean} thirdParty see RegExpFilter()
+ * @param {String[]} siteKeys public keys of websites that this filter should apply to
  * @constructor
  * @augments RegExpFilter
  */
-function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty)
+function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, thirdParty, siteKeys)
 {
 	RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, thirdParty);
+
+	if (siteKeys != null)
+		this.siteKeys = siteKeys;
 }
 WhitelistFilter.prototype =
 {
-	__proto__: RegExpFilter.prototype
+	__proto__: RegExpFilter.prototype,
+
+	/**
+	 * List of public keys of websites that this filter should apply to
+	 * @type String[]
+	 */
+	siteKeys: null
 }
 
 /**
diff --git a/modules/FilterListener.jsm b/modules/FilterListener.jsm
index 683398f..f67d634 100644
--- a/modules/FilterListener.jsm
+++ b/modules/FilterListener.jsm
@@ -37,6 +37,7 @@ let baseURL = Cc["@adblockplus.org/abp/private;1"].getService(Ci.nsIURI);
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 Cu.import(baseURL.spec + "FilterStorage.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 Cu.import(baseURL.spec + "ElemHide.jsm");
 Cu.import(baseURL.spec + "Matcher.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
@@ -44,12 +45,10 @@ Cu.import(baseURL.spec + "SubscriptionClasses.jsm");
 Cu.import(baseURL.spec + "Prefs.jsm");
 Cu.import(baseURL.spec + "Utils.jsm");
 
-let subscriptionFilter = null;
-
 /**
  * Version of the data cache file, files with different version will be ignored.
  */
-const cacheVersion = 1;
+const cacheVersion = 2;
 
 /**
  * Value of the FilterListener.batchMode property.
@@ -58,10 +57,10 @@ const cacheVersion = 1;
 let batchMode = false;
 
 /**
- * Will be true if filters changed after saving data last time.
- * @type Boolean
+ * Increases on filter changes, filters will be saved if it exceeds 1.
+ * @type Integer
  */
-let isDirty = false;
+let isDirty = 0;
 
 /**
  * This object can be used to change properties of the filter change listeners.
@@ -76,14 +75,14 @@ var FilterListener =
 	{
 
 
-		FilterStorage.addObserver(function(action, items)
+		FilterNotifier.addListener(function(action, item, newValue, oldValue)
 		{
-			if (/^filters (.*)/.test(action))
-				onFilterChange(RegExp.$1, items);
-			else if (/^subscriptions (.*)/.test(action))
-				onSubscriptionChange(RegExp.$1, items);
+			if (/^filter\.(.*)/.test(action))
+				onFilterChange(RegExp.$1, item, newValue, oldValue);
+			else if (/^subscription\.(.*)/.test(action))
+				onSubscriptionChange(RegExp.$1, item, newValue, oldValue);
 			else
-				onGenericChange(action, items);
+				onGenericChange(action, item);
 		});
 
 		ElemHide.init();
@@ -124,7 +123,7 @@ var FilterListener =
 							{
 
 								loadDone = true;
-								FilterStorage.loadFromDisk(true);
+								FilterStorage.loadFromDisk(null, true);
 
 							}
 							return obj[prop];
@@ -177,7 +176,7 @@ var FilterListener =
 	shutdown: function()
 	{
 
-		if (isDirty)
+		if (isDirty > 0)
 			FilterStorage.saveToDisk();
 
 	},
@@ -194,6 +193,25 @@ var FilterListener =
 	{
 		batchMode = value;
 		flushElemHide();
+	},
+
+	/**
+	 * Increases "dirty factor" of the filters and calls FilterStorage.saveToDisk()
+	 * if it becomes 1 or more. Save is executed delayed to prevent multiple
+	 * subsequent calls. If the parameter is 0 it forces saving filters if any
+	 * changes were recorded after the previous save.
+	 */
+	setDirty: function(/**Integer*/ factor)
+	{
+		if (factor == 0 && isDirty > 0)
+			isDirty = 1;
+		else
+			isDirty += factor;
+		if (isDirty >= 1 && !filtersFlushScheduled)
+		{
+			Utils.runAsync(flushFiltersInternal);
+			filtersFlushScheduled = true;
+		}
 	}
 };
 
@@ -208,7 +226,7 @@ var FilterListenerPrivate =
 		if (topic == "browser:purge-session-history" && Prefs.clearStatsOnHistoryPurge)
 		{
 			FilterStorage.resetHitCounts();
-			FilterStorage.saveToDisk();
+			FilterListener.setDirty(0); // Force saving to disk
 
 			Prefs.recentReports = "[]";
 		}
@@ -216,15 +234,36 @@ var FilterListenerPrivate =
 	QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
 };
 
+let elemhideFlushScheduled = false;
+
 /**
- * Calls ElemHide.apply() if necessary
+ * Calls ElemHide.apply() if necessary. Executes delayed to prevent multiple
+ * subsequent calls.
  */
 function flushElemHide()
 {
+	if (elemhideFlushScheduled)
+		return;
+
+	Utils.runAsync(flushElemHideInternal);
+	elemhideFlushScheduled = true;
+}
+
+function flushElemHideInternal()
+{
+	elemhideFlushScheduled = false;
 	if (!batchMode && ElemHide.isDirty)
 		ElemHide.apply();
 }
 
+let filtersFlushScheduled = false;
+
+function flushFiltersInternal()
+{
+	filtersFlushScheduled = false;
+	FilterStorage.saveToDisk();
+}
+
 /**
  * Notifies Matcher instances or ElemHide object about a new filter
  * if necessary.
@@ -232,7 +271,14 @@ function flushElemHide()
  */
 function addFilter(filter)
 {
-	if (!(filter instanceof ActiveFilter) || filter.disabled || (subscriptionFilter && filter.subscriptions.some(subscriptionFilter)))
+	if (!(filter instanceof ActiveFilter) || filter.disabled)
+		return;
+
+	let hasEnabled = false;
+	for (let i = 0; i < filter.subscriptions.length; i++)
+		if (!filter.subscriptions[i].disabled)
+			hasEnabled = true;
+	if (!hasEnabled)
 		return;
 
 	if (filter instanceof RegExpFilter)
@@ -248,9 +294,19 @@ function addFilter(filter)
  */
 function removeFilter(filter)
 {
-	if (!(filter instanceof ActiveFilter) || (subscriptionFilter && filter.subscriptions.some(subscriptionFilter)))
+	if (!(filter instanceof ActiveFilter))
 		return;
 
+	if (!filter.disabled)
+	{
+		let hasEnabled = false;
+		for (let i = 0; i < filter.subscriptions.length; i++)
+			if (!filter.subscriptions[i].disabled)
+				hasEnabled = true;
+		if (hasEnabled)
+			return;
+	}
+
 	if (filter instanceof RegExpFilter)
 		defaultMatcher.remove(filter);
 	else if (filter instanceof ElemHideFilter)
@@ -260,54 +316,38 @@ function removeFilter(filter)
 /**
  * Subscription change listener
  */
-function onSubscriptionChange(action, subscriptions)
+function onSubscriptionChange(action, subscription, newValue, oldValue)
 {
-	isDirty = true;
+	if (action == "homepage" || action == "downloadStatus" || action == "lastDownload")
+		FilterListener.setDirty(0.2);
+	else
+		FilterListener.setDirty(1);
 
-	if (action != "remove")
+	if (action != "added" && action != "removed" && action != "disabled" && action != "updated")
+		return;
+
+	if (action != "removed" && !(subscription.url in FilterStorage.knownSubscriptions))
 	{
-		subscriptions = subscriptions.filter(function(subscription)
-		{
-			// Ignore updates for subscriptions not in the list
-			return subscription.url in FilterStorage.knownSubscriptions;
-		});
-	}
-	if (!subscriptions.length)
+		// Ignore updates for subscriptions not in the list
 		return;
+	}
 
-	if (action == "add" || action == "enable" ||
-			action == "remove" || action == "disable" ||
-			action == "update")
+	if ((action == "added" || action == "removed" || action == "updated") && subscription.disabled)
 	{
-		let subscriptionMap = {__proto__: null};
-		for each (let subscription in subscriptions)
-			subscriptionMap[subscription.url] = true;
-		subscriptionFilter = function(subscription)
-		{
-			return !(subscription.url in subscriptionMap) && !subscription.disabled;
-		}
+		// Ignore adding/removing/updating of disabled subscriptions
+		return;
 	}
-	else
-		subscriptionFilter = null;
 
-	if (action == "add" || action == "enable" ||
-			action == "remove" || action == "disable")
+	if (action == "added" || action == "removed" || action == "disabled")
 	{
-		let method = (action == "add" || action == "enable" ? addFilter : removeFilter);
-		for each (let subscription in subscriptions)
-			if (subscription.filters && (action == "disable" || !subscription.disabled))
-				subscription.filters.forEach(method);
+		let method = (action == "added" || (action == "disabled" && newValue == false) ? addFilter : removeFilter);
+		if (subscription.filters)
+			subscription.filters.forEach(method);
 	}
-	else if (action == "update")
+	else if (action == "updated")
 	{
-		for each (let subscription in subscriptions)
-		{
-			if (!subscription.disabled)
-			{
-				subscription.oldFilters.forEach(removeFilter);
-				subscription.filters.forEach(addFilter);
-			}
-		}
+		subscription.oldFilters.forEach(removeFilter);
+		subscription.filters.forEach(addFilter);
 	}
 
 	flushElemHide();
@@ -316,25 +356,29 @@ function onSubscriptionChange(action, subscriptions)
 /**
  * Filter change listener
  */
-function onFilterChange(action, filters)
+function onFilterChange(action, filter, newValue, oldValue)
 {
-	isDirty = true;
+	if (action == "hitCount" || action == "lastHit")
+		FilterListener.setDirty(0.0001);
+	else if (action == "disabled" || action == "moved")
+		FilterListener.setDirty(0.2);
+	else
+		FilterListener.setDirty(1);
 
-	if (action == "add" || action == "enable" ||
-			action == "remove" || action == "disable")
-	{
-		subscriptionFilter = null;
+	if (action != "added" && action != "removed" && action != "disabled")
+		return;
 
-		let method = (action == "add" || action == "enable" ? addFilter : removeFilter);
-		filters = filters.filter(function(filter)
-		{
-			// For "remove" only consider filters that don't have any enabled
-			// subscriptions, for other actions the filter that have them.
-			return ((action != "remove") == filter.subscriptions.some(function(subscription) !subscription.disabled));
-		});
-		filters.forEach(method);
-		flushElemHide();
+	if ((action == "added" || action == "removed") && filter.disabled)
+	{
+		// Ignore adding/removing of disabled filters
+		return;
 	}
+
+	if (action == "added" || (action == "disabled" && newValue == false))
+		addFilter(filter);
+	else
+		removeFilter(filter);
+	flushElemHide();
 }
 
 /**
@@ -344,7 +388,7 @@ function onGenericChange(action)
 {
 	if (action == "load")
 	{
-		isDirty = false;
+		isDirty = 0;
 
 		defaultMatcher.clear();
 		ElemHide.clear();
@@ -355,7 +399,7 @@ function onGenericChange(action)
 	}
 	else if (action == "save")
 	{
-		isDirty = false;
+		isDirty = 0;
 
 		let cache = {version: cacheVersion, patternsTimestamp: FilterStorage.sourceFile.clone().lastModifiedTime};
 		defaultMatcher.toCache(cache);
diff --git a/modules/FilterNotifier.jsm b/modules/FilterNotifier.jsm
new file mode 100644
index 0000000..e9ec421
--- /dev/null
+++ b/modules/FilterNotifier.jsm
@@ -0,0 +1,86 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Adblock Plus.
+ *
+ * The Initial Developer of the Original Code is
+ * Wladimir Palant.
+ * Portions created by the Initial Developer are Copyright (C) 2006-2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * @fileOverview FilterNotifier class manages listeners and distributes messages
+ * about filter changes to them.
+ */
+
+var EXPORTED_SYMBOLS = ["FilterNotifier"];
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+/**
+ * List of registered listeners
+ * @type Array of function(action, item, newValue, oldValue)
+ */
+let listeners = [];
+
+/**
+ * This class allows registering and triggering listeners for filter events.
+ * @class
+ */
+var FilterNotifier =
+{
+	/**
+	 * Adds a listener
+	 */
+	addListener: function(/**function(action, item, newValue, oldValue)*/ listener)
+	{
+		if (listeners.indexOf(listener) >= 0)
+			return;
+
+		listeners.push(listener);
+	},
+
+	/**
+	 * Removes a listener that was previosly added via addListener
+	 */
+	removeListener: function(/**function(action, item, newValue, oldValue)*/ listener)
+	{
+		let index = listeners.indexOf(listener);
+		if (index >= 0)
+			listeners.splice(index, 1);
+	},
+
+	/**
+	 * Notifies listeners about an event
+	 * @param {String} action event code ("load", "save", "elemhideupdate",
+	 *                 "subscription.added", "subscription.removed",
+	 *                 "subscription.disabled", "subscription.title",
+	 *                 "subscription.lastDownload", "subscription.downloadStatus",
+	 *                 "subscription.homepage", "subscription.updated",
+	 *                 "filter.added", "filter.removed", "filter.moved",
+	 *                 "filter.disabled", "filter.hitCount", "filter.lastHit")
+	 * @param {Subscription|Filter} item item that the change applies to
+	 */
+	triggerListeners: function(action, item, param1, param2, param3)
+	{
+		for each (let listener in listeners)
+			listener(action, item, param1, param2, param3);
+	}
+};
diff --git a/modules/FilterStorage.jsm b/modules/FilterStorage.jsm
index 0ac7c2b..73259f3 100644
--- a/modules/FilterStorage.jsm
+++ b/modules/FilterStorage.jsm
@@ -39,19 +39,14 @@ Cu.import(baseURL.spec + "Utils.jsm");
 Cu.import(baseURL.spec + "Prefs.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
 Cu.import(baseURL.spec + "SubscriptionClasses.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 
 
 /**
  * Version number of the filter storage file format.
  * @type Integer
  */
-const formatVersion = 3;
-
-/**
- * List of observers for filter and subscription changes (addition, deletion)
- * @type Array of function(String, Array)
- */
-let observers = [];
+const formatVersion = 4;
 
 /**
  * This class reads user's filters from disk, manages them in memory and writes them back.
@@ -60,6 +55,12 @@ let observers = [];
 var FilterStorage =
 {
 	/**
+	 * Version number of the patterns.ini format used.
+	 * @type Integer
+	 */
+	get formatVersion() formatVersion,
+
+	/**
 	 * File that the filter list has been loaded from and should be saved to
 	 * @type nsIFile
 	 */
@@ -115,49 +116,32 @@ var FilterStorage =
 	knownSubscriptions: {__proto__: null},
 
 	/**
-	 * Adds an observer for filter and subscription changes (addition, deletion)
-	 * @param {function(String, Array)} observer
+	 * Finds the filter group that a filter should be added to by default. Will
+	 * return null if this group doesn't exist yet.
 	 */
-	addObserver: function(observer)
+	getGroupForFilter: function(/**Filter*/ filter) /**SpecialSubscription*/
 	{
-		if (observers.indexOf(observer) >= 0)
-			return;
-
-		observers.push(observer);
-	},
-
-	/**
-	 * Removes an observer previosly added with addObserver
-	 * @param {function(String, Array)} observer
-	 */
-	removeObserver: function(observer)
-	{
-		let index = observers.indexOf(observer);
-		if (index >= 0)
-			observers.splice(index, 1);
-	},
+		let generalSubscription = null;
+		for each (let subscription in FilterStorage.subscriptions)
+		{
+			if (subscription instanceof SpecialSubscription)
+			{
+				// Always prefer specialized subscriptions
+				if (subscription.isDefaultFor(filter))
+					return subscription;
 
-	/**
-	 * Calls observers after a change
-	 * @param {String} action change code ("load", "save", "elemhideupdate",
-	 *                 "subscriptions add", "subscriptions remove",
-	 *                 "subscriptions enable", "subscriptions disable",
-	 *                 "subscriptions update", "subscriptions updateinfo",
-	 *                 "filters add", "filters remove", "enable",
-	 *                 "filters disable", "filters hit")
-	 * @param {Array} items items that the change applies to
-	 * @param additionalData optional additional data, depends on change code
-	 */
-	triggerObservers: function(action, items, additionalData)
-	{
-		for each (let observer in observers)
-			observer(action, items, additionalData);
+				// If this is a general subscription - store it as fallback
+				if (!generalSubscription && (!subscription.defaults || !subscription.defaults.length))
+					generalSubscription = subscription;
+			}
+		}
+		return generalSubscription;
 	},
 
 	/**
 	 * Adds a filter subscription to the list
 	 * @param {Subscription} subscription filter subscription to be added
-	 * @param {Boolean} silent  if true, no observers will be triggered (to be used when filter list is reloaded)
+	 * @param {Boolean} silent  if true, no listeners will be triggered (to be used when filter list is reloaded)
 	 */
 	addSubscription: function(subscription, silent)
 	{
@@ -169,13 +153,13 @@ var FilterStorage =
 		addSubscriptionFilters(subscription);
 
 		if (!silent)
-			FilterStorage.triggerObservers("subscriptions add", [subscription]);
+			FilterNotifier.triggerListeners("subscription.added", subscription);
 	},
 
 	/**
 	 * Removes a filter subscription from the list
 	 * @param {Subscription} subscription filter subscription to be removed
-	 * @param {Boolean} silent  if true, no observers will be triggered (to be used when filter list is reloaded)
+	 * @param {Boolean} silent  if true, no listeners will be triggered (to be used when filter list is reloaded)
 	 */
 	removeSubscription: function(subscription, silent)
 	{
@@ -188,13 +172,39 @@ var FilterStorage =
 				FilterStorage.subscriptions.splice(i--, 1);
 				delete FilterStorage.knownSubscriptions[subscription.url];
 				if (!silent)
-					FilterStorage.triggerObservers("subscriptions remove", [subscription]);
+					FilterNotifier.triggerListeners("subscription.removed", subscription);
 				return;
 			}
 		}
 	},
 
 	/**
+	 * Moves a subscription in the list to a new position.
+	 * @param {Subscription} subscription filter subscription to be moved
+	 * @param {Subscription} [insertBefore] filter subscription to insert before
+	 *        (if omitted the subscription will be put at the end of the list)
+	 */
+	moveSubscription: function(subscription, insertBefore)
+	{
+		let currentPos = FilterStorage.subscriptions.indexOf(subscription);
+		if (currentPos < 0)
+			return;
+
+		let newPos = insertBefore ? FilterStorage.subscriptions.indexOf(insertBefore) : -1;
+		if (newPos < 0)
+			newPos = FilterStorage.subscriptions.length;
+
+		if (currentPos < newPos)
+			newPos--;
+		if (currentPos == newPos)
+			return;
+
+		FilterStorage.subscriptions.splice(currentPos, 1);
+		FilterStorage.subscriptions.splice(newPos, 0, subscription);
+		FilterNotifier.triggerListeners("subscription.moved", subscription);
+	},
+
+	/**
 	 * Replaces the list of filters in a subscription by a new list
 	 * @param {Subscription} subscription filter subscription to be updated
 	 * @param {Array of Filter} filters new filter lsit
@@ -205,86 +215,90 @@ var FilterStorage =
 		subscription.oldFilters = subscription.filters;
 		subscription.filters = filters;
 		addSubscriptionFilters(subscription);
-		FilterStorage.triggerObservers("subscriptions update", [subscription]);
+		FilterNotifier.triggerListeners("subscription.updated", subscription);
 		delete subscription.oldFilters;
 
 		// Do not keep empty subscriptions disabled
 		if (subscription instanceof SpecialSubscription && !subscription.filters.length && subscription.disabled)
-		{
 			subscription.disabled = false;
-			FilterStorage.triggerObservers("subscriptions enable", [subscription]);
-		}
 	},
 
 	/**
 	 * Adds a user-defined filter to the list
 	 * @param {Filter} filter
-	 * @param {Filter} insertBefore   filter to insert before (if possible)
-	 * @param {Boolean} silent  if true, no observers will be triggered (to be used when filter list is reloaded)
+	 * @param {SpecialSubscription} [subscription] particular group that the filter should be added to
+	 * @param {Integer} [position] position within the subscription at which the filter should be added
+	 * @param {Boolean} silent  if true, no listeners will be triggered (to be used when filter list is reloaded)
 	 */
-	addFilter: function(filter, insertBefore, silent)
+	addFilter: function(filter, subscription, position, silent)
 	{
-		let subscription = null;
 		if (!subscription)
 		{
-			for each (let s in FilterStorage.subscriptions)
-			{
-				if (s instanceof SpecialSubscription && s.isFilterAllowed(filter))
-				{
-					if (s.filters.indexOf(filter) >= 0)
-						return;
-
-					if (!subscription || s.priority > subscription.priority)
-						subscription = s;
-				}
-			}
+			if (filter.subscriptions.some(function(s) s instanceof SpecialSubscription))
+				return;   // No need to add
+			subscription = FilterStorage.getGroupForFilter(filter);
 		}
-
 		if (!subscription)
+		{
+			// No group for this filter exists, create one
+			subscription = SpecialSubscription.createForFilter(filter);
+			this.addSubscription(subscription);
 			return;
+		}
 
-		let insertIndex = -1;
-		if (insertBefore)
-			insertIndex = subscription.filters.indexOf(insertBefore);
+		if (typeof position == "undefined")
+			position = subscription.filters.length;
 
-		filter.subscriptions.push(subscription);
-		if (insertIndex >= 0)
-			subscription.filters.splice(insertIndex, 0, filter);
-		else
-			subscription.filters.push(filter);
+		if (filter.subscriptions.indexOf(subscription) < 0)
+			filter.subscriptions.push(subscription);
+		subscription.filters.splice(position, 0, filter);
 		if (!silent)
-			FilterStorage.triggerObservers("filters add", [filter], insertBefore);
+			FilterNotifier.triggerListeners("filter.added", filter, subscription, position);
 	},
 
 	/**
 	 * Removes a user-defined filter from the list
 	 * @param {Filter} filter
-	 * @param {Boolean} silent  if true, no observers will be triggered (to be used when filter list is reloaded)
+	 * @param {SpecialSubscription} [subscription] a particular filter group that
+	 *      the filter should be removed from (if ommited will be removed from all subscriptions)
+	 * @param {Integer} [position]  position inside the filter group at which the
+	 *      filter should be removed (if ommited all instances will be removed)
 	 */
-	removeFilter: function(filter, silent)
+	removeFilter: function(filter, subscription, position)
 	{
-		for (let i = 0; i < filter.subscriptions.length; i++)
+		let subscriptions = (subscription ? [subscription] : filter.subscriptions.slice());
+		for (let i = 0; i < subscriptions.length; i++)
 		{
-			let subscription = filter.subscriptions[i];
+			let subscription = subscriptions[i];
 			if (subscription instanceof SpecialSubscription)
 			{
-				for (let j = 0; j < subscription.filters.length; j++)
+				let positions = [];
+				if (typeof position == "undefined")
 				{
-					if (subscription.filters[j].text == filter.text)
+					let index = -1;
+					do
 					{
-						filter.subscriptions.splice(i, 1);
-						subscription.filters.splice(j, 1);
-						if (!silent)
-							FilterStorage.triggerObservers("filters remove", [filter]);
+						index = subscription.filters.indexOf(filter, index + 1);
+						if (index >= 0)
+							positions.push(index);
+					} while (index >= 0);
+				}
+				else
+					positions.push(position);
 
-						// Do not keep empty subscriptions disabled
-						if (!subscription.filters.length && subscription.disabled)
+				for (let j = positions.length - 1; j >= 0; j--)
+				{
+					let position = positions[j];
+					if (subscription.filters[position] == filter)
+					{
+						subscription.filters.splice(position, 1);
+						if (subscription.filters.indexOf(filter) < 0)
 						{
-							subscription.disabled = false;
-							if (!silent)
-								FilterStorage.triggerObservers("subscriptions enable", [subscription]);
+							let index = filter.subscriptions.indexOf(subscription);
+							if (index >= 0)
+								filter.subscriptions.splice(index, 1);
 						}
-						return;
+						FilterNotifier.triggerListeners("filter.removed", filter, subscription, position);
 					}
 				}
 			}
@@ -292,6 +306,27 @@ var FilterStorage =
 	},
 
 	/**
+	 * Moves a user-defined filter to a new position
+	 * @param {Filter} filter
+	 * @param {SpecialSubscription} subscription filter group where the filter is located
+	 * @param {Integer} oldPosition current position of the filter
+	 * @param {Integer} newPosition new position of the filter
+	 */
+	moveFilter: function(filter, subscription, oldPosition, newPosition)
+	{
+		if (!(subscription instanceof SpecialSubscription) || subscription.filters[oldPosition] != filter)
+			return;
+
+		newPosition = Math.min(Math.max(newPosition, 0), subscription.filters.length - 1);
+		if (oldPosition == newPosition)
+			return;
+
+		subscription.filters.splice(oldPosition, 1);
+		subscription.filters.splice(newPosition, 0, filter);
+		FilterNotifier.triggerListeners("filter.moved", filter, subscription, oldPosition, newPosition);
+	},
+
+	/**
 	 * Increases the hit count for a filter by one
 	 * @param {Filter} filter
 	 */
@@ -302,7 +337,6 @@ var FilterStorage =
 
 		filter.hitCount++;
 		filter.lastHit = Date.now();
-		FilterStorage.triggerObservers("filters hit", [filter]);
 	},
 
 	/**
@@ -322,25 +356,37 @@ var FilterStorage =
 			filter.hitCount = 0;
 			filter.lastHit = 0;
 		}
-		FilterStorage.triggerObservers("filters hit", filters);
 	},
 
 	/**
 	 * Loads all subscriptions from the disk
-	 * @param {Boolean} silent  if true, no observers will be triggered (to be used when data is already initialized)
+	 * @param {nsIFile} [sourceFile] File to read from
+	 * @param {Boolean} silent  if true, no listeners will be triggered (to be used when data is already initialized)
 	 */
-	loadFromDisk: function(silent)
+	loadFromDisk: function(sourceFile, silent)
 	{
 
 
-		let realSourceFile = FilterStorage.sourceFile;
-		if (!realSourceFile || !realSourceFile.exists())
+		if (!silent)
 		{
-			// patterns.ini doesn't exist - but maybe we have a default one?
-			let patternsURL = Utils.ioService.newURI("chrome://adblockplus-defaults/content/patterns.ini", null, null);
-			patternsURL = Utils.chromeRegistry.convertChromeURL(patternsURL);
-			if (patternsURL instanceof Ci.nsIFileURL)
-				realSourceFile = patternsURL.file;
+			Filter.knownFilters = {__proto__: null};
+			Subscription.knownSubscriptions = {__proto__: null};
+		}
+
+		let explicitFile = true;
+		if (!sourceFile)
+		{
+			sourceFile = FilterStorage.sourceFile;
+			explicitFile = false;
+
+			if (!sourceFile || !sourceFile.exists())
+			{
+				// patterns.ini doesn't exist - but maybe we have a default one?
+				let patternsURL = Utils.ioService.newURI("chrome://adblockplus-defaults/content/patterns.ini", null, null);
+				patternsURL = Utils.chromeRegistry.convertChromeURL(patternsURL);
+				if (patternsURL instanceof Ci.nsIFileURL)
+					sourceFile = patternsURL.file;
+			}
 		}
 
 		let userFilters = null;
@@ -352,10 +398,10 @@ var FilterStorage =
 
 			try
 			{
-				if (realSourceFile && realSourceFile.exists())
+				if (sourceFile && sourceFile.exists())
 				{
 					let fileStream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream);
-					fileStream.init(realSourceFile, 0x01, 0444, 0);
+					fileStream.init(sourceFile, 0x01, 0444, 0);
 
 					let stream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
 					stream.init(fileStream, "UTF-8", 16384, 0);
@@ -377,37 +423,40 @@ var FilterStorage =
 			}
 			catch (e)
 			{
-				Cu.reportError("Adblock Plus: Failed to read filters from file " + realSourceFile.path);
+				Cu.reportError("Adblock Plus: Failed to read filters from file " + sourceFile.path);
 				Cu.reportError(e);
 			}
 
+			if (explicitFile)
+				break;
+
 			// We failed loading filters, let's try next backup file
-			realSourceFile = FilterStorage.sourceFile;
-			if (realSourceFile)
-			{
-				let part1 = realSourceFile.leafName;
-				let part2 = "";
-				if (/^(.*)(\.\w+)$/.test(part1))
-				{
-					part1 = RegExp.$1;
-					part2 = RegExp.$2;
-				}
+			sourceFile = FilterStorage.sourceFile;
+			if (!sourceFile)
+				break;
 
-				realSourceFile = realSourceFile.clone();
-				realSourceFile.leafName = part1 + "-backup" + (++backup) + part2;
+			let part1 = sourceFile.leafName;
+			let part2 = "";
+			if (/^(.*)(\.\w+)$/.test(part1))
+			{
+				part1 = RegExp.$1;
+				part2 = RegExp.$2;
 			}
+
+			sourceFile = sourceFile.clone();
+			sourceFile.leafName = part1 + "-backup" + (++backup) + part2;
 		}
 
 
 
-		// Add missing special subscriptions if necessary
+		// Old special groups might have been converted, remove them if they are empty
 		for each (let specialSubscription in ["~il~", "~wl~", "~fl~", "~eh~"])
 		{
-			if (!(specialSubscription in FilterStorage.knownSubscriptions))
+			if (specialSubscription in FilterStorage.knownSubscriptions)
 			{
 				let subscription = Subscription.fromURL(specialSubscription);
-				if (subscription)
-					FilterStorage.addSubscription(subscription, true);
+				if (subscription.filters.length == 0)
+					FilterStorage.removeSubscription(subscription, true);
 			}
 		}
 
@@ -417,36 +466,43 @@ var FilterStorage =
 			{
 				filter = Filter.fromText(filter);
 				if (filter)
-					FilterStorage.addFilter(filter, null, true);
+					FilterStorage.addFilter(filter, null, undefined, true);
 			}
 		}
 
 
 		if (!silent)
-			FilterStorage.triggerObservers("load");
+			FilterNotifier.triggerListeners("load");
 
 	},
 
 	/**
 	 * Saves all subscriptions back to disk
+	 * @param {nsIFile} [targetFile] File to be written
 	 */
-	saveToDisk: function()
+	saveToDisk: function(targetFile)
 	{
-		if (!FilterStorage.sourceFile)
+		let explicitFile = true;
+		if (!targetFile)
+		{
+			targetFile = FilterStorage.sourceFile;
+			explicitFile = false;
+		}
+		if (!targetFile)
 			return;
 
 
 
 		try {
-			FilterStorage.sourceFile.normalize();
+			targetFile.normalize();
 		} catch (e) {}
 
 		// Make sure the file's parent directory exists
 		try {
-			FilterStorage.sourceFile.parent.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
+			targetFile.parent.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
 		} catch (e) {}
 
-		let tempFile = FilterStorage.sourceFile.clone();
+		let tempFile = targetFile.clone();
 		tempFile.leafName += "-temp";
 		let fileStream, stream;
 		try {
@@ -529,9 +585,10 @@ var FilterStorage =
 		}
 
 
-		if (FilterStorage.sourceFile.exists()) {
+		if (!explicitFile && targetFile.exists())
+		{
 			// Check whether we need to backup the file
-			let part1 = FilterStorage.sourceFile.leafName;
+			let part1 = targetFile.leafName;
 			let part2 = "";
 			if (/^(.*)(\.\w+)$/.test(part1))
 			{
@@ -542,7 +599,7 @@ var FilterStorage =
 			let doBackup = (Prefs.patternsbackups > 0);
 			if (doBackup)
 			{
-				let lastBackup = FilterStorage.sourceFile.clone();
+				let lastBackup = targetFile.clone();
 				lastBackup.leafName = part1 + "-backup1" + part2;
 				if (lastBackup.exists() && (Date.now() - lastBackup.lastModifiedTime) / 3600000 < Prefs.patternsbackupinterval)
 					doBackup = false;
@@ -550,7 +607,7 @@ var FilterStorage =
 
 			if (doBackup)
 			{
-				let backupFile = FilterStorage.sourceFile.clone();
+				let backupFile = targetFile.clone();
 				backupFile.leafName = part1 + "-backup" + Prefs.patternsbackups + part2;
 
 				// Remove oldest backup
@@ -567,11 +624,41 @@ var FilterStorage =
 				}
 			}
 		}
+		else if (targetFile.exists())
+			targetFile.remove(false);
 
-		tempFile.moveTo(FilterStorage.sourceFile.parent, FilterStorage.sourceFile.leafName);
+		tempFile.moveTo(targetFile.parent, targetFile.leafName);
 
-		FilterStorage.triggerObservers("save");
+		if (!explicitFile)
+			FilterNotifier.triggerListeners("save");
 
+	},
+
+	/**
+	 * Returns the list of existing backup files.
+	 */
+	getBackupFiles: function() /**nsIFile[]*/
+	{
+		let result = [];
+
+		let part1 = FilterStorage.sourceFile.leafName;
+		let part2 = "";
+		if (/^(.*)(\.\w+)$/.test(part1))
+		{
+			part1 = RegExp.$1;
+			part2 = RegExp.$2;
+		}
+
+		for (let i = 1; ; i++)
+		{
+			let file = FilterStorage.sourceFile.clone();
+			file.leafName = part1 + "-backup" + i + part2;
+			if (file.exists())
+				result.push(file);
+			else
+				break;
+		}
+		return result;
 	}
 };
 
diff --git a/modules/Matcher.jsm b/modules/Matcher.jsm
index d205b06..43cbc5a 100644
--- a/modules/Matcher.jsm
+++ b/modules/Matcher.jsm
@@ -318,6 +318,7 @@ function CombinedMatcher()
 {
 	this.blacklist = new Matcher();
 	this.whitelist = new Matcher();
+	this.keys = {__proto__: null};
 	this.resultCache = {__proto__: null};
 }
 
@@ -342,6 +343,12 @@ CombinedMatcher.prototype =
 	whitelist: null,
 
 	/**
+	 * Exception rules that are limited by public keys, mapped by the corresponding keys.
+	 * @type Object
+	 */
+	keys: null,
+
+	/**
 	 * Lookup table of previous matchesAny results
 	 * @type Object
 	 */
@@ -360,6 +367,7 @@ CombinedMatcher.prototype =
 	{
 		this.blacklist.clear();
 		this.whitelist.clear();
+		this.keys = {__proto__: null};
 		this.resultCache = {__proto__: null};
 		this.cacheEntries = 0;
 	},
@@ -370,7 +378,15 @@ CombinedMatcher.prototype =
 	add: function(filter)
 	{
 		if (filter instanceof WhitelistFilter)
-			this.whitelist.add(filter);
+		{
+			if (filter.siteKeys)
+			{
+				for (let i = 0; i < filter.siteKeys.length; i++)
+					this.keys[filter.siteKeys[i]] = filter.text;
+			}
+			else
+				this.whitelist.add(filter);
+		}
 		else
 			this.blacklist.add(filter);
 
@@ -387,7 +403,15 @@ CombinedMatcher.prototype =
 	remove: function(filter)
 	{
 		if (filter instanceof WhitelistFilter)
-			this.whitelist.remove(filter);
+		{
+			if (filter.siteKeys)
+			{
+				for (let i = 0; i < filter.siteKeys.length; i++)
+					delete this.keys[filter.siteKeys[i]];
+			}
+			else
+				this.whitelist.remove(filter);
+		}
 		else
 			this.blacklist.remove(filter);
 
@@ -498,11 +522,29 @@ CombinedMatcher.prototype =
 	},
 
 	/**
+	 * Looks up whether any filters match the given website key.
+	 */
+	matchesByKey: function(/**String*/ location, /**String*/ key, /**String*/ docDomain)
+	{
+		key = key.toUpperCase();
+		if (key in this.keys)
+		{
+			let filter = Filter.knownFilters[this.keys[key]];
+			if (filter && filter.matches(location, "DOCUMENT", docDomain, false))
+				return filter;
+			else
+				return null;
+		}
+		else
+			return null;
+	},
+
+	/**
 	 * Stores current state in a JSON'able object.
 	 */
 	toCache: function(/**Object*/ cache)
 	{
-		cache.matcher = {whitelist: {}, blacklist: {}};
+		cache.matcher = {whitelist: {}, blacklist: {}, keys: this.keys};
 		this.whitelist.toCache(cache.matcher.whitelist);
 		this.blacklist.toCache(cache.matcher.blacklist);
 	},
@@ -514,10 +556,10 @@ CombinedMatcher.prototype =
 	{
 		this.whitelist.fromCache(cache.matcher.whitelist);
 		this.blacklist.fromCache(cache.matcher.blacklist);
+		this.keys = cache.matcher.keys;
 	}
 }
 
-
 /**
  * Shared CombinedMatcher instance that should usually be used.
  * @type CombinedMatcher
diff --git a/modules/ObjectTabs.jsm b/modules/ObjectTabs.jsm
index a390858..72576fe 100644
--- a/modules/ObjectTabs.jsm
+++ b/modules/ObjectTabs.jsm
@@ -136,18 +136,6 @@ var objTabs =
 	hideTargetTime: 0,
 
 	/**
-	 * Will be true for Gecko 1.9/1.9.1, objects occupy the entire element
-	 * space there including border and padding.
-	 * @type Boolean
-	 */
-	get _objectOverlapsBorder()
-	{
-		let result = (Utils.versionComparator.compare(Utils.platformVersion, "1.9.2") < 0);
-		this.__defineGetter__("_objectOverlapsBorder", function() result);
-		return result;
-	},
-
-	/**
 	 * Initializes object tabs (generates random classes and registers stylesheet).
 	 */
 	_initCSS: function()
@@ -188,10 +176,10 @@ var objTabs =
 				request.overrideMimeType("text/plain");
 
 				let me = this;
-				request.onload = function()
+				request.addEventListener("load", function()
 				{
 					processCSSData.call(me, request.responseText);
-				}
+				}, false);
 				request.send(null);
 			}
 			catch (e)
@@ -415,15 +403,13 @@ var objTabs =
 		let rect = element.getBoundingClientRect();
 		let wnd = element.ownerDocument.defaultView;
 
-		let offsets = [0, 0, 0, 0];
-		if (!this._objectOverlapsBorder)
-		{
-			let style = wnd.getComputedStyle(element, null);
-			offsets[0] = parseFloat(style.borderLeftWidth) + parseFloat(style.paddingLeft);
-			offsets[1] = parseFloat(style.borderTopWidth) + parseFloat(style.paddingTop);
-			offsets[2] = parseFloat(style.borderRightWidth) + parseFloat(style.paddingRight);
-			offsets[3] = parseFloat(style.borderBottomWidth) + parseFloat(style.paddingBottom);
-		}
+		let style = wnd.getComputedStyle(element, null);
+		let offsets = [
+			parseFloat(style.borderLeftWidth) + parseFloat(style.paddingLeft),
+			parseFloat(style.borderTopWidth) + parseFloat(style.paddingTop),
+			parseFloat(style.borderRightWidth) + parseFloat(style.paddingRight),
+			parseFloat(style.borderBottomWidth) + parseFloat(style.paddingBottom)
+		];
 
 		rect = {left: rect.left + offsets[0], top: rect.top + offsets[1],
 						right: rect.right - offsets[2], bottom: rect.bottom - offsets[3]};
diff --git a/modules/Public.jsm b/modules/Public.jsm
index da924f5..9b9cf35 100644
--- a/modules/Public.jsm
+++ b/modules/Public.jsm
@@ -107,7 +107,6 @@ var AdblockPlus =
 			subscription.filters = newFilters;
 			FilterStorage.addSubscription(subscription);
 		}
-		FilterStorage.saveToDisk();
 
 		return id;
 	},
@@ -136,15 +135,10 @@ var AdblockPlus =
 			filter = Filter.fromText(Filter.normalize(filter));
 			if (filter)
 			{
-				if (filter.disabled)
-				{
-					filter.disabled = false;
-					FilterStorage.triggerObservers("filters enable", [filter]);
-				}
+				filter.disabled = false;
 				FilterStorage.addFilter(filter);
 			}
 		}
-		FilterStorage.saveToDisk();
 	},
 
 	/**
@@ -158,7 +152,6 @@ var AdblockPlus =
 			if (filter)
 				FilterStorage.removeFilter(filter);
 		}
-		FilterStorage.saveToDisk();
 	},
 
 	/**
@@ -190,7 +183,7 @@ function createSubscriptionWrapper(/**Subscription*/ subscription) /**IAdblockPl
 		url: subscription.url,
 		special: subscription instanceof SpecialSubscription,
 		title: subscription.title,
-		autoDownload: subscription instanceof DownloadableSubscription && subscription.autoDownload,
+		autoDownload: true,
 		disabled: subscription.disabled,
 		external: subscription instanceof ExternalSubscription,
 		lastDownload: subscription instanceof RegularSubscription ? subscription.lastDownload : 0,
diff --git a/modules/RequestNotifier.jsm b/modules/RequestNotifier.jsm
index 965279a..aae8fe0 100644
--- a/modules/RequestNotifier.jsm
+++ b/modules/RequestNotifier.jsm
@@ -51,54 +51,21 @@ const wndStatProp = "abpWindowStats" + dataSeed;
  */
 let activeNotifiers = [];
 
-let attachData;
-let retrieveData;
-if (Utils.versionComparator.compare(Utils.platformVersion, "1.9.2.13") >= 0)
+function attachData(node, prop, data)
 {
-	// Gecko 1.9.2.13 and higher - the sane branch
-	attachData = function(node, prop, data)
-	{
-		node.setUserData(prop, data, null);
-	};
-	retrieveData = function(node, prop)
-	{
-		if (typeof XPCNativeWrapper != "undefined" && node.wrappedJSObject)
-		{
-			// Rewrap node into a shallow XPCNativeWrapper. Otherwise we will get
-			// our object wrapped causing weird permission exceptions in Gecko 1.9.1
-			// and failed equality comparisons in Gecko 1.9.2.
-			node = new XPCNativeWrapper(node, "getUserData()");
-		}
-		return node.getUserData(prop);
-	}
+	node.setUserData(prop, data, null);
 }
-else
+
+function retrieveData(node, prop)
 {
-	// Gecko 1.9.1 - the insane branch. See bug 23689 to know why this is still
-	// needed.
-	var tempData = null;
-	attachData = function(node, prop, data)
+	if (typeof XPCNativeWrapper != "undefined" && node.wrappedJSObject)
 	{
-		node.addEventListener(prop, function()
-		{
-			tempData = data;
-		}, false);
-		node = null;
-	}
-	retrieveData = function(node, prop)
-	{
-		let doc = (node.nodeType == node.DOCUMENT_NODE ? node : node.ownerDocument);
-		if (!doc)
-			return null;
-
-		let event = doc.createEvent("Events");
-		event.initEvent(prop, false, false);
-		node.dispatchEvent(event);
-
-		let result = tempData;
-		tempData = null;
-		return result;
+		// Rewrap node into a shallow XPCNativeWrapper. Otherwise we will get
+		// our object wrapped causing weird permission exceptions in Gecko 1.9.1
+		// and failed equality comparisons in Gecko 1.9.2.
+		node = new XPCNativeWrapper(node, "getUserData()");
 	}
+	return node.getUserData(prop);
 }
 
 /**
diff --git a/modules/SubscriptionClasses.jsm b/modules/SubscriptionClasses.jsm
index 8467d8e..6ac7363 100644
--- a/modules/SubscriptionClasses.jsm
+++ b/modules/SubscriptionClasses.jsm
@@ -37,17 +37,20 @@ let baseURL = Cc["@adblockplus.org/abp/private;1"].getService(Ci.nsIURI);
 
 Cu.import(baseURL.spec + "Utils.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 
 /**
  * Abstract base class for filter subscriptions
  *
  * @param {String} url    download location of the subscription
+ * @param {String} [title]  title of the filter subscription
  * @constructor
  */
-function Subscription(url)
+function Subscription(url, title)
 {
 	this.url = url;
 	this.filters = [];
+	this._title = title || Utils.getString("newGroup_title");
 	Subscription.knownSubscriptions[url] = this;
 }
 Subscription.prototype =
@@ -64,11 +67,40 @@ Subscription.prototype =
 	 */
 	filters: null,
 
+	_title: null,
+	_disabled: false,
+
+	/**
+	 * Title of the filter subscription
+	 * @type String
+	 */
+	get title() this._title,
+	set title(value)
+	{
+		if (value != this._title)
+		{
+			let oldValue = this._title;
+			this._title = value;
+			FilterNotifier.triggerListeners("subscription.title", this, value, oldValue);
+		}
+		return this._title;
+	},
+
 	/**
 	 * Defines whether the filters in the subscription should be disabled
 	 * @type Boolean
 	 */
-	disabled: false,
+	get disabled() this._disabled,
+	set disabled(value)
+	{
+		if (value != this._disabled)
+		{
+			let oldValue = this._disabled;
+			this._disabled = value;
+			FilterNotifier.triggerListeners("subscription.disabled", this, value, oldValue);
+		}
+		return this._disabled;
+	},
 
 	/**
 	 * Serializes the filter to an array of strings for writing out on the disk.
@@ -78,7 +110,8 @@ Subscription.prototype =
 	{
 		buffer.push("[Subscription]");
 		buffer.push("url=" + this.url);
-		if (this.disabled)
+		buffer.push("title=" + this._title);
+		if (this._disabled)
 			buffer.push("disabled=true");
 	},
 
@@ -112,20 +145,15 @@ Subscription.fromURL = function(url)
 	if (url in Subscription.knownSubscriptions)
 		return Subscription.knownSubscriptions[url];
 
-	if (url in SpecialSubscription.map && SpecialSubscription.map[url] instanceof Array)
-		return new SpecialSubscription(url);
-	else
+	try
 	{
-		try
-		{
-			// Test URL for validity
-			url = Utils.ioService.newURI(url, null, null).spec;
-			return new DownloadableSubscription(url, null);
-		}
-		catch (e)
-		{
-			return null;
-		}
+		// Test URL for validity
+		url = Utils.ioService.newURI(url, null, null).spec;
+		return new DownloadableSubscription(url, null);
+	}
+	catch (e)
+	{
+		return new SpecialSubscription(url);
 	}
 }
 
@@ -138,57 +166,63 @@ Subscription.fromURL = function(url)
 Subscription.fromObject = function(obj)
 {
 	let result;
-	if (obj.url in SpecialSubscription.map && SpecialSubscription.map[obj.url] instanceof Array)
-		result = new SpecialSubscription(obj.url);
-	else
+	try
 	{
-		if ("external" in obj && obj.external == "true")
-			result = new ExternalSubscription(obj.url, obj.title);
-		else
+		obj.url = Utils.ioService.newURI(obj.url, null, null).spec;
+
+		// URL is valid - this is a downloadable subscription
+		result = new DownloadableSubscription(obj.url, obj.title);
+		if ("nextURL" in obj)
+			result.nextURL = obj.nextURL;
+		if ("downloadStatus" in obj)
+			result._downloadStatus = obj.downloadStatus;
+		if ("lastModified" in obj)
+			result.lastModified = obj.lastModified;
+		if ("lastSuccess" in obj)
+			result.lastSuccess = parseInt(obj.lastSuccess) || 0;
+		if ("lastCheck" in obj)
+			result._lastCheck = parseInt(obj.lastCheck) || 0;
+		if ("expires" in obj)
+			result.expires = parseInt(obj.expires) || 0;
+		if ("softExpiration" in obj)
+			result.softExpiration = parseInt(obj.softExpiration) || 0;
+		if ("errors" in obj)
+			result._errors = parseInt(obj.errors) || 0;
+		if ("requiredVersion" in obj)
 		{
-			try
-			{
-				// Test URL for validity
-				obj.url = Utils.ioService.newURI(obj.url, null, null).spec;
-			}
-			catch (e)
-			{
-				return null;
-			}
-
-			result = new DownloadableSubscription(obj.url, obj.title);
-			if ("autoDownload" in obj)
-				result.autoDownload = (obj.autoDownload == "true");
-			if ("nextURL" in obj)
-				result.nextURL = obj.nextURL;
-			if ("downloadStatus" in obj)
-				result.downloadStatus = obj.downloadStatus;
-			if ("lastModified" in obj)
-				result.lastModified = obj.lastModified;
-			if ("lastSuccess" in obj)
-				result.lastSuccess = parseInt(obj.lastSuccess) || 0;
-			if ("lastCheck" in obj)
-				result.lastCheck = parseInt(obj.lastCheck) || 0;
-			if ("expires" in obj)
-				result.expires = parseInt(obj.expires) || 0;
-			if ("softExpiration" in obj)
-				result.softExpiration = parseInt(obj.softExpiration) || 0;
-			if ("errors" in obj)
-				result.errors = parseInt(obj.errors) || 0;
-			if ("requiredVersion" in obj)
-			{
-				result.requiredVersion = obj.requiredVersion;
-				if (Utils.versionComparator.compare(result.requiredVersion, Utils.addonVersion) > 0)
-					result.upgradeRequired = true;
-			}
-			if ("alternativeLocations" in obj)
-				result.alternativeLocations = obj.alternativeLocations;
+			result.requiredVersion = obj.requiredVersion;
+			if (Utils.versionComparator.compare(result.requiredVersion, Utils.addonVersion) > 0)
+				result.upgradeRequired = true;
 		}
+		if ("alternativeLocations" in obj)
+			result.alternativeLocations = obj.alternativeLocations;
+		if ("homepage" in obj)
+			result._homepage = obj.homepage;
 		if ("lastDownload" in obj)
-			result.lastDownload = parseInt(obj.lastDownload) || 0;
+			result._lastDownload = parseInt(obj.lastDownload) || 0;
+	}
+	catch (e)
+	{
+		// Invalid URL - custom filter group
+		if (!("title" in obj))
+		{
+			// Backwards compatibility - titles and filter types were originally
+			// determined by group identifier.
+			if (obj.url == "~wl~")
+				obj.defaults = "whitelist";
+			else if (obj.url == "~fl~")
+				obj.defaults = "blocking";
+			else if (obj.url == "~eh~")
+				obj.defaults = "elemhide";
+			if ("defaults" in obj)
+				obj.title = Utils.getString(obj.defaults + "Group_title");
+		}
+		result = new SpecialSubscription(obj.url, obj.title);
+		if ("defaults" in obj)
+			result.defaults = obj.defaults.split(" ");
 	}
 	if ("disabled" in obj)
-		result.disabled = (obj.disabled == "true");
+		result._disabled = (obj.disabled == "true");
 
 	return result;
 }
@@ -196,110 +230,149 @@ Subscription.fromObject = function(obj)
 /**
  * Class for special filter subscriptions (user's filters)
  * @param {String} url see Subscription()
+ * @param {String} [title]  see Subscription()
  * @constructor
  * @augments Subscription
  */
-function SpecialSubscription(url)
+function SpecialSubscription(url, title)
 {
-	Subscription.call(this, url);
-
-	let data = SpecialSubscription.map[url];
-	this._titleID = data[0];
-	this._priority = data[1];
-	this.filterTypes = data.slice(2);
+	Subscription.call(this, url, title);
 }
 SpecialSubscription.prototype =
 {
 	__proto__: Subscription.prototype,
 
 	/**
-	 * ID of the string that should be used as the title of this subscription
-	 * @type String
-	 */
-	_titleID: null,
-
-	/**
-	 * Priority when adding new filters that are accepted by multiple subscriptions
-	 * @type Integer
+	 * Filter types that should be added to this subscription by default
+	 * (entries should correspond to keys in SpecialSubscription.defaultsMap).
+	 * @type Array of String
 	 */
-	_priority: null,
+	defaults: null,
 
 	/**
-	 * Priority based on which new filters are added to a subscription if multiple
-	 * subscriptions are possible
-	 * @type Integer
+	 * Tests whether a filter should be added to this group by default
+	 * @param {Filter} filter filter to be tested
+	 * @return {Boolean}
 	 */
-	get priority()
+	isDefaultFor: function(filter)
 	{
-		return this._priority;
-	},
+		if (this.defaults && this.defaults.length)
+		{
+			for each (let type in this.defaults)
+			{
+				if (filter instanceof SpecialSubscription.defaultsMap[type])
+					return true;
+				if (!(filter instanceof ActiveFilter) && type == "blacklist")
+					return true;
+			}
+		}
 
-	/**
-	 * Title of the subscription (read-only)
-	 * @type String
-	 */
-	get title()
-	{
-		return Utils.getString(this._titleID);
+		return false;
 	},
 
 	/**
-	 * Filter classes that can be added to this subscription
-	 * @type Array of Function
-	 */
-	filterTypes: null,
-
-	/**
-	 * Tests whether a filter is allowed to be added to this subscription
-	 * @param {Filter} filter filter to be tested
-	 * @return {Boolean}
+	 * See Subscription.serialize()
 	 */
-	isFilterAllowed: function(filter)
+	serialize: function(buffer)
 	{
-		for each (let type in this.filterTypes)
-			if (filter instanceof type)
-				return true;
-
-		return false;
+		Subscription.prototype.serialize.call(this, buffer);
+		if (this.defaults && this.defaults.length)
+			buffer.push("defaults=" + this.defaults.filter(function(type) type in SpecialSubscription.defaultsMap).join(" "));
+		if (this._lastDownload)
+			buffer.push("lastDownload=" + this._lastDownload);
 	}
 };
 
-SpecialSubscription.map = {
+SpecialSubscription.defaultsMap = {
 	__proto__: null,
-	"~il~": ["invalid_description", 1, InvalidFilter, CommentFilter],
-	"~wl~": ["whitelist_description", 3, WhitelistFilter, CommentFilter],
-	"~fl~": ["filterlist_description", 4, BlockingFilter, CommentFilter],
-	"~eh~": ["elemhide_description", 2, ElemHideFilter, CommentFilter]
+	"whitelist": WhitelistFilter,
+	"blocking": BlockingFilter,
+	"elemhide": ElemHideFilter
+};
+
+/**
+ * Creates a new user-defined filter group.
+ * @param {String} [title]  title of the new filter group
+ * @result {SpecialSubscription}
+ */
+SpecialSubscription.create = function(title)
+{
+	let url;
+	do
+	{
+		url = "~user~" + Math.round(Math.random()*1000000);
+	} while (url in Subscription.knownSubscriptions);
+	return new SpecialSubscription(url, title)
+};
+
+/**
+ * Creates a new user-defined filter group and adds the given filter to it.
+ * This group will act as the default group for this filter type.
+ */
+SpecialSubscription.createForFilter = function(/**Filter*/ filter) /**SpecialSubscription*/
+{
+	let subscription = SpecialSubscription.create();
+	subscription.filters.push(filter);
+	for (let type in SpecialSubscription.defaultsMap)
+	{
+		if (filter instanceof SpecialSubscription.defaultsMap[type])
+			subscription.defaults = [type];
+	}
+	if (!subscription.defaults)
+		subscription.defaults = ["blocking"];
+	subscription.title = Utils.getString(subscription.defaults[0] + "Group_title");
+	return subscription;
 };
 
 /**
  * Abstract base class for regular filter subscriptions (both internally and externally updated)
  * @param {String} url    see Subscription()
- * @param {String} title  (optional) title of the filter subscription
+ * @param {String} [title]  see Subscription()
  * @constructor
  * @augments Subscription
  */
 function RegularSubscription(url, title)
 {
-	Subscription.call(this, url);
-
-	this.title = title || url;
+	Subscription.call(this, url, title || url);
 }
 RegularSubscription.prototype =
 {
 	__proto__: Subscription.prototype,
 
+	_homepage: null,
+	_lastDownload: 0,
+
 	/**
-	 * Title of the filter subscription
+	 * Filter subscription homepage if known
 	 * @type String
 	 */
-	title: null,
+	get homepage() this._homepage,
+	set homepage(value)
+	{
+		if (value != this._homepage)
+		{
+			let oldValue = this._homepage;
+			this._homepage = value;
+			FilterNotifier.triggerListeners("subscription.homepage", this, value, oldValue);
+		}
+		return this._homepage;
+	},
 
 	/**
 	 * Time of the last subscription download (in seconds since the beginning of the epoch)
 	 * @type Number
 	 */
-	lastDownload: 0,
+	get lastDownload() this._lastDownload,
+	set lastDownload(value)
+	{
+		if (value != this._lastDownload)
+		{
+			let oldValue = this._lastDownload;
+			this._lastDownload = value;
+			FilterNotifier.triggerListeners("subscription.lastDownload", this, value, oldValue);
+		}
+		return this._lastDownload;
+	},
 
 	/**
 	 * See Subscription.serialize()
@@ -307,16 +380,17 @@ RegularSubscription.prototype =
 	serialize: function(buffer)
 	{
 		Subscription.prototype.serialize.call(this, buffer);
-		buffer.push("title=" + this.title);
-		if (this.lastDownload)
-			buffer.push("lastDownload=" + this.lastDownload);
+		if (this._homepage)
+			buffer.push("homepage=" + this._homepage);
+		if (this._lastDownload)
+			buffer.push("lastDownload=" + this._lastDownload);
 	}
 };
 
 /**
  * Class for filter subscriptions updated by externally (by other extension)
  * @param {String} url    see Subscription()
- * @param {String} title  see RegularSubscription()
+ * @param {String} [title]  see Subscription()
  * @constructor
  * @augments RegularSubscription
  */
@@ -333,15 +407,14 @@ ExternalSubscription.prototype =
 	 */
 	serialize: function(buffer)
 	{
-		RegularSubscription.prototype.serialize.call(this, buffer);
-		buffer.push("external=true");
+		throw "Unexpected call, external subscriptions should not be serialized";
 	}
 };
 
 /**
  * Class for filter subscriptions updated by externally (by other extension)
- * @param {String} url    see Subscription()
- * @param {String} title  see RegularSubscription()
+ * @param {String} url  see Subscription()
+ * @param {String} [title]  see Subscription()
  * @constructor
  * @augments RegularSubscription
  */
@@ -353,11 +426,9 @@ DownloadableSubscription.prototype =
 {
 	__proto__: RegularSubscription.prototype,
 
-	/**
-	 * Defines whether the subscription should be downloaded automatically
-	 * @type Boolean
-	 */
-	autoDownload: true,
+	_downloadStatus: null,
+	_lastCheck: 0,
+	_errors: 0,
 
 	/**
 	 * Next URL the downloaded should be attempted from (in case of redirects)
@@ -369,7 +440,14 @@ DownloadableSubscription.prototype =
 	 * Status of the last download (ID of a string)
 	 * @type String
 	 */
-	downloadStatus: null,
+	get downloadStatus() this._downloadStatus,
+	set downloadStatus(value)
+	{
+		let oldValue = this._downloadStatus;
+		this._downloadStatus = value;
+		FilterNotifier.triggerListeners("subscription.downloadStatus", this, value, oldValue);
+		return this._downloadStatus;
+	},
 
 	/**
 	 * Value of the Last-Modified header returned by the server on last download
@@ -389,7 +467,17 @@ DownloadableSubscription.prototype =
 	 * if the user doesn't use Adblock Plus for some time.
 	 * @type Number
 	 */
-	lastCheck: 0,
+	get lastCheck() this._lastCheck,
+	set lastCheck(value)
+	{
+		if (value != this._lastCheck)
+		{
+			let oldValue = this._lastCheck;
+			this._lastCheck = value;
+			FilterNotifier.triggerListeners("subscription.lastCheck", this, value, oldValue);
+		}
+		return this._lastCheck;
+	},
 
 	/**
 	 * Hard expiration time of the filter subscription (in seconds since the beginning of the epoch)
@@ -407,7 +495,17 @@ DownloadableSubscription.prototype =
 	 * Number of download failures since last success
 	 * @type Number
 	 */
-	errors: 0,
+	get errors() this._errors,
+	set errors(value)
+	{
+		if (value != this._errors)
+		{
+			let oldValue = this._errors;
+			this._errors = value;
+			FilterNotifier.triggerListeners("subscription.errors", this, value, oldValue);
+		}
+		return this._errors;
+	},
 
 	/**
 	 * Minimal Adblock Plus version required for this subscription
@@ -434,8 +532,6 @@ DownloadableSubscription.prototype =
 	serialize: function(buffer)
 	{
 		RegularSubscription.prototype.serialize.call(this, buffer);
-		if (!this.autoDownload)
-			buffer.push("autoDownload=false");
 		if (this.nextURL)
 			buffer.push("nextURL=" + this.nextURL);
 		if (this.downloadStatus)
diff --git a/modules/Survey.jsm b/modules/Survey.jsm
deleted file mode 100644
index b740eba..0000000
--- a/modules/Survey.jsm
+++ /dev/null
@@ -1,163 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Adblock Plus.
- *
- * The Initial Developer of the Original Code is
- * Wladimir Palant.
- * Portions created by the Initial Developer are Copyright (C) 2006-2011
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * ***** END LICENSE BLOCK ***** */
-
-var EXPORTED_SYMBOLS = ["Survey"];
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-let baseURL = Cc["@adblockplus.org/abp/private;1"].getService(Ci.nsIURI);
-
-Cu.import(baseURL.spec + "Utils.jsm");
-Cu.import(baseURL.spec + "Prefs.jsm");
-Cu.import(baseURL.spec + "AppIntegration.jsm");
-
-var Survey =
-{
-	startup: initSurvey
-};
-
-let surveyTimer = null;
-let surveyLang = null;
-
-let langData = {
-	en: {
-		title: "Tell us your opinion",
-		question: "We would like to ask you a few questions about Adblock Plus to help us improve it. If you can spare 5 minutes please click the button below to take the survey.",
-		note: "This is a one-time message and will not appear again.",
-		accept: "Take the survey",
-		decline: "Maybe some other time"
-	},
-	de: {
-		title: "Sagen Sie uns Ihre Meinung",
-		question: "Wir w\xFCrden Ihnen gerne einige Fragen zu Adblock Plus stellen, um es verbessern zu k\xF6nnen. Falls Sie gerade 5 Minuten haben, dr\xFCcken Sie bitte die Taste unten, um an der Nutzerumfrage teilzunehmen.",
-		note: "Das ist eine einmalige Nachricht, die nicht wieder erscheinen wird.",
-		accept: "An der Umfrage teilnehmen",
-		decline: "Vielleicht ein anderes Mal"
-	},
-	ru: {
-		title: decodeURIComponent("%D0%9F%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D1%81%D1%8C%20%D1%81%20%D0%BD%D0%B0%D0%BC%D0%B8%20%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%20%D0%BC%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC"),
-		question: decodeURIComponent("%D0%9C%D1%8B%20%D1%85%D0%BE%D1%82%D0%B5%D0%BB%D0%B8%20%D0%B1%D1%8B%20%D0%B7%D0%B0%D0%B4%D0%B0%D1%82%D1%8C%20%D0%B2%D0%B0%D0%BC%20%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B%20%D0%BE%D0%B1%20Adblock%20Plus%2C%20%D1%87%D1%82%D0%BE%D0%B1%D1%8B%20%D0%BB%D1%83%D1%87%D1%88%D0%B5%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D1%8C%20%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B4%D0%BB%D1%8F%20%D0%B5%D0%B3%D0%BE%20%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%B5%D0%B9%D1%88%D0%B5%D0%B3%D0%BE%20%D1%80%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D1%8F.%20%D0%95%D1%81%D0%BB%D0%B8%20%D1%83%20%D0%B2%D0%B0%D1%81%20%D0%B5%D1%81%D1%82%D1%8C%20%D1%81%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D1%8B%D0%B5%205%20%D0%BC%D0%B8%D0%BD%D1%83%D1%82%2C%20%D1%82%D0%BE%20%D0%BD%D0%B0%D0%B6%D0%BC%D0%B8%D1%82%D0%B5%2C%20%D0%BF%D0%BE%D0%B6%D0%B0%D0%BB%D1%83%D0%B9%D1%81%D1%82%D0%B0%2C%20%D0%BD%D0%B0%20%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D1%83%2C%20%D1%87%D1%82%D0%BE%D0%B1%D1%8B%20%D0%BF%D1%80%D0%B8%D0%BD%D1%8F%D1%82%D1%8C%20%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%B8%D0%B5%20%D0%B2%20%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D0%B5."),
-		note: decodeURIComponent("%D0%AD%D1%82%D0%BE%20%D0%BE%D0%B4%D0%BD%D0%BE%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%BE%D0%B5%20%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5%2C%20%D0%BE%D0%BD%D0%BE%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B5%20%D0%BD%D0%B5%20%D0%B1%D1%83%D0%B4%D0%B5%D1%82%20%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F."),
-		accept: decodeURIComponent("%D0%9F%D1%80%D0%B8%D0%BD%D1%8F%D1%82%D1%8C%20%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%B8%D0%B5%20%D0%B2%20%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D0%B5"),
-		decline: decodeURIComponent("%D0%9C%D0%BE%D0%B6%D0%B5%D1%82%20%D0%B2%20%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9%20%D1%80%D0%B0%D0%B7")
-	}
-};
-
-function initSurvey()
-{
-	// Only look at users updating from another 1.3.x version
-	let prevVersion = Prefs.currentVersion;
-	let currentVersion = Utils.addonVersion;
-	if (prevVersion == currentVersion || Utils.versionComparator.compare(prevVersion, "1.3") < 0)
-		return;
-
-	// Don't ask after 2011-11-10
-	if (Date.now() > 1320883200000)
-		return;
-
-	// Only Firefox users
-	if (Utils.appID != "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}")
-		return;
-
-	// Only Firefox 4 and higher
-	if (Utils.versionComparator.compare(Utils.platformVersion, "2.0") < 0)
-		return;
-
-	// Survey is only available in English/German/Russian
-	if (!/^(en|de|ru)\b/.test(Utils.appLocale))
-		return;
-	surveyLang = RegExp.$1;
-
-	// Only ask 0.5% of the users
-	if (Math.random() > 0.005)
-		return;
-
-	// Delay survey question by 20 seconds
-	surveyTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
-	surveyTimer.initWithCallback(runSurvey, 20000, Ci.nsITimer.TYPE_ONE_SHOT);
-}
-
-function runSurvey()
-{
-	surveyTimer = null;
-
-	let browser = Utils.windowMediator.getMostRecentWindow("navigator:browser");
-	if (!browser)
-		return;
-
-	let wrapper = AppIntegration.getWrapperForWindow(browser);
-	if (!wrapper)
-		return null;
-
-	let button = wrapper.E("abp-toolbarbutton") || wrapper.E("abp-status");
-	if (!button)
-		return;
-
-	let lang = langData[surveyLang];
-	let panel = new wrapper.window.DOMParser().parseFromString('\
-		<panel xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="abp-survey-message" type="arrow" orient="vertical">\
-			<description class="title"/>\
-			<description class="question" maxwidth="300"/>\
-			<hbox>\
-				<button class="accept" dlgtype="accept"/>\
-				<spacer flex="1"/>\
-				<button class="decline" dlgtype="cancel"/>\
-			</hbox>\
-			<description class="note" maxwidth="300"/>\
-		</panel>\
-	', "text/xml").documentElement;
-	panel.getElementsByClassName("title")[0].setAttribute("value", lang.title);
-	panel.getElementsByClassName("question")[0].textContent = lang.question;
-	panel.getElementsByClassName("note")[0].textContent = lang.note;
-	let (button = panel.getElementsByClassName("accept")[0])
-	{
-		button.setAttribute("label", lang.accept);
-		button.addEventListener("command", function()
-		{
-			panel.hidePopup();
-			openSurveyTab(wrapper);
-		}, false);
-	}
-	let (button = panel.getElementsByClassName("decline")[0])
-	{
-		button.setAttribute("label", lang.decline);
-		button.addEventListener("command", function()
-		{
-			panel.hidePopup();
-		}, false);
-	}
-	wrapper.E("abp-popupset").appendChild(panel);
-	panel.openPopup(button, "bottomcenter topcenter", 0, 0, false, false, null);
-}
-
-function openSurveyTab(wrapper)
-{
-	wrapper.window.gBrowser.loadOneTab("http://adblockplus.org/usersurvey/index.php?sid=68316&lang=" + surveyLang, {
-		referrerURI: Utils.makeURI("http://adblock.plus/"),
-		inBackground: false
-	});
-}
diff --git a/modules/Sync.jsm b/modules/Sync.jsm
index e8b7ceb..292cedc 100644
--- a/modules/Sync.jsm
+++ b/modules/Sync.jsm
@@ -40,6 +40,7 @@ Cu.import(baseURL.spec + "Utils.jsm");
 Cu.import(baseURL.spec + "FilterStorage.jsm");
 Cu.import(baseURL.spec + "SubscriptionClasses.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 Cu.import(baseURL.spec + "Synchronizer.jsm");
 
 /**
@@ -196,10 +197,7 @@ ABPStore.prototype =
 					}
 				}
 				else
-				{
 					subscriptionEntry.title = subscription.title;
-					subscriptionEntry.autoDownload = subscription.autoDownload;
-				}
 				record.cleartext.subscriptions.push(subscriptionEntry);
 			}
 
@@ -239,19 +237,9 @@ ABPStore.prototype =
 				if (!trackerInstance.didSubscriptionChange(remoteSubscription))
 				{
 					// Only change local subscription if there were no changes, otherwise dismiss remote changes
-					if (subscription.disabled != remoteSubscription.disabled)
-					{
-						subscription.disabled = remoteSubscription.disabled;
-						FilterStorage.triggerObservers(subscription.disabled ? "subscriptions disable" : "subscriptions enable", [subscription]);
-					}
-
-					if (subscription instanceof DownloadableSubscription && (subscription.title != remoteSubscription.title ||
-																																	 subscription.autoDownload != remoteSubscription.autoDownload))
-					{
+					subscription.disabled = remoteSubscription.disabled;
+					if (subscription instanceof DownloadableSubscription)
 						subscription.title = remoteSubscription.title;
-						subscription.autoDownload = remoteSubscription.autoDownload;
-						FilterStorage.triggerObservers("subscriptions updateinfo", [subscription]);
-					}
 				}
 			}
 			else if (!trackerInstance.didSubscriptionChange(remoteSubscription))
@@ -265,7 +253,6 @@ ABPStore.prototype =
 				if (subscription instanceof DownloadableSubscription)
 				{
 					subscription.title = remoteSubscription.title;
-					subscription.autoDownload = remoteSubscription.autoDownload;
 					FilterStorage.addSubscription(subscription);
 					Synchronizer.execute(subscription);
 				}
@@ -299,11 +286,8 @@ ABPStore.prototype =
 				if (filter.subscriptions.some(function(subscription) subscription instanceof SpecialSubscription))
 				{
 					// Filter might have been changed remotely
-					if (filter instanceof ActiveFilter && filter.disabled != remoteFilter.disabled)
-					{
+					if (filter instanceof ActiveFilter)
 						filter.disabled = remoteFilter.disabled;
-						FilterStorage.triggerObservers(filter.disabled ? "filters disable" : "filters enable", [filter]);
-					}
 				}
 				else
 				{
@@ -386,12 +370,12 @@ ABPTracker.prototype =
 
 	startTracking: function()
 	{
-		FilterStorage.addObserver(this.onChange);
+		FilterNotifier.addListener(this.onChange);
 	},
 
 	stopTracking: function()
 	{
-		FilterStorage.removeObserver(this.onChange);
+		FilterNotifier.removeListener(this.onChange);
 	},
 
 	clearPrivateChanges: function()
@@ -420,42 +404,37 @@ ABPTracker.prototype =
 		return ("filter " + filter.text) in this.privateTracker.changedIDs;
 	},
 
-	onChange: function(action, items)
+	onChange: function(action, item)
 	{
-		for each (let item in items)
+		switch (action)
 		{
-			switch (action)
-			{
-				case "subscriptions update":
-					if ("oldSubscription" in item)
-					{
-						// Subscription moved to a new address
-						this.addPrivateChange("subscription " + item.url);
-						this.addPrivateChange("subscription " + item.oldSubscription.url);
-					}
-					else if (item instanceof SpecialSubscription)
-					{
-						// User's filters changed via Preferences window
-						for each (let filter in item.filters)
-							this.addPrivateChange("filter " + filter.text);
-						for each (let filter in item.oldFilters)
-							this.addPrivateChange("filter " + filter.text);
-					}
-					break;
-				case "subscriptions add":
-				case "subscriptions remove":
-				case "subscriptions enable":
-				case "subscriptions disable":
-				case "subscriptions updateinfo":
+			case "subscription.updated":
+				if ("oldSubscription" in item)
+				{
+					// Subscription moved to a new address
 					this.addPrivateChange("subscription " + item.url);
-					break;
-				case "filters add":
-				case "filters remove":
-				case "filters enable":
-				case "filters disable":
-					this.addPrivateChange("filter " + item.text);
-					break;
-			}
+					this.addPrivateChange("subscription " + item.oldSubscription.url);
+				}
+				else if (item instanceof SpecialSubscription)
+				{
+					// User's filters changed via Preferences window
+					for each (let filter in item.filters)
+						this.addPrivateChange("filter " + filter.text);
+					for each (let filter in item.oldFilters)
+						this.addPrivateChange("filter " + filter.text);
+				}
+				break;
+			case "subscription.added":
+			case "subscription.removed":
+			case "subscription.disabled":
+			case "subscription.title":
+				this.addPrivateChange("subscription " + item.url);
+				break;
+			case "filter.added":
+			case "filter.removed":
+			case "filter.disabled":
+				this.addPrivateChange("filter " + item.text);
+				break;
 		}
 	}
 };
diff --git a/modules/Synchronizer.jsm b/modules/Synchronizer.jsm
index 296e374..8b8621c 100644
--- a/modules/Synchronizer.jsm
+++ b/modules/Synchronizer.jsm
@@ -39,6 +39,7 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 Cu.import(baseURL.spec + "Utils.jsm");
 Cu.import(baseURL.spec + "FilterStorage.jsm");
+Cu.import(baseURL.spec + "FilterNotifier.jsm");
 Cu.import(baseURL.spec + "FilterClasses.jsm");
 Cu.import(baseURL.spec + "SubscriptionClasses.jsm");
 Cu.import(baseURL.spec + "Prefs.jsm");
@@ -279,7 +280,7 @@ var Synchronizer =
 		if (subscription.lastModified && !forceDownload)
 			request.setRequestHeader("If-Modified-Since", subscription.lastModified);
 
-		request.onerror = function(ev)
+		request.addEventListener("error", function(ev)
 		{
 			delete executing[url];
 			try {
@@ -287,9 +288,9 @@ var Synchronizer =
 			} catch (e) {}
 
 			errorCallback("synchronize_connection_error");
-		};
+		}, false);
 
-		request.onload = function(ev)
+		request.addEventListener("load", function(ev)
 		{
 			delete executing[url];
 			try {
@@ -336,8 +337,6 @@ var Synchronizer =
 					if (interval > expirationInterval)
 						expirationInterval = interval;
 				}
-				if (isBaseLocation && filter instanceof CommentFilter && /\bRedirect(?:\s*:\s*|\s+to\s+|\s+)(\S+)/i.test(filter.text))
-					subscription.nextURL = RegExp.$1;
 			}
 
 			// Expiration interval should be within allowed range
@@ -349,6 +348,37 @@ var Synchronizer =
 			// Soft expiration: use random interval factor between 0.8 and 1.2
 			subscription.softExpiration = (subscription.lastDownload + Math.round(expirationInterval * (Math.random() * 0.4 + 0.8)));
 
+			// Process some special filters and remove them
+			if (newFilters)
+			{
+				for (let i = 0; i < newFilters.length; i++)
+				{
+					let filter = newFilters[i];
+					if (filter instanceof CommentFilter && /^!\s*(\w+)\s*:\s*(.*)/.test(filter.text))
+					{
+						let keyword = RegExp.$1.toLowerCase();
+						let value = RegExp.$2;
+						let known = true;
+						if (keyword == "redirect")
+						{
+							if (isBaseLocation && value != url)
+								subscription.nextURL = value;
+						}
+						else if (keyword == "homepage")
+						{
+							let uri = Utils.makeURI(value);
+							if (uri && (uri.scheme == "http" || uri.scheme == "https"))
+								subscription.homepage = uri.spec;
+						}
+						else
+							known = false;
+
+						if (known)
+							newFilters.splice(i--, 1);
+					}
+				}
+			}
+
 			if (isBaseLocation && newURL && newURL != url)
 			{
 				let listed = (subscription.url in FilterStorage.knownSubscriptions);
@@ -374,15 +404,11 @@ var Synchronizer =
 
 			if (newFilters)
 				FilterStorage.updateSubscriptionFilters(subscription, newFilters);
-			else
-				FilterStorage.triggerObservers("subscriptions updateinfo", [subscription]);
 			delete subscription.oldSubscription;
-
-			FilterStorage.saveToDisk();
-		};
+		}, false);
 
 		executing[url] = true;
-		FilterStorage.triggerObservers("subscriptions updateinfo", [subscription]);
+		FilterNotifier.triggerListeners("subscription.downloadStatus", subscription);
 
 		try
 		{
@@ -403,11 +429,10 @@ var Synchronizer =
  */
 function checkSubscriptions()
 {
-	let hadDownloads = false;
 	let time = Math.round(Date.now() / MILLISECONDS_IN_SECOND);
 	for each (let subscription in FilterStorage.subscriptions)
 	{
-		if (!(subscription instanceof DownloadableSubscription) || !subscription.autoDownload)
+		if (!(subscription instanceof DownloadableSubscription))
 			continue;
 
 		if (subscription.lastCheck && time - subscription.lastCheck > MAX_ABSENSE_INTERVAL)
@@ -429,19 +454,9 @@ function checkSubscriptions()
 		if (subscription.softExpiration > time && subscription.expires > time)
 			continue;
 
-		// Do not retry downloads more often than synchronizationinterval pref dictates
-		let interval = (time - subscription.lastDownload) / SECONDS_IN_HOUR;
-		if (interval >= Prefs.synchronizationinterval)
-		{
-			hadDownloads = true;
+		// Do not retry downloads more often than MIN_EXPIRATION_INTERVAL
+		if (time - subscription.lastDownload >= MIN_EXPIRATION_INTERVAL)
 			Synchronizer.execute(subscription, false);
-		}
-	}
-
-	if (!hadDownloads)
-	{
-		// We didn't kick off any downloads - still save changes to lastCheck & Co.
-		FilterStorage.saveToDisk();
 	}
 }
 
@@ -558,21 +573,26 @@ function setError(subscription, error, channelStatus, responseStatus, downloadUR
 			request.channel.loadFlags = request.channel.loadFlags |
 																	request.channel.INHIBIT_CACHING |
 																	request.channel.VALIDATE_ALWAYS;
-			request.onload = function(ev)
+			request.addEventListener("load", function(ev)
 			{
+				if (!(subscription.url in FilterStorage.knownSubscriptions))
+					return;
+
 				if (/^301\s+(\S+)/.test(request.responseText))  // Moved permanently    
 					subscription.nextURL = RegExp.$1;
 				else if (/^410\b/.test(request.responseText))   // Gone
 				{
-					subscription.autoDownload = false;
-					FilterStorage.triggerObservers("subscriptions updateinfo", [subscription]);
+					let data = "[Adblock]\n" + subscription.filters.map(function(f) f.text).join("\n");
+					let url = "data:text/plain," + encodeURIComponent(data);
+					let newSubscription = Subscription.fromURL(url);
+					newSubscription.title = subscription.title;
+					newSubscription.disabled = subscription.disabled;
+					FilterStorage.removeSubscription(subscription);
+					FilterStorage.addSubscription(newSubscription);
+					Synchronizer.execute(newSubscription);
 				}
-				FilterStorage.saveToDisk();
-			}
+			}, false);
 			request.send(null);
 		}
 	}
-
-	FilterStorage.triggerObservers("subscriptions updateinfo", [subscription]);
-	FilterStorage.saveToDisk();
 }
diff --git a/modules/Utils.jsm b/modules/Utils.jsm
index a214c84..b670d00 100644
--- a/modules/Utils.jsm
+++ b/modules/Utils.jsm
@@ -26,7 +26,7 @@
  * @fileOverview Module containing a bunch of utility functions.
  */
 
-var EXPORTED_SYMBOLS = ["Utils", "Cache", "TraceableChannelCleanup"];
+var EXPORTED_SYMBOLS = ["Utils", "Cache"];
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
@@ -56,7 +56,7 @@ var Utils =
 	 */
 	get addonVersion()
 	{
-		let version = "1.3.10";
+		let version = "2.0.1";
 		return (version[0] == "{" ? "99.9" : version);
 	},
 
@@ -65,7 +65,7 @@ var Utils =
 	 */
 	get addonBuild()
 	{
-		let build = "3154";
+		let build = "3352";
 		return (build[0] == "{" ? "" : build);
 	},
 
@@ -328,43 +328,24 @@ var Utils =
 	},
 
 	/**
-	 * Opens preferences dialog or focused already open dialog.
-	 * @param {String} location  (optional) filter suggestion
-	 * @param {Filter} filter    (optional) filter to be selected
+	 * Opens filter preferences dialog or focuses an already open dialog.
+	 * @param {Filter} [filter]  filter to be selected
 	 */
-	openSettingsDialog: function(location, filter)
+	openFiltersDialog: function(filter)
 	{
-		var dlg = Utils.windowMediator.getMostRecentWindow("abp:settings");
-		var func = function()
-		{
-			if (typeof location != "undefined")
-				dlg.setLocation(location);
-			if (typeof filter != "undefined")
-				dlg.selectFilter(filter);
-		}
-
+		var dlg = Utils.windowMediator.getMostRecentWindow("abp:filters");
 		if (dlg)
 		{
-			func();
-
 			try
 			{
 				dlg.focus();
 			}
 			catch (e) {}
-
-			if (Utils.windowMediator.getMostRecentWindow(null) != dlg)
-			{
-				// There must be some modal dialog open
-				dlg = Utils.windowMediator.getMostRecentWindow("abp:subscriptionSelection") || Utils.windowMediator.getMostRecentWindow("abp:about");
-				if (dlg)
-					dlg.focus();
-			}
+			dlg.SubscriptionActions.selectFilter(filter);
 		}
 		else
 		{
-			dlg = Utils.windowWatcher.openWindow(null, "chrome://adblockplus/content/ui/settings.xul", "_blank", "chrome,centerscreen,resizable,dialog=no", null);
-			dlg.addEventListener("post-load", func, false);
+			Utils.windowWatcher.openWindow(null, "chrome://adblockplus/content/ui/filters.xul", "_blank", "chrome,centerscreen,resizable,dialog=no", {wrappedJSObject: filter});
 		}
 	},
 
@@ -472,6 +453,65 @@ var Utils =
 	},
 
 	/**
+	 * Checks whether any of the prefixes listed match the application locale,
+	 * returns matching prefix if any.
+	 */
+	checkLocalePrefixMatch: function(/**String*/ prefixes) /**String*/
+	{
+		if (!prefixes)
+			return null;
+
+		let appLocale = Utils.appLocale;
+		for each (let prefix in prefixes.split(/,/))
+			if (new RegExp("^" + prefix + "\\b").test(appLocale))
+				return prefix;
+
+		return null;
+	},
+
+	/**
+	 * Chooses the best filter subscription for user's language.
+	 */
+	chooseFilterSubscription: function(/**NodeList*/ subscriptions) /**Node*/
+	{
+		let selectedItem = null;
+		let selectedPrefix = null;
+		let matchCount = 0;
+		for (let i = 0; i < subscriptions.length; i++)
+		{
+			let subscription = subscriptions[i];
+			if (!selectedItem)
+				selectedItem = subscription;
+
+			let prefix = Utils.checkLocalePrefixMatch(subscription.getAttribute("prefixes"));
+			if (prefix)
+			{
+				if (!selectedPrefix || selectedPrefix.length < prefix.length)
+				{
+					selectedItem = subscription;
+					selectedPrefix = prefix;
+					matchCount = 1;
+				}
+				else if (selectedPrefix && selectedPrefix.length == prefix.length)
+				{
+					matchCount++;
+
+					// If multiple items have a matching prefix of the same length:
+					// Select one of the items randomly, probability should be the same
+					// for all items. So we replace the previous match here with
+					// probability 1/N (N being the number of matches).
+					if (Math.random() * matchCount < 1)
+					{
+						selectedItem = subscription;
+						selectedPrefix = prefix;
+					}
+				}
+			}
+		}
+		return selectedItem;
+	},
+
+	/**
 	 * Saves sidebar state before detaching/reattaching
 	 */
 	setParams: function(params)
@@ -547,6 +587,73 @@ var Utils =
 			else
 				node.className += " " + Utils.collapsedClass;
 		}
+	},
+
+	/**
+	 * Verifies RSA signature. The public key and signature should be base64-encoded.
+	 */
+	verifySignature: function(/**String*/ key, /**String*/ signature, /**String*/ data) /**Boolean*/
+	{
+		if (!Utils.crypto)
+			return false;
+
+		// Maybe we did the same check recently, look it up in the cache
+		if (!("_cache" in Utils.verifySignature))
+			Utils.verifySignature._cache = new Cache(5);
+		let cache = Utils.verifySignature._cache;
+		let cacheKey = key + " " + signature + " " + data;
+		if (cacheKey in cache.data)
+			return cache.data[cacheKey];
+		else
+			cache.add(cacheKey, false);
+
+		let keyInfo, pubKey, context;
+		try
+		{
+			let keyItem = Utils.crypto.getSECItem(atob(key));
+			keyInfo = Utils.crypto.SECKEY_DecodeDERSubjectPublicKeyInfo(keyItem.address());
+			if (keyInfo.isNull())
+				throw new Error("SECKEY_DecodeDERSubjectPublicKeyInfo failed");
+
+			pubKey = Utils.crypto.SECKEY_ExtractPublicKey(keyInfo);
+			if (pubKey.isNull())
+				throw new Error("SECKEY_ExtractPublicKey failed");
+
+			let signatureItem = Utils.crypto.getSECItem(atob(signature));
+
+			context = Utils.crypto.VFY_CreateContext(pubKey, signatureItem.address(), Utils.crypto.SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE, null);
+			if (context.isNull())
+				return false;   // This could happen if the signature is invalid
+
+			let error = Utils.crypto.VFY_Begin(context);
+			if (error < 0)
+				throw new Error("VFY_Begin failed");
+
+			error = Utils.crypto.VFY_Update(context, data, data.length);
+			if (error < 0)
+				throw new Error("VFY_Update failed");
+
+			error = Utils.crypto.VFY_End(context);
+			if (error < 0)
+				return false;
+
+			cache.data[cacheKey] = true;
+			return true;
+		}
+		catch (e)
+		{
+			Cu.reportError(e);
+			return false;
+		}
+		finally
+		{
+			if (keyInfo && !keyInfo.isNull())
+				Utils.crypto.SECKEY_DestroySubjectPublicKeyInfo(keyInfo);
+			if (pubKey && !pubKey.isNull())
+				Utils.crypto.SECKEY_DestroyPublicKey(pubKey);
+			if (context && !context.isNull())
+				Utils.crypto.VFY_DestroyContext(context, true);
+		}
 	}
 };
 
@@ -614,93 +721,6 @@ Cache.prototype =
 	}
 }
 
-/**
- * An object that will attach itself as a listener to a traceable channel and
- * remove Adblock Plus data once that channel is done.
- * @constructor
- */
-function TraceableChannelCleanup(request)
-{
-	// This has to run asynchronously due to bug 646370, nsHttpChannel triggers
-	// http-on-modify-request observers before setting listener!
-	Utils.runAsync(this.attach, this, request);
-}
-TraceableChannelCleanup.prototype =
-{
-	originalListener: null,
-
-	attach: function(request)
-	{
-		if (request.isPending())
-		{
-			try
-			{
-				this.originalListener = request.setNewListener(this);
-			}
-			catch (e if e.result == Cr.NS_ERROR_NOT_IMPLEMENTED)
-			{
-				// Bug 646373 :-( Remove data even though this means that we won't be
-				// able to block redirects.
-				this.cleanup(request);
-			}
-		}
-		else
-			this.cleanup(request);
-	},
-
-	cleanup: function(request)
-	{
-		try
-		{
-			if (request instanceof Ci.nsIWritablePropertyBag)
-				request.deleteProperty("abpRequestData");
-		}
-		catch(e) {} // Ignore errors due to missing property
-	},
-
-	onStartRequest: function(request, context)
-	{
-		try
-		{
-			this.originalListener.onStartRequest(request, context);
-		}
-		catch (e if e instanceof Ci.nsIException)
-		{
-			request.cancel(e.result);
-		}
-	},
-
-	onDataAvailable: function(request, context, inputStream, offset, count)
-	{
-		try
-		{
-			this.originalListener.onDataAvailable(request, context, inputStream, offset, count);
-		}
-		catch (e if e instanceof Ci.nsIException)
-		{
-			request.cancel(e.result);
-		}
-	},
-
-	onStopRequest: function(request, context, statusCode)
-	{
-		try
-		{
-			this.originalListener.onStopRequest(request, context, statusCode);
-		}
-		catch (e if e instanceof Ci.nsIException)
-		{
-			// No point cancelling the channel when it is done already
-		}
-		finally
-		{
-			this.cleanup(request);
-		}
-	},
-
-	QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener, Ci.nsIRequestObserver])
-}
-
 // Getters for common services, this should be replaced by Services.jsm in future
 
 XPCOMUtils.defineLazyServiceGetter(Utils, "observerService", "@mozilla.org/observer-service;1", "nsIObserverService");
@@ -722,6 +742,161 @@ XPCOMUtils.defineLazyServiceGetter(Utils, "systemPrincipal", "@mozilla.org/syste
 XPCOMUtils.defineLazyServiceGetter(Utils, "dateFormatter", "@mozilla.org/intl/scriptabledateformat;1", "nsIScriptableDateFormat");
 XPCOMUtils.defineLazyServiceGetter(Utils, "childMessageManager", "@mozilla.org/childprocessmessagemanager;1", "nsISyncMessageSender");
 XPCOMUtils.defineLazyServiceGetter(Utils, "parentMessageManager", "@mozilla.org/parentprocessmessagemanager;1", "nsIFrameMessageManager");
+XPCOMUtils.defineLazyServiceGetter(Utils, "httpProtocol", "@mozilla.org/network/protocol;1?name=http", "nsIHttpProtocolHandler");
+XPCOMUtils.defineLazyServiceGetter(Utils, "clipboard", "@mozilla.org/widget/clipboard;1", "nsIClipboard");
+XPCOMUtils.defineLazyServiceGetter(Utils, "clipboardHelper", "@mozilla.org/widget/clipboardhelper;1", "nsIClipboardHelper");
+XPCOMUtils.defineLazyGetter(Utils, "crypto", function()
+{
+	try
+	{
+		let ctypes = Components.utils.import("resource://gre/modules/ctypes.jsm", null).ctypes;
+
+		let nsslib = ctypes.open(ctypes.libraryName("nss3"));
+
+		let result = {};
+
+		// seccomon.h
+		result.siUTF8String = 14;
+
+		// secoidt.h
+		result.SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE = 15;
+
+		// The following types are opaque to us
+		result.VFYContext = ctypes.void_t;
+		result.SECKEYPublicKey = ctypes.void_t;
+		result.CERTSubjectPublicKeyInfo = ctypes.void_t;
+
+		/*
+		 * seccomon.h
+		 * struct SECItemStr {
+		 *   SECItemType type;
+		 *   unsigned char *data;
+		 *   unsigned int len;
+		 * };
+		 */
+		result.SECItem = ctypes.StructType("SECItem", [
+			{type: ctypes.int},
+			{data: ctypes.unsigned_char.ptr},
+			{len: ctypes.int}
+		]);
+
+		/*
+		 * cryptohi.h
+		 * extern VFYContext *VFY_CreateContext(SECKEYPublicKey *key, SECItem *sig,
+		 *                                      SECOidTag sigAlg, void *wincx);
+		 */
+		result.VFY_CreateContext = nsslib.declare(
+			"VFY_CreateContext",
+			ctypes.default_abi, result.VFYContext.ptr,
+			result.SECKEYPublicKey.ptr,
+			result.SECItem.ptr,
+			ctypes.int,
+			ctypes.voidptr_t
+		);
+
+		/*
+		 * cryptohi.h
+		 * extern void VFY_DestroyContext(VFYContext *cx, PRBool freeit);
+		 */
+		result.VFY_DestroyContext = nsslib.declare(
+			"VFY_DestroyContext",
+			ctypes.default_abi, ctypes.void_t,
+			result.VFYContext.ptr,
+			ctypes.bool
+		);
+
+		/*
+		 * cryptohi.h
+		 * extern SECStatus VFY_Begin(VFYContext *cx);
+		 */
+		result.VFY_Begin = nsslib.declare("VFY_Begin",
+			ctypes.default_abi, ctypes.int,
+			result.VFYContext.ptr
+		);
+
+		/*
+		 * cryptohi.h
+		 * extern SECStatus VFY_Update(VFYContext *cx, const unsigned char *input,
+		 *                             unsigned int inputLen);
+		 */
+		result.VFY_Update = nsslib.declare(
+			"VFY_Update",
+			ctypes.default_abi, ctypes.int,
+			result.VFYContext.ptr,
+			ctypes.unsigned_char.ptr,
+			ctypes.int
+		);
+
+		/*
+		 * cryptohi.h
+		 * extern SECStatus VFY_End(VFYContext *cx);
+		 */
+		result.VFY_End = nsslib.declare(
+			"VFY_End",
+			ctypes.default_abi, ctypes.int,
+			result.VFYContext.ptr
+		);
+
+		/*
+		 * keyhi.h
+		 * extern CERTSubjectPublicKeyInfo *
+		 * SECKEY_DecodeDERSubjectPublicKeyInfo(SECItem *spkider);
+		 */
+		result.SECKEY_DecodeDERSubjectPublicKeyInfo = nsslib.declare(
+			"SECKEY_DecodeDERSubjectPublicKeyInfo",
+			ctypes.default_abi, result.CERTSubjectPublicKeyInfo.ptr,
+			result.SECItem.ptr
+		);
+
+		/*
+		 * keyhi.h
+		 * extern void SECKEY_DestroySubjectPublicKeyInfo(CERTSubjectPublicKeyInfo *spki);
+		 */
+		result.SECKEY_DestroySubjectPublicKeyInfo = nsslib.declare(
+			"SECKEY_DestroySubjectPublicKeyInfo",
+			ctypes.default_abi, ctypes.void_t,
+			result.CERTSubjectPublicKeyInfo.ptr
+		);
+
+		/*
+		 * keyhi.h
+		 * extern SECKEYPublicKey *
+		 * SECKEY_ExtractPublicKey(CERTSubjectPublicKeyInfo *);
+		 */
+		result.SECKEY_ExtractPublicKey = nsslib.declare(
+			"SECKEY_ExtractPublicKey",
+			ctypes.default_abi, result.SECKEYPublicKey.ptr,
+			result.CERTSubjectPublicKeyInfo.ptr
+		);
+
+		/*
+		 * keyhi.h
+		 * extern void SECKEY_DestroyPublicKey(SECKEYPublicKey *key);
+		 */
+		result.SECKEY_DestroyPublicKey = nsslib.declare(
+			"SECKEY_DestroyPublicKey",
+			ctypes.default_abi, ctypes.void_t,
+			result.SECKEYPublicKey.ptr
+		);
+
+		// Convenience method
+		result.getSECItem = function(data)
+		{
+			var dataArray = new ctypes.ArrayType(ctypes.unsigned_char, data.length)();
+			for (let i = 0; i < data.length; i++)
+				dataArray[i] = data.charCodeAt(i) % 256;
+			return new result.SECItem(result.siUTF8String, dataArray, dataArray.length);
+		};
+
+		return result;
+	}
+	catch (e)
+	{
+		Cu.reportError(e);
+		// Expected, ctypes isn't supported in Gecko 1.9.2
+		return null;
+	}
+});
 
 if ("@mozilla.org/messenger/headerparser;1" in Cc)
 	XPCOMUtils.defineLazyServiceGetter(Utils, "headerParser", "@mozilla.org/messenger/headerparser;1", "nsIMsgHeaderParser");

-- 
Advertisement filter extension for the Iceweasel/Iceape



More information about the Pkg-mozext-commits mailing list