如何获得浏览器当前的语言环境偏好使用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);