如何获得浏览器当前的语言环境偏好使用JavaScript?

有谁知道如何从Firefox和谷歌浏览器使用JavaScript获取浏览器文化? 注意:这是一个asp.net 3.5 web应用程序。

要求基于浏览器文化来尝试设置应用程序的显示文化。 我发现其他浏览器的信息很less,但似乎不起作用。

我能够在IE中使用下面的代码片段:

var browserCulture = this.clientInformation.browserLanguage; 

任何信息将是伟大的!

navigator对象上存在以下属性(在IE上也可以称为clientInformation ,但没有理由使用该名称):

  • language (非IE,浏览器安装语言)
  • browserLanguage (IE,浏览器安装语言)
  • userLanguage (IE,用户级操作系统范围的语言设置)
  • systemLanguage (IE,OS安装语言)

但! 你不应该使用任何这些属性! 在许多情况下,他们将是错误的语言。

它们中没有一个反映用户在浏览器的“首选语言”UI中实际获得的语言设置,而且用户难以改变。 使用这些值中的任何一个都不会造成很大的挫折,而不需要额外的简单的手动方法来切换语言。

根据普通浏览器UI的configuration,您应该嗅探哪个语言以确定默认使用的正确位置是在HTTP请求中传递给服务器的Accept-Language头。 这是您可以select的首选语言的排名列表,ASP.NET使用它来猜测自动客户端文化(如果使用的话)。

不幸的是,这个属性是不可用的JavaScript!

你通常所做的就是使用你的服务器端来parsingAccept-Language头,并从中select一个合适的语言来使用它。 在ASP.NET中,您可以从HttpRequest.UserLanguages中获取预先sorting的列表,然后select您喜欢的第一个列表。

然后,将该语言名称吐出到<script>元素中,以将语言信息传递给客户端。

尝试这个:

 var l_lang; if (navigator.userLanguage) // Explorer l_lang = navigator.userLanguage; else if (navigator.language) // FF l_lang = navigator.language; else l_lang = "en"; 

来源: http : //forums.digitalpoint.com/showthread.php?t=631706

navigator.languages是一个数组,并按顺序包含所有选定的语言。 只适用于Chrome和Firefox。

它与navigator.language ,我的意思是navigator.language不一定和navigator.languages[0]匹配。

只是要清楚。

要在IE中获取语言环境,您需要编写服务器端代码。 我试着用servlet,并得到了IE的接受语言。 它显示了用户select的语言。在客户端调用servlet并获取语言环境。

 String name=request.getHeader("accept-language"); AcceptClass ac=new AcceptClass(); ac.setAccLang(name); Gson gs=new Gson(); String json = gs.toJson(ac); response.setContentType("application/json"); response.getWriter().write(json);