javascript - 如何使用 javascript 获取浏览器当前的语言环境首选项?

标签 javascript internet-explorer firefox google-chrome culture

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

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

我可以通过以下代码片段在 IE 中获取它:

var browserCulture = this.clientInformation.browserLanguage;

任何信息都会很棒!

最佳答案

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

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

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

它们都没有反射(reflect)用户在浏览器的“首选语言”用户界面中实际配置的语言设置,而且用户很难甚至不可能更改它们。如果没有额外的简单手动方式来切换语言,使用这些值中的任何一个都会让您感到非常沮丧。

您应该嗅探以决定默认使用哪种语言的正确位置,正如普通浏览器 UI 配置的那样,是 Accept-Language 在 HTTP 请求中传递给您的服务器的 header 。这是一个首选语言的排名列表,您可以从中选择,如果您使用它,ASP.NET 会使用它来猜测自动客户端文化。

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

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

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

关于javascript - 如何使用 javascript 获取浏览器当前的语言环境首选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678230/

相关文章:

javascript - 单击asp图像按钮时如何避免回发?

Javascript 链接在 IE 8 及以下版本中不可点击

javascript - 在新选项卡中打开 Blob Url (IE)

javascript - jqueryui 对话框无法在 firefox 11 中输入 `select()`

javascript - jQuery Firefox 处理 Tab 键上的行为

javascript - 为什么自定义渲染器不能按预期工作并导致奇怪的表格单元格行为?

php - 在页面/浏览器关闭/退出时自动保存/提交表单

javascript - 如何将负 Y 轴域更改为正

internet-explorer - 如何制作文件://hyperlink that works in both IE and Firefox?

javascript - firefox 25 没有为音频标签定义 play() ?