diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2018-09-13 20:39:48 -0400 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2018-09-13 21:02:13 -0400 |
commit | d26b319fd6f98517cc3421f10bf18698b953e4d2 (patch) | |
tree | bc70c4e472a2eaf514d411dba5067d530e5bbea9 /data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js | |
parent | c3b304c51a3386ea09527a479a883253ea35243a (diff) |
Updated extensions list for v60
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 | 122 |
1 files changed, 0 insertions, 122 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 deleted file mode 100644 index a21fa24..0000000 --- a/data/extensions/spyblock@gnu.org/chrome/content/ui/i18n.js +++ /dev/null @@ -1,122 +0,0 @@ -/* - * This file is part of Adblock Plus <https://adblockplus.org/>, - * Copyright (C) 2006-2017 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 - * published by the Free Software Foundation. - * - * Adblock Plus is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * 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"; - -// This variable should no longer be necessary once options.js in Chrome -// accesses ext.i18n directly. -let {i18n} = ext; - -// 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( - { - type: "app.get", - what: "localeInfo" - }, - (localeInfo) => - { - 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. -ext.i18n.setElementText = function(element, stringName, args) -{ - function processString(str, currentElement) - { - let match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(str); - if (match) - { - processString(match[1], currentElement); - - let e = document.createElement(match[2]); - processString(match[3], e); - currentElement.appendChild(e); - - processString(match[4], currentElement); - } - else - currentElement.appendChild(document.createTextNode(str)); - } - - while (element.lastChild) - element.removeChild(element.lastChild); - processString(ext.i18n.getMessage(stringName, args), element); -}; - -// Loads i18n strings -function loadI18nStrings() -{ - function addI18nStringsToElements(containerElement) - { - let elements = containerElement.querySelectorAll("[class^='i18n_']"); - for (let node of elements) - { - let args = JSON.parse("[" + node.textContent + "]"); - if (args.length == 0) - args = null; - - let {className} = node; - if (className instanceof SVGAnimatedString) - className = className.animVal; - let stringName = className.split(/\s/)[0].substring(5); - - ext.i18n.setElementText(node, stringName, args); - } - } - addI18nStringsToElements(document); - // Content of Template is not rendered on runtime so we need to add - // translation strings for each Template documentFragment content - // individually. - for (let template of document.querySelectorAll("template")) - addI18nStringsToElements(template.content); -} - -// Provides a more readable string of the current date and time -function i18nTimeDateStrings(when) -{ - let d = new Date(when); - let timeString = d.toLocaleTimeString(); - - let now = new Date(); - if (d.toDateString() == now.toDateString()) - return [timeString]; - return [timeString, d.toLocaleDateString()]; -} - -// Formats date string to ["YYYY-MM-DD", "mm:ss"] format -function i18nFormatDateTime(when) -{ - let date = new Date(when); - let dateParts = [date.getFullYear(), date.getMonth() + 1, date.getDate(), - date.getHours(), date.getMinutes()]; - - dateParts = dateParts.map( - (datePart) => datePart < 10 ? "0" + datePart : datePart - ); - - return [dateParts.splice(0, 3).join("-"), dateParts.join(":")]; -} - -// Fill in the strings as soon as possible -window.addEventListener("DOMContentLoaded", loadI18nStrings, true); |