--- a/svghmi/hmi_tree.ysl2 Tue Feb 09 07:46:02 2021 +0100
+++ b/svghmi/hmi_tree.ysl2 Tue Feb 09 07:55:16 2021 +0100
@@ -143,7 +143,14 @@
-const "_parsed_widgets" apply "$hmi_elements", mode="parselabel";
+const "_parsed_widgets" { + widget type="VarInitPersistent" { + apply "$hmi_elements", mode="parselabel"; const "parsed_widgets","exsl:node-set($_parsed_widgets)";
--- a/svghmi/svghmi.js Tue Feb 09 07:46:02 2021 +0100
+++ b/svghmi/svghmi.js Tue Feb 09 07:55:16 2021 +0100
@@ -204,6 +204,39 @@
+function switch_langnum(langnum) { + if(langnum == current_lang) { + for (let translation of translations) { + let [objs] = translation; + translation.push(Array.prototype.map.call(objs[0].children, x=>x.textContent).join("\\\\n")); + for (let translation of translations) { + let [objs, msgs, orig] = translation; + let msg = langnum == 0 ? orig : msgs[langnum - 1]; + for (let obj of objs) { + msg.split('\\\\n').map((line,i) => {obj.children[i].textContent = line;}); + current_lang = langnum; +var lang_local_index = hmi_local_index("lang"); +subscribers(lang_local_index).add({ + indexes: [lang_local_index], + new_hmi_value: function(index, value, oldval) { +switch_langnum(cache[lang_local_index]); function update_subscriptions() {
@@ -472,18 +505,3 @@
current_modal = undefined;
-function switch_lang(lang) {
- langnum = langs.indexOf(lang);
- console.log("Unknown language: "+lang+", return to original");
- for (let translation of translations) {
- let [objs, msgs] = translation;
- let msg = msgs[langnum];
- for (let obj of objs) {
- msg.split('\\\\n').map((line,i) => {obj.children[i].textContent = line;});