i18next с несколькими HTML-страницами

У меня есть веб-страница, состоящая из множества HTML-страниц, связанных тегами привязки. Для переводов этой страницы я использую i18next. Кажется, что на каждой странице переводы работают, но проблема в том, что после того, как я изменил язык и перешел на другую страницу, выбранный язык не применяется и снова устанавливается по умолчанию. Я читал о sessionStorage, так как он может решить эту проблему, но не может ее реализовать. js для переключения языков:

function changeLanguageManual (lang) {
if (lang) {
    i18next.changeLanguage(lang);

}
jqueryI18next.init(i18next, $);
$('body').localize();

}

в основном я хочу добиться того, чтобы при переходе на другую внутреннюю HTML-страницу выбранный язык оставался прежним и не устанавливался по умолчанию.


person Kalvis    schedule 28.02.2020    source источник


Ответы (1)


В документации API для i18next указано, что changeLanguage является асинхронным методом (возвращает обещание). Попробуйте вызвать jQuery i18 init внутри обратного вызова.

i18next.changeLanguage('en', (err, t) => {
    if (err) return console.log('something went wrong loading', err);
    jqueryI18next.init(i18next, $);
    $('body').localize();
});
person JohnPan    schedule 28.02.2020
comment
Я скопировал этот скрипт в свой файл i18next.js, и, похоже, он работает нормально, пока я снова не попытаюсь изменить язык. Поскольку один и тот же файл js импортируется на все HTML-страницы, он всегда инициализирует первый предоставленный язык. Есть ли способ добиться того, чтобы язык, выбранный на одной странице, оставался одинаковым для других? - person Kalvis; 28.02.2020
comment
Да, вы можете погуглить о SessionStorage и LocalStorage. Все страницы одного и того же домена могут хранить и читать из одного и того же экземпляра сеанса или локального хранилища. - person JohnPan; 28.02.2020