Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: ext/common.js

Issue 29573083: Issue 5028 - Use browser namespace (Closed) Base URL: https://hg.adblockplus.org/adblockplusui/
Patch Set: Move i18n code into polyfill.js Created Oct. 11, 2017, 11:27 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« background.html ('K') | « devtools-panel.js ('k') | firstRun.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ext/common.js
===================================================================
--- a/ext/common.js
+++ b/ext/common.js
@@ -14,19 +14,16 @@
* You should have received a copy of the GNU General Public License
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
*/
"use strict";
(function()
{
- if (typeof chrome == "undefined")
- window.chrome = {};
-
if (typeof ext == "undefined")
window.ext = {};
function Page(source)
{
this._source = source;
}
Page.prototype =
@@ -72,126 +69,9 @@
},
removeListener(listener)
{
if ("_extWrapper" in listener)
window.removeEventListener("message", listener._extWrapper, false);
}
};
-
- /* I18n */
-
- let getLocaleCandidates = function(selectedLocale)
- {
- let candidates = [];
- let defaultLocale = "en-US";
-
- // e.g. "ja-jp-mac" -> "ja-JP", note that the part after the second
- // dash is dropped, since we only support language and region
- let parts = selectedLocale.split("-");
- let language = parts[0];
- let region = (parts[1] || "").toUpperCase();
-
- if (region)
- candidates.push(language + "-" + region);
-
- candidates.push(language);
-
- if (candidates.indexOf(defaultLocale) == -1)
- candidates.push(defaultLocale);
-
- return candidates;
- };
-
- let selectedLocale = window.navigator.language;
- let match = /[?&]locale=([\w-]+)/.exec(window.location.search);
- if (match)
- selectedLocale = match[1];
-
- let locales = getLocaleCandidates(selectedLocale);
- let catalog = Object.create(null);
- let catalogFile = window.location.pathname.replace(/.*\//, "")
- .replace(/\..*/, "") + ".json";
-
- let replacePlaceholder = function(text, placeholder, content)
- {
- return text.split("$" + placeholder + "$").join(content || "");
- };
-
- let parseMessage = function(rawMessage)
- {
- let text = rawMessage.message;
- let placeholders = [];
-
- for (let placeholder in rawMessage.placeholders)
- {
- let {content} = rawMessage.placeholders[placeholder];
-
- if (/^\$\d+$/.test(content))
- placeholders[parseInt(content.substr(1), 10) - 1] = placeholder;
- else
- text = replacePlaceholder(text, placeholder, content);
- }
-
- return [text, placeholders];
- };
-
- let readCatalog = function(locale, file)
- {
- let xhr = new XMLHttpRequest();
- xhr.open("GET", "locale/" + locale + "/" + file, false);
- xhr.overrideMimeType("text/plain");
-
- try
- {
- xhr.send();
- }
- catch (e)
- {
- return;
- }
-
- if (xhr.status != 200 && xhr.status != 0)
- return;
-
- let rawCatalog = JSON.parse(xhr.responseText);
- for (let msgId in rawCatalog)
- {
- if (!(msgId in catalog))
- catalog[msgId] = parseMessage(rawCatalog[msgId]);
- }
- };
-
- chrome.i18n = {
- getUILanguage()
- {
- return locales[0].replace(/_/g, "-");
- },
- getMessage(msgId, substitutions)
- {
- while (true)
- {
- let message = catalog[msgId];
- if (message)
- {
- let text = message[0];
- let placeholders = message[1];
-
- if (!(substitutions instanceof Array))
- substitutions = [substitutions];
-
- for (let i = 0; i < placeholders.length; i++)
- text = replacePlaceholder(text, placeholders[i], substitutions[i]);
-
- return text;
- }
-
- if (locales.length == 0)
- return "";
-
- let locale = locales.shift();
- readCatalog(locale, "common.json");
- readCatalog(locale, catalogFile);
- }
- }
- };
}());
« background.html ('K') | « devtools-panel.js ('k') | firstRun.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld