伪多语言不适用于Chrome

时间:2016-10-24 18:32:54

标签: javascript ajax tumblr multilingual

我有一个"伪多语言"基于this stack的解决方案托管在Tumblr上的网站/博客(因此我无法访问服务器端编程)。

<script>

var defaultLanguage = 'pt';

$.ajax({

    url: "//ajaxhttpheaders.appspot.com",

    dataType: 'jsonp',

    success: function( headers ) {

        var language = headers['Accept-Language'].substring( 0, 2 );

        if( language != defaultLanguage ) {

            $( 'span[lang="pt"], p[lang="pt"]' ).hide( 0 );
            $( 'span[lang="' + language + '"], p[lang="' + language + '"]' ).show( 0 );

        }
    }
});

</script>

非常非常简单。我手动翻译每个帖子中的所有内容(p!),然后根据AJAX请求隐藏。

当我发现它时,我正在测试Mozilla Firefox,它的工作就像一个魅力。然后由于其他原因我被迫转移到谷歌浏览器,然后实施不再工作。

有没有办法可以强制此代码覆盖Chrome设置中的任何内容,或者考虑到我使用Tumblr,向用户提供这些小标记会在运行时更改它吗?

1 个答案:

答案 0 :(得分:1)

未经测试,但我认为你可以这样做:

var defaultLanguage = 'pt';
$.ajax({
    url: "//ajaxhttpheaders.appspot.com",
    dataType: 'jsonp',
    success: function( headers ) {
        var language = headers['Accept-Language'].substring( 0, 2 );
        if( language != defaultLanguage ) {
            $('[lang="pt"]').hide(0);
        }else{
            $('[lang="' + language + '"]').show(0);
        }
    }
});

您只需将[lang]作为属性选择器传递一次(我们不需要同时添加span和paragraph,因为这应该检索与选择器匹配的任何元素)。