在不离开当前页面的情况下更改语言 - JavaScript

change Language without leaving current page - JavaScript

我有一个带有语言选择器的网站。它工作得很好,除了每当我改变语言时,它总是重定向回根页面,而不是停留在用户所在的任何当前页面上。 我该如何解决这个问题? 这是我的代码:

function checkLanguage() {
    let lang = localStorage.getItem('lang');
    let urlLang = window.location.pathname.split('/')[1];

    if(isNullOrWhitespace(urlLang)) {
        if (!lang) {
            lang = navigator.language.toLocaleLowerCase();
        }
        if (lang) {
            let userLang = languageDictionary[lang];
            changeLanguage(userLang);
        }
    }
    else {
        localStorage.setItem('lang', urlLang);
    }

    var windowWidth = $(window).width();

    if (windowWidth < 500 && lang === 'th-th') {
        $('.integrations-container').css('display', 'none');
    };
};

function isNullOrWhitespace( input ) {
    return !input || !input.trim();
}

checkLanguage();

// Changing language
function changeLanguage(lang) {
    if (languageOptions.indexOf(lang) === -1) {
        return;
    }
    localStorage.setItem('lang', lang);
    window.location.href = '/' + lang;
}

languageOptions = ['en', 'zh-cn', 'zh-hk', 'jp-jp', 'ko-kr', 'th-th'];

languageDictionary = {
    'en': 'en',
    'en-gb': 'en',
    'en-us': 'en',
    'zh-cn': 'zh-cn',
    'zh-hk': 'zh-ch',
    'ko-kr': 'ko-kr',
    'th-th': 'th-th',
    'jp-jp': 'jp-jp',
} 

提前谢谢kindle!我也是新手,所以外行术语总是受到赞赏:)

window.location.href = '/' + lang;

我认为当语言改变时,这一行总是重定向回首页。 如果您能提供页面的示例url,将会很有帮助。

尝试将其更改为以下以在更改语言时重定向到当前页面。我认为它也应该在首页上工作。

// Changing language
function changeLanguage(lang) {
    if (languageOptions.indexOf(lang) === -1) {
        return;
    }
    localStorage.setItem('lang', lang);

    var urlData = window.location.pathname.split('/'); // /en/detail/test.html -> ["", "en", "detail", "test.html"]
    urlData.splice(0, 2).join('/'); //cut out ["", "en"]
    var newPath = urlData.join('/'); // detail/test.html

    window.location.href = '/' + lang + '/'+ newPath; // /jp-jp/detail/test.html
}