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

The*_*eek 38 javascript firefox culture internet-explorer google-chrome

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

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

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

var browserCulture = this.clientInformation.browserLanguage;
Run Code Online (Sandbox Code Playgroud)

任何信息都会很棒!

bob*_*nce 70

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

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

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

它们都没有反映用户在浏览器的"首选语言"UI中实际配置的语言设置,用户很难无法更改.如果没有额外的简单手动方式来切换语言,您将会因使用这些值而感到非常沮丧.

您应该嗅探的正确位置,以确定默认情况下使用的语言(由普通浏览器UI配置)是Accept-Language在HTTP请求中传递给您的服务器的标头.这是您可以选择的首选语言的排名列表,如果您使用它,它就是ASP.NET用于猜测自动客户端文化的内容.

不幸的是,这个属性不能从JavaScript获得!

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

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

  • 请参阅https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.language ...所有浏览器都在此处使用Accept-Language中的值作为其语言属性.别担心了. (4认同)
  • @timdream小心,"所有浏览器"这个短语似乎有点误导,因为你链接的文件说IE中不支持`window.navigator.language`并且需要专有的IE选项. (4认同)
  • 我认为该文档对于Chrome来说也是错误的 - 我总是得到浏览器语言*而不是*第一种设置语言.我看到第一个设置语言的唯一浏览器是Firefox,远离"所有浏览器".即使这样,它也不是最理想的,因为你只获得了第一种语言:如果用户说"给我优先选择英语,而法语如果你没有",但你只有法语和德语,那第二种选择不会是已接. (2认同)

Sol*_*oub 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";
Run Code Online (Sandbox Code Playgroud)

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

  • navigator.userLanguage不适用于IE11 (3认同)

Mat*_*ats 7

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

它不一样,navigator.language并且我的意思是navigator.language不一定匹配navigator.languages[0].

只是为了清楚.