有谁知道如何使用javascript从Firefox和Google Chrome获取浏览器文化?注意:这是一个asp.net 3.5 Web应用程序。
要求是尝试根据浏览器文化设置应用程序的显示文化。我发现其他浏览器的信息很少,但它们似乎不起作用。
我可以使用以下代码片段在IE中获取它:
var browserCulture = this.clientInformation.browserLanguage;
任何信息都会很棒!
答案 0 :(得分:69)
navigator
对象上存在以下属性(在IE上也可以称为clientInformation
,但没有理由使用该名称):
language
(非IE,浏览器安装语言)browserLanguage
(IE,浏览器安装语言)userLanguage
(IE,用户级操作系统范围的语言设置)systemLanguage
(IE,操作系统安装语言)但是! 你永远不应该使用任何这些属性!在许多情况下,它们将是错误的语言。
它们都没有反映用户在浏览器的“首选语言”UI中实际配置的语言设置,用户很难无法更改。如果没有额外的简单手动方式来切换语言,您将会因使用这些值而感到非常沮丧。
您应该嗅探的正确位置,以确定默认情况下使用的语言(由普通浏览器UI配置)是在HTTP请求中传递给您的服务器的Accept-Language
标头。这是您可以从中选择的首选语言的排名列表,如果您使用它,它就是ASP.NET用于猜测自动客户端文化的内容。
很遗憾,JavaScript无法使用此属性!
您通常使用服务器端解析Accept-Language
标头,并从中选择一种适当的语言。在ASP.NET中,您可以从HttpRequest.UserLanguages获取预先排序的列表,然后选择您喜欢的第一个列表。
然后将该语言名称吐出到<script>
元素中,以将语言信息传递给客户端。
答案 1 :(得分:12)
试试这个:
var l_lang;
if (navigator.userLanguage) // Explorer
l_lang = navigator.userLanguage;
else if (navigator.language) // FF
l_lang = navigator.language;
else
l_lang = "en";
答案 2 :(得分:7)
navigator.languages
是一个数组,按顺序包含所有选定的语言。仅适用于Chrome和Firefox。
与navigator.language
不同,我的意思是navigator.language
不一定与navigator.languages[0]
匹配。
只是要清楚。
答案 3 :(得分:0)
要在IE中获取区域设置,您需要编写服务器端代码。我尝试使用servlet并获得了IE的接受语言。它显示了用户选择的语言。在客户端调用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);