【发布时间】:2011-04-23 02:38:17
【问题描述】:
我需要使用 javascript 检测操作系统语言,以便根据语言查看我的页面。
我知道我们可以检测浏览器语言,但这对我来说还不够。
我需要操作系统语言
提前致谢
【问题讨论】:
-
你做不到。您可以让您的用户明确选择一种语言,或者您可以遵守“Accept-Language”标题中列出的语言。
标签: javascript javascript-framework
我需要使用 javascript 检测操作系统语言,以便根据语言查看我的页面。
我知道我们可以检测浏览器语言,但这对我来说还不够。
我需要操作系统语言
提前致谢
【问题讨论】:
标签: javascript javascript-framework
没有跨浏览器的方法可以做到这一点。 Internet Explorer 支持以下内容:
navigator.browserLanguage: 浏览器语言navigator.systemLanguage:Windows系统语言navigator.userLanguage:Windows 用户特定语言但是没有办法从任何其他浏览器访问这些设置(我知道)所以不要使用它们:坚持标准navigator.language(对应于浏览器语言)如果您想维护跨浏览器功能。如果您确实使用它们,您会将您的网站与特定系列的操作系统(即 Windows)和特定浏览器(即 Internet Explorer)联系起来。你真的要这样做吗?
为什么浏览器语言不适合您的应用程序?
【讨论】:
navigator.language,这几乎是一回事,请参阅 Matthew 的回答。
navigator.language 等价于 navigator.browserLanguage。
您可能只是猜测操作系统语言考虑以下几个因素:
navigator.browserLanguage: IE 语言(菜单、帮助等),与 OS 显示语言相同(如果用户没有更改)。如控制面板 -> 区域和语言 -> 键盘和语言 -> 显示语言navigator.systemLanguage:如控制面板 -> 区域和语言 -> 位置navigator.userLanguage:如控制面板 -> 区域和语言 -> 格式var d=new Date(Date.UTC(2014,1,26,3,0,0));
var dateFormat={weekday:"long",year:"numeric",month:"long",day:"numeric"};
var result = d.toLocaleDateString("i-default",dateFormat);
alert(result);
//e.g. for Russian format ( Control Panel -> Region and Language -> Formats )
//result == 'среда, 26 февраля 2014 г.'
然后在您的服务器上搜索result,搜索初步生成的不同语言的格式化日期集。
注意! Chrome 返回以其 UI 语言格式化的日期。
如果您迫切需要了解操作系统语言 - 在您的页面中嵌入 flash 并利用 flash.system.Capabilities.language:
注意! Chrome 不允许这种伎俩 — Chrome 的 Flash 总是显示 browser.language,我想是因为它有自己的 Flash。
navigator.language 告诉您浏览器的 UI 语言(菜单、帮助等)并且您可能假设在绝大多数情况下它与操作系统语言匹配(尤其是对于家用计算机):在下载时FF 或 Chrome 会根据用户当时的浏览器显示下载页面 - 在 Windows 上是与操作系统相同语言的 IE。
在处理浏览器的环境参数时,Chrome 本身就是一个东西,这确实很奇怪,唉。
【讨论】:
您可以使用用户代理。但是,它很容易被欺骗,不保证包含语言信息,navigator.language 和navigator.browserLanguage 可能会更可靠。
【讨论】:
navigator.language 或navigator.browserLanguage,从来没有标准化过:developer.mozilla.org/en/Navigator.language,msdn.microsoft.com/en-us/library/ms533542(v=VS.85).aspx IE 还提供了systemLanguage 和userLanguage
这里的每个人都需要考虑一件事,并非所有用户都知道如何设置他们的浏览器语言首选项。因此,如果您正在创建一个您希望人们看到的网站,那么如果他们以不同于他们熟悉的语言登陆它,这就是您的问题,因为这会增加他们将离开的变化。这在很大程度上取决于您的目标人群,但是对于网页,我认为至少可以检测系统语言是很好的,如果不能,则使用浏览器语言。它更可能是准确的。
【讨论】: