【问题标题】:How to detect user’s language (the simple way) [duplicate]如何检测用户的语言(简单的方法)[重复]
【发布时间】:2011-12-22 09:30:50
【问题描述】:

可能重复:
JavaScript for detecting browser language preference

我尝试使用以下 js 代码来检测用户语言,但每种方法都会导致 undefined。我的用户使用两种语言的系统EN & FA

我可以通过 javascript 或 jQuery 检测用户语言吗?如果是,怎么做?

演示:http://jsfiddle.net/AqXsp/1/

$('input').live('keyup', function(){
    alert(navigator.userLanguage); // Output this is "undefined"
    alert(navigator.systemLanguage); // Output this is "undefined"
    alert(navigator.browserLanguage); // Output this is "undefined"
})

【问题讨论】:

  • 这不是微不足道的,可能需要服务器端脚本 - 请参阅上面的链接
  • 不,我读过,但对我没有帮助。
  • 为什么不呢?如前所述,根据那里的最佳答案,根本没有简单的方法。
  • 我不知道应该如何使用keyup中的from if进行警报输出,请在jsfiddle.net中给我一个例子。
  • 这不是您在 keyup 事件中可以(也不应该)做的事情。如前所述,它比这要复杂一些。

标签: javascript jquery


【解决方案1】:

answer @Pekka pointed to 可能是您最好的选择。考虑到 JavaScript 本身没有这样的功能,这实际上是一个优雅的解决方案。

解决方案的作者提供了一个非常清楚的例子:

var language;
$.ajax({ 
    url: "http://ajaxhttpheaders.appspot.com", 
    dataType: 'jsonp', 
    success: function(headers) {
        language = headers['Accept-Language'];
        nowDoSomethingWithIt(language);
    }
});

当然,您可以将language 设置为某个默认值。结果是一个未解析的字符串,所以nowDoSomethingWithIt()中需要更多的逻辑。

看看这个工作演示:http://jsfiddle.net/seYLA/

【讨论】:

  • This url: ajaxhttpheaders.appspot.com for my users 有错误“403。这是一个错误。您的客户端无权从该服务器获取 URL /。您正在从禁止访问的国家/地区访问此页面。我们知道的就这些。”如何解决?
  • 我不知道您在哪个国家/地区,但它托管在 Google App Engine 上。在荷兰工作得很好。无论如何,如果您已经阅读了前面提到的答案,那么您就知道它只是一个 Python 脚本,如果需要,您可以在自己的服务器上运行它。所以,再次:阅读前面提到的答案:stackoverflow.com/a/3335420/990877
  • Python脚本在哪里下载和上传到服务器?
  • 嗯...代码在答案中。 “编辑 2:此处要求的是在 AppEngine 上运行的代码” 正下方。如果你不知道如何在你的服务器上运行 Python 脚本,或者你没有服务器……这里不是寻求帮助的地方。扩展讨论属于论坛。
  • 简单的方式是一小段 javascript,正如 Marco (2nd answer) 在“重复”链接上回答的那样,请参阅下面的链接 var userLang = navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage;gu.illau.me/posts/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2010-11-15
相关资源
最近更新 更多