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