diff --git a/chrome/content/i18n.js b/chrome/content/i18n.js
new file mode 100644
index 000000000..7eb641496
--- /dev/null
+++ b/chrome/content/i18n.js
@@ -0,0 +1,49 @@
+var i18n = {
+ updateString(string) {
+ let re = new RegExp(this.keyPrefix + "(.+?)__", "g");
+ return string.replace(re, matched => {
+ const key = matched.slice(this.keyPrefix.length, -2);
+ let rv = this.extension
+ ? this.extension.localeData.localizeMessage(key)
+ : messenger.i18n.getMessage(key);
+ return rv || matched;
+ });
+ },
+
+ updateSubtree(node) {
+ const texts = document.evaluate(
+ 'descendant::text()[contains(self::text(), "' + this.keyPrefix + '")]',
+ node,
+ null,
+ XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
+ null
+ );
+ for (let i = 0, maxi = texts.snapshotLength; i < maxi; i++) {
+ const text = texts.snapshotItem(i);
+ if (text.nodeValue.includes(this.keyPrefix)) text.nodeValue = this.updateString(text.nodeValue);
+ }
+
+ const attributes = document.evaluate(
+ 'descendant::*/attribute::*[contains(., "' + this.keyPrefix + '")]',
+ node,
+ null,
+ XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
+ null
+ );
+ for (let i = 0, maxi = attributes.snapshotLength; i < maxi; i++) {
+ const attribute = attributes.snapshotItem(i);
+ if (attribute.value.includes(this.keyPrefix)) attribute.value = this.updateString(attribute.value);
+ }
+ },
+
+ updateDocument(options = {}) {
+ this.extension = null;
+ this.keyPrefix = "__MSG_";
+ if (options) {
+ if (options.extension) this.extension = options.extension;
+ if (options.keyPrefix) this.keyPrefix = options.keyPrefix;
+ }
+ this.updateSubtree(document);
+ }
+};
+
diff --git a/chrome/content/scripts/qf-filterlist.js b/chrome/content/scripts/qf-filterlist.js
index 457d93322..36e133939 100644
--- a/chrome/content/scripts/qf-filterlist.js
+++ b/chrome/content/scripts/qf-filterlist.js
@@ -1,3 +1,4 @@
+/* this module is obsolete */
var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
Services.scriptloader.loadSubScript("chrome://quickfolders/content/quickfolders.js", window, "UTF-8");
@@ -8,56 +9,15 @@ Services.scriptloader.loadSubScript("chrome://quickfolders/content/quickfolders-
Services.scriptloader.loadSubScript("chrome://quickfolders/content/quickfolders-filterList.js", window, "UTF-8");
Services.scriptloader.loadSubScript("chrome://quickfolders/content/overlayFilterList.js", window, "UTF-8");
+
function onLoad(activatedWhileWindowOpen) {
let layout = WL.injectCSS("chrome://quickfolders/content/filterList.css");
WL.injectElements(`
-
-
-
-
-
-
-
-
-
-
-
-
`, ["chrome://quickfolders/locale/overlay.dtd"]);
diff --git a/manifest.json b/manifest.json
index 040ab2948..bb56d8063 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,8 +2,8 @@
"author" : "Axel Grude",
"manifest_version" : 2,
"name" : "QuickFolders",
- "description" : "Bookmark your favorite mail folders in Thunderbird.",
- "version" : "5.0pre98",
+ "description" : "__MSG_extensionDescription__",
+ "version" : "5.0pre100",
"default_locale": "en",
"author": "Axel Grude, Klaus Buecher/opto",
"developer" : {
diff --git a/qf-background.js b/qf-background.js
index bd68bbb2b..cc10d4de0 100644
--- a/qf-background.js
+++ b/qf-background.js
@@ -67,14 +67,12 @@ async function main() {
/* not necessary in Tb78+ */
messenger.WindowListener.registerWindow("chrome://messenger/content/messenger.xul", "chrome/content/scripts/qf-messenger.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/messengercompose.xul", "chrome/content/scripts/qf-composer.js");
- messenger.WindowListener.registerWindow("chrome://messenger/content/FilterListDialog.xul", "chrome/content/scripts/qf-filterlist.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/SearchDialog.xul", "chrome/content/scripts/qf-searchDialog.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/customizeToolbar.xul", "chrome/content/scripts/qf-customizetoolbar.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/messageWindow.xul", "chrome/content/scripts/qf-messageWindow.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/messenger.xhtml", "chrome/content/scripts/qf-messenger.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/messengercompose.xhtml", "chrome/content/scripts/qf-composer.js");
- messenger.WindowListener.registerWindow("chrome://messenger/content/FilterListDialog.xhtml", "chrome/content/scripts/qf-filterlist.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/SearchDialog.xhtml", "chrome/content/scripts/qf-searchDialog.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/customizeToolbar.xhtml", "chrome/content/scripts/qf-customizetoolbar.js");
messenger.WindowListener.registerWindow("chrome://messenger/content/messageWindow.xhtml", "chrome/content/scripts/qf-messageWindow.js");
diff --git a/release-notes.html b/release-notes.html
index f711dfe68..08bf73397 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -1,4 +1,3 @@
-Starting from 0 again, as TbSync suggested.
I am currently paying somebody to migrate all my Add-on support sites away from the free host on mozdev.org, which is going to close operation end of June. To keep having support sites and ongoing development, please buy a license (the migration will cost around $500, so there are some expense I hope to recover from the user community).
diff --git a/revision.txt b/revision.txt
index 8d879f164..8867c5d92 100644
--- a/revision.txt
+++ b/revision.txt
@@ -1 +1 @@
-98
+100