diff options
author | Moritz Warning <moritzwarning@web.de> | 2022-07-30 10:40:16 +0300 |
---|---|---|
committer | Moritz Warning <moritzwarning@web.de> | 2022-07-30 10:40:25 +0300 |
commit | 8ed5e4dc3b17354dded08581a8bf8d7bfbec95ff (patch) | |
tree | a51cc19d0819bba65bb2579a31828313f0776954 | |
parent | e2b484ed291679187b3f31937858a5e96414dab0 (diff) |
i18n: fix additional translation calls
The language data needs to be cached
in order to be reapplied.
Signed-off-by: Moritz Warning <moritzwarning@web.de>
-rw-r--r-- | www/index.js | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/www/index.js b/www/index.js index 93b51b8..0f300d8 100644 --- a/www/index.js +++ b/www/index.js @@ -2,6 +2,7 @@ /* exported init */ let current_device = {}; let current_language = undefined; +let current_language_json = undefined; let url_params = undefined; let ofs_version = "%GIT_VERSION%"; @@ -201,21 +202,24 @@ function setupSelectList(select, items, onselection) { // Change the translation of the entire document function translate(lang) { + function apply(language, language_json) { + current_language = language; + current_language_json = language_json; + for (const tr in language_json) { + $$("." + tr).forEach((e) => { + e.innerText = language_json[tr]; + }); + } + } + const new_lang = lang || current_language; if (current_language === new_lang) { - return; + apply(current_language, current_language_json); + } else { + fetch("langs/" + new_lang + ".json") + .then((obj) => obj.json()) + .then((mapping) => apply(new_lang, mapping)); } - - current_language = new_lang; - fetch("langs/" + current_language + ".json") - .then((obj) => obj.json()) - .then((mapping) => { - for (const tr in mapping) { - $$("." + tr).forEach((e) => { - e.innerText = mapping[tr]; - }); - } - }); } // return array of matching ranges |