更改语言而不离开当前页面 - JavaScript

时间:2018-02-06 07:43:51

标签: javascript lang

我有一个带语言选择器的网站。它工作得很好,除了每当我更改语言时,它总是重定向回到根页面而不是停留在用户所在的当前页面上。 我该怎么办呢? 这是我的代码:

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',
} 

谢谢提前点燃!我也很新,所以外行术语总是很受欢迎:)

1 个答案:

答案 0 :(得分:0)

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

我认为在更改语言时,此行始终会重定向到首页。 如果您可以提供页面的示例网址,将会很有帮助。

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

// 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
}