| Index: i18n.js |
| =================================================================== |
| --- a/i18n.js |
| +++ b/i18n.js |
| @@ -65,21 +65,30 @@ |
| // Loads i18n strings |
| function loadI18nStrings() |
| { |
| - var nodes = document.querySelectorAll("[class^='i18n_']"); |
| - for(var i = 0; i < nodes.length; i++) |
| + function addI18nStringsToElements(containerElement) |
| { |
| - var node = nodes[i]; |
| - var arguments = JSON.parse("[" + node.textContent + "]"); |
| - if (arguments.length == 0) |
| - arguments = null; |
| + var elements = containerElement.querySelectorAll("[class^='i18n_']"); |
| + for(var i = 0; i < elements.length; i++) |
| + { |
| + var node = elements[i]; |
| + var arguments = JSON.parse("[" + node.textContent + "]"); |
| + if (arguments.length == 0) |
| + arguments = null; |
| - var className = node.className; |
| - if (className instanceof SVGAnimatedString) |
| - className = className.animVal; |
| - var stringName = className.split(/\s/)[0].substring(5); |
| + var className = node.className; |
| + if (className instanceof SVGAnimatedString) |
| + className = className.animVal; |
| + var stringName = className.split(/\s/)[0].substring(5); |
| - ext.i18n.setElementText(node, stringName, arguments); |
| + ext.i18n.setElementText(node, stringName, arguments); |
| + } |
| } |
| + addI18nStringsToElements(document); |
| + // Content of Template is not rendered on runtime so we need to add |
| + // translation strings for each Template documentFragment content individually |
| + var templates = document.querySelectorAll("template"); |
| + for (var i = 0; i < templates.length; i++) |
| + addI18nStringsToElements(templates[i].content); |
| } |
| // Provides a more readable string of the current date and time |
| @@ -95,5 +104,20 @@ |
| return [timeString, d.toLocaleDateString()]; |
| } |
| +// Formats date string to ["YYYY-MM-DD", "mm:ss"] format |
| +function i18n_formatDateTime(when) |
| +{ |
| + var date = new Date(when); |
| + var dateParts = [date.getFullYear(), date.getMonth() + 1, date.getDate(), |
| + date.getHours(), date.getMinutes()]; |
| + |
| + var dateParts = dateParts.map(function(datePart) |
| + { |
| + return 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); |