210 function multiline_to_svg_text(elt, str) { |
210 function multiline_to_svg_text(elt, str) { |
211 str.split('\\\\n').map((line,i) => {elt.children[i].textContent = line;}); |
211 str.split('\\\\n').map((line,i) => {elt.children[i].textContent = line;}); |
212 } |
212 } |
213 |
213 |
214 function switch_langnum(langnum) { |
214 function switch_langnum(langnum) { |
215 if(langnum == current_lang) { |
215 langnum = Math.max(0, Math.min(langs.length - 1, langnum)); |
216 return; |
|
217 } |
|
218 |
216 |
219 for (let translation of translations) { |
217 for (let translation of translations) { |
220 let [objs, msgs, orig] = translation; |
218 let [objs, msgs] = translation; |
221 let msg = langnum == 0 ? orig : msgs[langnum - 1]; |
219 let msg = msgs[langnum]; |
222 for (let obj of objs) { |
220 for (let obj of objs) { |
223 multiline_to_svg_text(obj, msg); |
221 multiline_to_svg_text(obj, msg); |
224 obj.setAttribute("lang",langnum); |
222 obj.setAttribute("lang",langnum); |
225 } |
223 } |
226 } |
224 } |
227 current_lang = langnum; |
225 return langnum; |
228 } |
226 } |
229 |
227 |
230 // backup original texts |
228 // backup original texts |
231 for (let translation of translations) { |
229 for (let translation of translations) { |
232 let [objs] = translation; |
230 let [objs, msgs] = translation; |
233 translation.push(svg_text_to_multiline(objs[0])); |
231 msgs.unshift(svg_text_to_multiline(objs[0])); |
234 } |
232 } |
235 |
233 |
236 var lang_local_index = hmi_local_index("lang"); |
234 var lang_local_index = hmi_local_index("lang"); |
|
235 var langcode_local_index = hmi_local_index("lang_code"); |
|
236 var langname_local_index = hmi_local_index("lang_name"); |
237 subscribers(lang_local_index).add({ |
237 subscribers(lang_local_index).add({ |
238 indexes: [lang_local_index], |
238 indexes: [lang_local_index], |
239 new_hmi_value: function(index, value, oldval) { |
239 new_hmi_value: function(index, value, oldval) { |
240 switch_langnum(value); |
240 let current_lang = switch_langnum(value); |
|
241 let [langname,langcode] = langs[current_lang]; |
|
242 apply_hmi_value(langcode_local_index, langcode); |
|
243 apply_hmi_value(langname_local_index, langname); |
241 switch_page(); |
244 switch_page(); |
242 } |
245 } |
243 }); |
246 }); |
244 var current_lang = 0; |
247 |
245 switch_langnum(cache[lang_local_index]); |
248 function setup_lang(){ |
|
249 let current_lang = cache[lang_local_index]; |
|
250 let new_lang = switch_langnum(current_lang); |
|
251 if(current_lang != new_lang){ |
|
252 apply_hmi_value(lang_local_index, new_lang); |
|
253 } |
|
254 } |
|
255 |
|
256 setup_lang(); |
246 |
257 |
247 function update_subscriptions() { |
258 function update_subscriptions() { |
248 let delta = []; |
259 let delta = []; |
249 for(let index in subscriptions){ |
260 for(let index in subscriptions){ |
250 let widgets = subscribers(index); |
261 let widgets = subscribers(index); |