summaryrefslogtreecommitdiffstats
path: root/toolkit/jetpack/sdk/l10n/prefs.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-09 06:46:43 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-09 06:46:43 -0500
commitac46df8daea09899ce30dc8fd70986e258c746bf (patch)
tree2750d3125fc253fd5b0671e4bd268eff1fd97296 /toolkit/jetpack/sdk/l10n/prefs.js
parent8cecf8d5208f3945b35f879bba3015bb1a11bec6 (diff)
downloadUXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar.gz
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar.lz
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar.xz
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.zip
Move Add-on SDK source to toolkit/jetpack
Diffstat (limited to 'toolkit/jetpack/sdk/l10n/prefs.js')
-rw-r--r--toolkit/jetpack/sdk/l10n/prefs.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/toolkit/jetpack/sdk/l10n/prefs.js b/toolkit/jetpack/sdk/l10n/prefs.js
new file mode 100644
index 000000000..8ee26fc5b
--- /dev/null
+++ b/toolkit/jetpack/sdk/l10n/prefs.js
@@ -0,0 +1,51 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+const { on } = require("../system/events");
+const core = require("./core");
+const { id: jetpackId } = require('../self');
+
+const OPTIONS_DISPLAYED = "addon-options-displayed";
+
+function enable() {
+ on(OPTIONS_DISPLAYED, onOptionsDisplayed);
+}
+exports.enable = enable;
+
+function onOptionsDisplayed({ subject: document, data: addonId }) {
+ if (addonId !== jetpackId)
+ return;
+ localizeInlineOptions(document);
+}
+
+function localizeInlineOptions(document) {
+ let query = 'setting[data-jetpack-id="' + jetpackId + '"][pref-name], ' +
+ 'button[data-jetpack-id="' + jetpackId + '"][pref-name]';
+ let nodes = document.querySelectorAll(query);
+ for (let node of nodes) {
+ let name = node.getAttribute("pref-name");
+ if (node.tagName == "setting") {
+ let desc = core.get(name + "_description");
+ if (desc)
+ node.setAttribute("desc", desc);
+ let title = core.get(name + "_title");
+ if (title)
+ node.setAttribute("title", title);
+
+ for (let item of node.querySelectorAll("menuitem, radio")) {
+ let key = name + "_options." + item.getAttribute("label");
+ let label = core.get(key);
+ if (label)
+ item.setAttribute("label", label);
+ }
+ }
+ else if (node.tagName == "button") {
+ let label = core.get(name + "_label");
+ if (label)
+ node.setAttribute("label", label);
+ }
+ }
+}
+exports.localizeInlineOptions = localizeInlineOptions;