From 8ed5e4dc3b17354dded08581a8bf8d7bfbec95ff Mon Sep 17 00:00:00 2001 From: Moritz Warning Date: Sat, 30 Jul 2022 09:40:16 +0200 Subject: i18n: fix additional translation calls The language data needs to be cached in order to be reapplied. Signed-off-by: Moritz Warning --- www/index.js | 28 ++++++++++++++++------------ 1 file 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 -- cgit v1.2.3