如何使用javascript获取浏览器当前的区域设置首选项?

时间:2010-04-20 20:02:09

标签: javascript internet-explorer firefox google-chrome culture

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

要求是尝试根据浏览器文化设置应用程序的显示文化。我发现其他浏览器的信息很少,但它们似乎不起作用。

我可以使用以下代码片段在IE中获取它:

var browserCulture = this.clientInformation.browserLanguage;

任何信息都会很棒!

4 个答案:

答案 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";

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

答案 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);