const LANGUAGES = { ar: "اَلْعَرَبِيَّةُ", be: "Беларуская мова", bn: "বাংলা", ca: "Català", cs: "Čeština", cy: "Cymraeg", da: "Dansk", de: "Deutch", dsb: "", en_US: "English (US)", eo: "Esperanto", es: "Español", eu: "", fa: "فارسی", fi: "Suomi", fr_FR: "Français", gd: "Gàidhlig", gl: "Galego", he: "עברית‎", hr: "Hrvatski", hu: "Magyar nyelv", id: "bahasa Indonesia", it: "Italiano", ja: "日本語", kab: "", kn: "", ko: "한국어", nl: "Nederlands", nn: "Norsk Nynorsk", oc: "Occitan", pl: "Polski", pt_BR: "Português brasileiro", pt: "Português", ru: "Русский язык", sl: "Slovenščina", sv: "Svenska", th: "ภาษาไทย", tr: "Türkçe", tt: "", zh_Hans: "简体字", zh_Hant: "繁體字" }; const LANG_FALLBACK = "en_US"; class Context { lang; langMessages; langLoaded; ready; init() { if (this.initialized) { return; } var lang = sessionStorage.getItem("lang"); if (lang && LANGUAGES[lang]) { var newLang = sessionStorage.getItem("newLang"); if (newLang && LANGUAGES[newLang]) { this.lang = newLang; sessionStorage.removeItem("newLang"); this.loadLanguage(); } else { this.lang = lang; this.loadLanguage(); } } else { var languages = navigator.languages; var found = false; for (var i = 0; i < languages.length; i++) { var lang = languages[i].replace("-", "_"); if (LANGUAGES[lang]) { this.lang = lang; this.loadLanguage(); found = true; break; } } if (!found) { this.lang = LANG_FALLBACK; this.loadLanguage(); } } var user = sessionStorage.getItem("user"); if (user) { var rawUser = JSON.parse(user); this.user = User.fromData(rawUser.host, rawUser.data); } var hostConfig = sessionStorage.getItem("host"); if (hostConfig) { var rawConfig = JSON.parse(hostConfig); this.hostConfig = HostConfig.fromData(rawConfig.host, rawConfig.data); } this.initialized = true; } loadLanguage() { if (this.langMessages) { return; } var lang = this.lang; if (!LANGUAGES[lang]) { lang = LANG_FALLBACK; } // Use