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); |