【发布时间】:2017-11-21 02:38:44
【问题描述】:
我有一个带有语言偏好的网站。当我单击按钮更改语言时,一切正常。唯一的问题是每当我更改语言时,它都会将用户带回主页http://localhost/en/ 但是,我有一个页面是 http://localhost/en/work 或 http://localhost/en/work/#integrations。 当我切换语言时,我不知道如何保持在同一页面上。我认为这与拆分和替换有关,但我不确定。这就是我到目前为止所拥有的。
底部的那个大 if 语句是我失败的尝试(这里很新)。有什么建议吗?
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',
}
function checkLanguage() {
let lang = localStorage.getItem('lang');
if (!lang) {
lang = navigator.language.toLocaleLowerCase();
}
if (lang) {
let userLang = languageDictionary[lang];
let urlLang = window.location.pathname.split('/')[1];
if (languageOptions.indexOf(urlLang) !== -1 && urlLang !== userLang) {
changeLanguage(userLang);
}
}
};
checkLanguage();
function changeLanguage(lang) {
if (languageOptions.indexOf(lang) === -1) {
return;
}
localStorage.setItem('lang', lang);
window.location.href = '/' + lang;
}
if (window.location.hash) {
window.location.split('/')[1];
window.location.replace[1](lang);
window.location.href = '/' + lang + hash;
}
【问题讨论】:
-
听起来像是服务器端问题
-
window.location.href = '/' + lang;inchangeLanguage()不会更新/附加到现有 URL,而是将其覆盖为/en(或任何语言)。
标签: javascript jquery regex indexof window.location