summaryrefslogtreecommitdiff
path: root/src/common/locale.js
diff options
context:
space:
mode:
authorhackademix2018-07-01 01:01:23 +0200
committerhackademix2018-07-01 01:01:23 +0200
commiteceae7187a6f0e9510bc1165f6977256b87f490f (patch)
treed943f1ec73c09efa70954dcedb55eac82a726148 /src/common/locale.js
downloadnoscript-eceae7187a6f0e9510bc1165f6977256b87f490f.tar.gz
noscript-eceae7187a6f0e9510bc1165f6977256b87f490f.tar.xz
noscript-eceae7187a6f0e9510bc1165f6977256b87f490f.zip
Initial commit starting at version 10.1.8.3rc4.
Diffstat (limited to 'src/common/locale.js')
-rw-r--r--src/common/locale.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/common/locale.js b/src/common/locale.js
new file mode 100644
index 0000000..60498a2
--- /dev/null
+++ b/src/common/locale.js
@@ -0,0 +1,45 @@
+'use strict';
+var _ = browser.i18n.getMessage;
+var i18n = (() => {
+ var i18n = {
+ // derived from http://github.com/piroor/webextensions-lib-l10n
+
+ updateString(aString) {
+ return aString.replace(/__MSG_(.+?)__/g, function(aMatched) {
+ var key = aMatched.slice(6, -2);
+ return _(key);
+ });
+ },
+ updateDOM(rootNode = document) {
+ var texts = document.evaluate(
+ 'descendant::text()[contains(self::text(), "__MSG_")]',
+ rootNode,
+ null,
+ XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
+ null
+ );
+ for (let i = 0, maxi = texts.snapshotLength; i < maxi; i++)
+ {
+ let text = texts.snapshotItem(i);
+ text.nodeValue = this.updateString(text.nodeValue);
+ }
+
+ var attributes = document.evaluate(
+ 'descendant::*/attribute::*[contains(., "__MSG_")]',
+ rootNode,
+ null,
+ XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
+ null
+ );
+ for (let i = 0, maxi = attributes.snapshotLength; i < maxi; i++)
+ {
+ let attribute = attributes.snapshotItem(i);
+ debug('apply', attribute);
+ attribute.value = this.updateString(attribute.value);
+ }
+ }
+ };
+
+ document.addEventListener('DOMContentLoaded', e => i18n.updateDOM());
+ return i18n;
+})()