Javascript 根据浏览器语言重定向
嗨,我有一个简单的应用程序,用户可以选择语言使用我的应用程序之间的英语和波兰语 当用户打开我的网站时,这是我想要的行为:Javascript 根据浏览器语言重定向,javascript,jquery,html,Javascript,Jquery,Html,嗨,我有一个简单的应用程序,用户可以选择语言使用我的应用程序之间的英语和波兰语 当用户打开我的网站时,这是我想要的行为: 如果浏览器语言=英语,则切换到波兰语 如果浏览器语言=波兰语,则不执行任何操作 假设波兰语是默认语言 因为它是一个非常简单的应用程序,所以我使用jQuery进行翻译 以下是我目前的解决方案: JSFIDDLE: //重定向 $(文档).ready(函数(){ var userLang=navigator.language | | navigator.userLangua
- 如果浏览器语言=英语,则切换到波兰语
- 如果浏览器语言=波兰语,则不执行任何操作
- 假设波兰语是默认语言
//重定向
$(文档).ready(函数(){
var userLang=navigator.language | | navigator.userLanguage;
如果(userLang==“pl”){
打破
}否则{
userLang=“eng gb”
}
}
});
//翻译
//默认语言为波兰语
var lang=“pl”;
//检查本地存储支持
if(窗口中的“本地存储”){
var usrLang=localStorage.getItem('uiLang');
如果(usrLang){
lang=usrLang
}
}
var arrLang={
“损益”:{
“瓦伦丁”:“做瓦伦蒂内克·佐斯塔科·朱蒂尔科”,
},
“en gb”:{
“情人节”:“情人节剩下的日子!”,
}
}
$(文档).ready(函数(){
$(“.lang”)。每个(函数(索引,元素){
$(this.text)(arrLang[lang][$(this.attr(“key”)));
});
$(“.lang”)。每个(函数(索引,元素){
$(this.text)(arrLang[lang][$(this.attr(“key”)));
});
//获取/设置所选语言
$(“.translate”)。单击(函数(){
var lang=$(this.attr(“id”);
//更新本地存储密钥
if(窗口中的“本地存储”){
setItem('uiLang',lang);
}
$(“.lang”)。每个(函数(索引,元素){
$(this.text)(arrLang[lang][$(this.attr(“key”)));
});
});
});代码>
- en
- pl
瓦伦蒂内克·佐斯塔科·朱蒂尔科
userLang
返回en GB
因此语言是两个小写字符,国家是两个大写字符,因此if语句应该是if(userLang=='pl')
而不是if(userLang=='pl')
它将始终以您的方式返回false
- 但是当你只需要语言的时候,对吗?你可以试试这个。。并始终使用两个小写字符的语言。。无需使用
pl-pl
或en-GB
您可以使用pl
或en
//重定向
$(文档).ready(函数(){
var userLang=navigator.language | | navigator.userLanguage;
log(userLang);
var userLang=userLang.split('-')[0];
log(userLang);
变量userLang=(userLang!=“pl”)?“en”:“pl”;
log(userLang);
var arrLang={
“pl”:{
“瓦伦丁”:“做瓦伦蒂内克·佐斯塔科·朱蒂尔科”,
},
“en”:{
“情人节”:“情人节剩下的日子!”,
}
}
log(arrLang[userLang].valentine);
});代码>
userLang
返回en GB
因此语言是两个小写字符,国家是两个大写字符,因此if语句应该是if(userLang=='pl')
而不是if(userLang=='pl')
它将始终以您的方式返回false
- 但是当你只需要语言的时候,对吗?你可以试试这个。。并始终使用两个小写字符的语言。。无需使用
pl-pl
或en-GB
您可以使用pl
或en
//重定向
$(文档).ready(函数(){
var userLang=navigator.language | | navigator.userLanguage;
log(userLang);
var userLang=userLang.split('-')[0];
log(userLang);
变量userLang=(userLang!=“pl”)?“en”:“pl”;
log(userLang);
var arrLang={
“pl”:{
“瓦伦丁”:“做瓦伦蒂内克·佐斯塔科·朱蒂尔科”,
},
“en”:{
“情人节”:“情人节剩下的日子!”,
}
}
log(arrLang[userLang].valentine);
});代码>
试试下面的方法,希望能有所帮助
$(document).ready(function() {
// translation
// The default language is English
var userLang = navigator.language || navigator.userLanguage;
var lang = "pl-pl";
// If Browser Language == English then switch to the Polish language.
// since there en-GB en-US ...
if(userLang.split('-')[0] == 'en'){
lang = "pl-pl";
}
// Check for localStorage support
if('localStorage' in window){
var usrLang = localStorage.getItem('uiLang');
if( typeof(usrLang) === 'string' && usrLang !== 'undefined') {
lang = usrLang
}
}
var arrLang = {
"pl-pl": {
"valentine": "Do Walentynek zostało już tylko",
"days": " 10 dni"
},
"en-gb": {
"valentine": "Remaining days to Valentines!",
"days": " 10 days"
}
}
$(".lang").each(function(index, element) {
$(this).text(arrLang[lang][$(this).attr("key")]);
});
// get/set the selected language
$(".translate").click(function(e) {
e.stopPropagation();
var lang = $(this).attr("id");
// update localStorage key
if('localStorage' in window){
localStorage.setItem('uiLang', lang);
}
$(".lang").each(function(index, element) {
$(this).text(arrLang[lang][$(this).attr("key")]);
});
});
});
试试下面的方法,希望对你有所帮助
$(document).ready(function() {
// translation
// The default language is English
var userLang = navigator.language || navigator.userLanguage;
var lang = "pl-pl";
// If Browser Language == English then switch to the Polish language.
// since there en-GB en-US ...
if(userLang.split('-')[0] == 'en'){
lang = "pl-pl";
}
// Check for localStorage support
if('localStorage' in window){
var usrLang = localStorage.getItem('uiLang');
if( typeof(usrLang) === 'string' && usrLang !== 'undefined') {
lang = usrLang
}
}
var arrLang = {
"pl-pl": {
"valentine": "Do Walentynek zostało już tylko",
"days": " 10 dni"
},
"en-gb": {
"valentine": "Remaining days to Valentines!",
"days": " 10 days"
}
}
$(".lang").each(function(index, element) {
$(this).text(arrLang[lang][$(this).attr("key")]);
});
// get/set the selected language
$(".translate").click(function(e) {
e.stopPropagation();
var lang = $(this).attr("id");
// update localStorage key
if('localStorage' in window){
localStorage.setItem('uiLang', lang);
}
$(".lang").each(function(index, element) {
$(this).text(arrLang[lang][$(this).attr("key")]);
});
});
});
属性名称区分大小写
您在arrLang
中的波兰语物业名称与英语物业名称不同pl
是Valentine
而en-gb
是Valentine
。但是您的key=“valentine”
会在pl
中查找不存在的后者
把它们都小写
var arrLang = {
"pl-pl": {
"valentine": "Do Walentynek zostało już tylko",
},
"en-gb": {
"valentine": "Remaining days to Valentines!",
}
}
属性名称区分大小写
您在arrLang
中的波兰语物业名称与英语物业名称不同pl
是Valentine
而en-gb
是Valentine
。但是您的key=“valentine”
会在pl
中查找不存在的后者
把它们都小写
var arrLang = {
"pl-pl": {
"valentine": "Do Walentynek zostało już tylko",
},
"en-gb": {
"valentine": "Remaining days to Valentines!",
}
}
检查userLang==“eng gb”
:此行是比较(不是赋值)。此外,对象中的键是en gb
noteng
。嗨,杰克,仍然不工作;(@Cue你能解释一下为什么我的问题是重复的吗???你的链接是关于语言检测而不是重定向的:(请具体说明为什么你认为它是重复的,检查userLang==“eng gb”
:这一行是比较(不是作业)。此外,您的对象中的键是en gb
noteng
。嗨,杰克,仍然不工作;(@Cue您能解释一下我的问题重复的原因吗???您的链接关于语言检测不重定向:(请具体说明为什么你认为它是重复的,嗨,穆罕默德,你的方法看起来不错,你测试过你的代码吗?我试过你的方法来检查你的方法是否有效,但不幸的是它不起作用,请让我知道你的方法是否有效,thanks@JeffersonXMasonic我想知道你的问题..我用工作片段发布了我的答案,你觉得呢你的意思是它不工作你的意思是不工作你的代码?我测试过