Javascript 根据浏览器语言重定向

Javascript 根据浏览器语言重定向,javascript,jquery,html,Javascript,Jquery,Html,嗨,我有一个简单的应用程序,用户可以选择语言使用我的应用程序之间的英语和波兰语 当用户打开我的网站时,这是我想要的行为: 如果浏览器语言=英语,则切换到波兰语 如果浏览器语言=波兰语,则不执行任何操作 假设波兰语是默认语言 因为它是一个非常简单的应用程序,所以我使用jQuery进行翻译 以下是我目前的解决方案: JSFIDDLE: //重定向 $(文档).ready(函数(){ var userLang=navigator.language | | navigator.userLangua

嗨,我有一个简单的应用程序,用户可以选择语言使用我的应用程序之间的英语和波兰语

当用户打开我的网站时,这是我想要的行为:

  • 如果浏览器语言=英语,则切换到波兰语
  • 如果浏览器语言=波兰语,则不执行任何操作
  • 假设波兰语是默认语言
因为它是一个非常简单的应用程序,所以我使用jQuery进行翻译

以下是我目前的解决方案:

JSFIDDLE:

//重定向
$(文档).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
not
eng
。嗨,杰克,仍然不工作;(@Cue你能解释一下为什么我的问题是重复的吗???你的链接是关于语言检测而不是重定向的:(请具体说明为什么你认为它是重复的,检查
userLang==“eng gb”
:这一行是比较(不是作业)。此外,您的对象中的键是
en gb
not
eng
。嗨,杰克,仍然不工作;(@Cue您能解释一下我的问题重复的原因吗???您的链接关于语言检测不重定向:(请具体说明为什么你认为它是重复的,嗨,穆罕默德,你的方法看起来不错,你测试过你的代码吗?我试过你的方法来检查你的方法是否有效,但不幸的是它不起作用,请让我知道你的方法是否有效,thanks@JeffersonXMasonic我想知道你的问题..我用工作片段发布了我的答案,你觉得呢你的意思是它不工作你的意思是不工作你的代码?我测试过