function updateContent() { update(); $('body').localize(); } const defaultLanguage = 'en'; i18next .use(i18nextXHRBackend) .use(i18nextBrowserLanguageDetector) .init({ fallbackLng: defaultLanguage, debug: true, backend: { 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); languageSelector.on('change', function () { if (this.value == i18next.language) return; i18next.changeLanguage(this.value); }); jqueryI18next.init(i18next, $); i18next.on('languageChanged', lng => { if (!languageSelector.find(`[value=${lng}]`).length) { i18next.changeLanguage(defaultLanguage); return; } languageSelector.val(lng); updateContent(); }); // init set content $(document).ready(initialize); let delayTimer; $(document).on('input', function() { // adding short delay after input to help mitigate potential lag after keystrokes clearTimeout(delayTimer); delayTimer = setTimeout(function() { updateContent(); }, 500); }); $('input[type = radio]').on('change', updateContent); });