From 5cdb75caf6277135d89b0d5a9b9e0b9f3651f23a Mon Sep 17 00:00:00 2001 From: Mike Bryant Date: Tue, 28 Apr 2020 22:15:36 +0100 Subject: [PATCH] fix: Fall back to more generic languages for selection box default --- js/translations.js | 55 +++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/js/translations.js b/js/translations.js index d4f0393..fbc3d84 100644 --- a/js/translations.js +++ b/js/translations.js @@ -3,6 +3,24 @@ function updateContent() { $('body').localize(); } const defaultLanguage = 'en'; +const LANGUAGES = { + 'ca': 'Català', + 'de': 'Deutsch', + 'en': 'English', + 'es-ES': 'Español', + 'fr': 'Français', + 'hu': 'magyar', + 'it': 'Italiano', + 'ja': '日本語', + 'ko': '한국어', + 'nl': 'Nederlands', + 'pl': 'Polski', + 'pt-BR': 'Português', + 'ru': 'Русский', + 'th-TH': 'ไทย', + 'zh-CN': '简体中文', + 'zh-TW': '繁體中文', +}; i18next .use(i18nextXHRBackend) .use(i18nextBrowserLanguageDetector) @@ -13,30 +31,16 @@ i18next loadPath: 'locales/{{lng}}.json', }, }, (err, t) => { - const languages = [ - ['ca', 'Català'], - ['de', 'Deutsch'], - ['en', 'English'], - ['es-ES', 'Español'], - ['fr', 'Français'], - ['hu', 'magyar'], - ['it', 'Italiano'], - ['ja', '日本語'], - ['ko', '한국어'], - ['nl', 'Nederlands'], - ['pt-BR', 'Português'], - ['ru', 'Русский'], - ['zh-CN', '简体中文'], - ['zh-TW', '繁體中文'], - ['th-TH', 'ไทย'], - ['pl', 'Polski'], - ].sort(), languageSelector = $('#language'); - languages.map(([code, name]) => { - languageSelector.append(``); - }); - if (!languageSelector.find('[selected]').length) - languageSelector.val(defaultLanguage); + for (let [code, name] of Object.entries(LANGUAGES)) { + languageSelector.append(``); + } + for (let code of i18next.languages) { + if (code in LANGUAGES) { + languageSelector.val(code); + break; + } + } languageSelector.on('change', function () { if (this.value == i18next.language) return; @@ -44,11 +48,6 @@ i18next }); jqueryI18next.init(i18next, $); i18next.on('languageChanged', lng => { - if (!languageSelector.find(`[value=${lng}]`).length) { - i18next.changeLanguage(defaultLanguage); - return; - } - languageSelector.val(lng); updateContent(); }); // init set content