| Index: i18n.js |
| =================================================================== |
| --- a/i18n.js |
| +++ b/i18n.js |
| @@ -6,21 +6,25 @@ |
| // Loads and 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. |
| function loadI18nStrings() { |
| var nodes = document.querySelectorAll("[class^='i18n_']"); |
| for(var i = 0; i < nodes.length; i++) { |
| var arguments = JSON.parse("[" + nodes[i].textContent + "]"); |
| - var stringName = nodes[i].className.split(/\s/)[0].substring(5); |
| + var className = nodes[i].className; |
| + if (className instanceof SVGAnimatedString) |
| + className = className.animVal; |
| + var stringName = className.split(/\s/)[0].substring(5); |
| + var prop = "innerHTML" in nodes[i] ? "innerHTML" : "textContent"; |
| if(arguments.length > 0) |
| - nodes[i].innerHTML = chrome.i18n.getMessage(stringName, arguments); |
| + nodes[i][prop] = chrome.i18n.getMessage(stringName, arguments); |
| else |
| - nodes[i].innerHTML = chrome.i18n.getMessage(stringName); |
| + nodes[i][prop] = chrome.i18n.getMessage(stringName); |
| } |
| } |
| function i18n_time(h, m) { |
| var locale = chrome.i18n.getMessage("@@ui_locale"); |
| if(m < 10) |
| m = "0" + m; |
| if(locale == "fr") { |
| @@ -43,8 +47,11 @@ function i18n_timeDateStrings(when) { |
| var timeString = d.toLocaleTimeString(); |
| var now = new Date(); |
| if (d.toDateString() == now.toDateString()) |
| return [timeString]; |
| else |
| return [timeString, d.toLocaleDateString()]; |
| } |
| + |
| +// Fill in the strings as soon as possible |
| +window.addEventListener("DOMContentLoaded", loadI18nStrings, true); |