OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
3 * Copyright (C) 2006-2013 Eyeo GmbH | 3 * Copyright (C) 2006-2013 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 catch(e) | 75 catch(e) |
76 { | 76 { |
77 Cu.reportError(e); | 77 Cu.reportError(e); |
78 return "Missing translation: " + key; | 78 return "Missing translation: " + key; |
79 } | 79 } |
80 } | 80 } |
81 }; | 81 }; |
82 })(); | 82 })(); |
83 } | 83 } |
84 | 84 |
85 // Loads and inserts i18n strings into matching elements. Any inner HTML already
in the | 85 // Inserts i18n strings into matching elements. Any inner HTML already in the el
ement is |
86 // element is parsed as JSON and used as parameters to substitute into placehold
ers in the | 86 // parsed as JSON and used as parameters to substitute into placeholders in the
i18n |
87 // i18n message. | 87 // message. |
88 function loadI18nStrings() | 88 var setElementText = i18n.setElementText = function(element, stringName, argumen
ts) |
89 { | 89 { |
90 function processString(str, element) | 90 function processString(str, element) |
91 { | 91 { |
92 var match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(str); | 92 var match = /^(.*?)<(a|strong)>(.*?)<\/\2>(.*)$/.exec(str); |
93 if (match) | 93 if (match) |
94 { | 94 { |
95 processString(match[1], element); | 95 processString(match[1], element); |
96 | 96 |
97 var e = document.createElement(match[2]); | 97 var e = document.createElement(match[2]); |
98 processString(match[3], e); | 98 processString(match[3], e); |
99 element.appendChild(e); | 99 element.appendChild(e); |
100 | 100 |
101 processString(match[4], element); | 101 processString(match[4], element); |
102 } | 102 } |
103 else | 103 else |
104 element.appendChild(document.createTextNode(str)); | 104 element.appendChild(document.createTextNode(str)); |
105 } | 105 } |
106 | 106 |
| 107 while (element.lastChild) |
| 108 element.removeChild(element.lastChild); |
| 109 processString(i18n.getMessage(stringName, arguments), element); |
| 110 } |
| 111 |
| 112 // Loads i18n strings |
| 113 function loadI18nStrings() |
| 114 { |
107 var nodes = document.querySelectorAll("[class^='i18n_']"); | 115 var nodes = document.querySelectorAll("[class^='i18n_']"); |
108 for(var i = 0; i < nodes.length; i++) | 116 for(var i = 0; i < nodes.length; i++) |
109 { | 117 { |
110 var node = nodes[i]; | 118 var node = nodes[i]; |
111 var arguments = JSON.parse("[" + node.textContent + "]"); | 119 var arguments = JSON.parse("[" + node.textContent + "]"); |
112 if (arguments.length == 0) | 120 if (arguments.length == 0) |
113 arguments = null; | 121 arguments = null; |
114 | 122 |
115 var className = node.className; | 123 var className = node.className; |
116 if (className instanceof SVGAnimatedString) | 124 if (className instanceof SVGAnimatedString) |
117 className = className.animVal; | 125 className = className.animVal; |
118 var stringName = className.split(/\s/)[0].substring(5); | 126 var stringName = className.split(/\s/)[0].substring(5); |
119 | 127 |
120 while (node.lastChild) | 128 setElementText(node, stringName, arguments); |
121 node.removeChild(node.lastChild); | |
122 processString(i18n.getMessage(stringName, arguments), node); | |
123 } | 129 } |
124 } | 130 } |
125 | 131 |
126 // Provides a more readable string of the current date and time | 132 // Provides a more readable string of the current date and time |
127 function i18n_timeDateStrings(when) | 133 function i18n_timeDateStrings(when) |
128 { | 134 { |
129 var d = new Date(when); | 135 var d = new Date(when); |
130 var timeString = d.toLocaleTimeString(); | 136 var timeString = d.toLocaleTimeString(); |
131 | 137 |
132 var now = new Date(); | 138 var now = new Date(); |
133 if (d.toDateString() == now.toDateString()) | 139 if (d.toDateString() == now.toDateString()) |
134 return [timeString]; | 140 return [timeString]; |
135 else | 141 else |
136 return [timeString, d.toLocaleDateString()]; | 142 return [timeString, d.toLocaleDateString()]; |
137 } | 143 } |
138 | 144 |
139 // Fill in the strings as soon as possible | 145 // Fill in the strings as soon as possible |
140 window.addEventListener("DOMContentLoaded", loadI18nStrings, true); | 146 window.addEventListener("DOMContentLoaded", loadI18nStrings, true); |
OLD | NEW |