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