diff options
author | hackademix | 2019-07-25 22:15:40 +0200 |
---|---|---|
committer | hackademix | 2019-07-31 19:13:41 +0200 |
commit | 125a1a2937d77fab775647d5df6f78387bb8dc42 (patch) | |
tree | 98a4253c63ab0c4da35688fc0049d4678d4ea550 /src/content | |
parent | 6ef9b4e2325a497745db058dc4a846ab31fccd27 (diff) | |
download | noscript-125a1a2937d77fab775647d5df6f78387bb8dc42.tar.gz noscript-125a1a2937d77fab775647d5df6f78387bb8dc42.tar.xz noscript-125a1a2937d77fab775647d5df6f78387bb8dc42.zip |
Work-around for browser.i18n.getMessage() API in content scripts giving away browser's real locale (Tor issue #31287).
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/content.js | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/content/content.js b/src/content/content.js index dc493c2..e7fb331 100644 --- a/src/content/content.js +++ b/src/content/content.js @@ -1,6 +1,16 @@ 'use strict'; // debug = () => {}; // REL_ONLY -var _ = browser.i18n.getMessage; +function _(...args) { + let fakeLang = navigator.language === "en-US" && + browser.i18n.getUILanguage() !== "en-US"; + return (_ = (template, ...substitutions) => { + let [key, defTemplate] = template.split("|"); + return fakeLang + ? (defTemplate || key).replace(/\$([1-9])/g, + (m, p) => substitutions[parseInt(p) - 1] || "$" + p) + : browser.i18n.getMessage(template, ...substitutions); + })(...args); +} function createHTMLElement(name) { return document.createElementNS("http://www.w3.org/1999/xhtml", name); |