| Index: i18n.js |
| =================================================================== |
| --- a/i18n.js |
| +++ b/i18n.js |
| @@ -12,61 +12,59 @@ |
| * 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) |
| +ext.i18n = { |
| + // 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. |
| + setElementText(element, stringName, args) |
| { |
| - let match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(str); |
| - if (match) |
| + function processString(str, currentElement) |
| { |
| - processString(match[1], 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); |
| + let e = document.createElement(match[2]); |
| + processString(match[3], e); |
| + currentElement.appendChild(e); |
| - processString(match[4], currentElement); |
| + processString(match[4], currentElement); |
| + } |
| + else |
| + currentElement.appendChild(document.createTextNode(str)); |
| } |
| - else |
| - currentElement.appendChild(document.createTextNode(str)); |
| + |
| + while (element.lastChild) |
| + element.removeChild(element.lastChild); |
| + processString(chrome.i18n.getMessage(stringName, args), element); |
| } |
| - |
| - 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_']"); |