可变语言(浏览器语言检测)-在safari中不工作

Variable Language (Browser Language detection) - not working in safari

本文关键字:语言 safari 工作 浏览器 检测      更新时间:2023-09-26

好的,这里是事情,我有一个网站,并希望它检查是否有人浏览器语言列表德语和显示他们德语文本,如果它是,如果它不是德语应该总是得到一个英语版本。一个朋友(他现在没有更多的时间了)给我写了这个索引:

<script>
    var texte = {
        'title': {
            'de':'eis',
            'en':'ice'},
        'subtitle': {
            'de':'Untertitel DE',
            'en':'Subhead Eng'},
        'email': {
            'target':'placeholder',
            'de':'Platzhalter DE',
            'en':'Email me when it is ready'},
        'submit': {
            'target':'value',
            'de': 'Lorem Ipsum',
            'en': 'send'
        },
        'share_txt': {
            'de': 'bitte teilen',
            'en': 'share...'
        }
    };
    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s);
        js.id = id;
        js.src = "//c";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    (function(d){
        var t = window.navigator.language!='de'?'en':'de';
        for(i in texte){
            var target = d.getElementById(i),
                    text = texte[i][t];
            if(texte[i].target){
                target[texte[i].target] = text;
            }else{
                target.innerText = text;
            }
        }
    })(document);
</script>

这在Chrome中有效,但在safari中无效。你们知道吗?此外,我认为一个简单的解决方案是检测,然后将用户发送到index_de.html或index_eng.html页面。我将如何实现这一点?

你们检验过window.navigator.language的实际值吗?

如果我正确理解文档,语言是在RFC 4646符号,所以它也可以有符号de-DE。因此,您可能希望只检查前两个字符,而不是只获得不含子标签的主要语言。

一个小小的改变会让你得到这个:

var t = window.navigator.language.substr(0, 2)!='de'?'en':'de';