diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2015-07-13 22:52:06 -0500 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2015-07-13 22:52:06 -0500 |
commit | 9cb91f8a48f9467e448f88984c20b3429e8a2510 (patch) | |
tree | 05104ee593dade85e0873615eff0ee0369361210 /data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js | |
parent | 58f127c1d5f8c89b9e55803701f734756d1cfa2a (diff) |
Spyblock updated to 2.6.9.0 from upstream changes
Diffstat (limited to 'data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js')
-rw-r--r-- | data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js | 93 |
1 files changed, 21 insertions, 72 deletions
diff --git a/data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js b/data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js index 8366268..9d380b7 100644 --- a/data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js +++ b/data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js @@ -1,6 +1,6 @@ /* - * This file is part of Adblock Plus <http://adblockplus.org/>, - * Copyright (C) 2006-2014 Eyeo GmbH + * This file is part of Adblock Plus <https://adblockplus.org/>, + * Copyright (C) 2006-2015 Eyeo GmbH * * Adblock Plus is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -15,81 +15,30 @@ * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. */ -var i18n; +// This variable should no longer be necessary once options.js in Chrome +// accesses ext.i18n directly. +var i18n = ext.i18n; -if (typeof ext != "undefined") - i18n = ext.i18n; -else if (typeof chrome != "undefined") - // TODO: This check only exist for backwards compatibility, while the Safari - // port isn't merged into the adblockpluschrome repo. So this branch should - // be removed when the Safari port was merged. - i18n = chrome.i18n; -else -{ - // Using Firefox' approach on i18n instead - - // Randomize URI to work around bug 719376 - var pageName = location.pathname.replace(/.*\//, '').replace(/\..*?$/, ''); - var stringBundle = Services.strings.createBundle("chrome://adblockplus/locale/" + pageName + - ".properties?" + Math.random()); - - function getI18nMessage(key) +// Getting UI locale cannot be done synchronously on Firefox, +// requires messaging the background page. For Chrome and Safari, +// we could get the UI locale here, but would need to duplicate +// the logic implemented in Utils.appLocale. +ext.backgroundPage.sendMessage( { - return { - "message": stringBundle.GetStringFromName(key) - }; - } - - i18n = (function() + type: "app.get", + what: "localeInfo" + }, + function(localeInfo) { - function getText(message, args) - { - var text = message.message; - var placeholders = message.placeholders; - - if (!args || !placeholders) - return text; - - for (var key in placeholders) - { - var content = placeholders[key].content; - if (!content) - continue; - - var index = parseInt(content.slice(1), 10); - if (isNaN(index)) - continue; - - var replacement = args[index - 1]; - if (typeof replacement === "undefined") - continue; - - text = text.split("$" + key + "$").join(replacement); - } - return text; - } - - return { - getMessage: function(key, args) - { - try{ - var message = getI18nMessage(key); - return getText(message, args); - } - catch(e) - { - Cu.reportError(e); - return "Missing translation: " + key; - } - } - }; - })(); -} + document.documentElement.lang = localeInfo.locale; + document.documentElement.dir = localeInfo.bidiDir; + } +); // Inserts i18n strings into matching elements. Any inner HTML already in the element is // parsed as JSON and used as parameters to substitute into placeholders in the i18n // message. -i18n.setElementText = function(element, stringName, arguments) +ext.i18n.setElementText = function(element, stringName, arguments) { function processString(str, element) { @@ -110,7 +59,7 @@ i18n.setElementText = function(element, stringName, arguments) while (element.lastChild) element.removeChild(element.lastChild); - processString(i18n.getMessage(stringName, arguments), element); + processString(ext.i18n.getMessage(stringName, arguments), element); } // Loads i18n strings @@ -129,7 +78,7 @@ function loadI18nStrings() className = className.animVal; var stringName = className.split(/\s/)[0].substring(5); - i18n.setElementText(node, stringName, arguments); + ext.i18n.setElementText(node, stringName, arguments); } } |