40

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

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

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

var browserCulture = this.clientInformation.browserLanguage;

任何信息都会很棒!

4

4 回答 4

74

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

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

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

它们都没有反映用户在浏览器的“首选语言”用户界面中实际配置的语言设置,而且用户很难更改它们。如果没有额外的简单手动方式来切换语言,则使用这些值中的任何一个都会造成很大的挫败感。

根据普通浏览器 UI 的配置,您应该嗅探以决定默认使用哪种语言的正确位置是Accept-LanguageHTTP 请求中传递给服务器的标头。这是您可以从中选择的首选语言的排名列表,如果您使用它,它就是 ASP.NET 用来猜测自动客户端文化的内容。

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

您通常做的是使用您的服务器端来解析Accept-Language标头并从中选择一种合适的语言来使用。在 ASP.NET 中,您可以从HttpRequest.UserLanguages获取预先排序的列表,然后选择您喜欢的第一个。

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

于 2010-04-20T20:36:09.247 回答
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

于 2010-04-20T20:09:22.000 回答
7

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

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

只是要清楚。

于 2015-01-28T13:44:31.430 回答
-1

要在 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);
于 2016-07-02T07:54:45.217 回答