反正有没有使用javascript检测操作系统语言?

Posted

技术标签:

【中文标题】反正有没有使用javascript检测操作系统语言?【英文标题】:Is there anyway to detect OS language using javascript? 【发布时间】:2011-04-23 02:38:17 【问题描述】:

我需要使用 javascript 检测操作系统语言,以便根据语言查看我的页面。

我知道我们可以检测浏览器语言,但这对我来说还不够。

我需要操作系统语言

提前致谢

【问题讨论】:

你做不到。您可以让您的用户明确选择一种语言,或者您可以遵守“Accept-Language”标题中列出的语言。 【参考方案1】:

没有跨浏览器的方法可以做到这一点。 Internet Explorer 支持以下内容:

navigator.browserLanguage: 浏览器语言 navigator.systemLanguage:Windows系统语言 navigator.userLanguage:Windows 用户特定语言

但是没有办法从任何其他浏览器访问这些设置(我知道)所以不要使用它们:坚持标准navigator.language(对应于浏览器语言)如果您想维护跨浏览器功能。如果您确实使用它们,您会将您的网站与特定系列的操作系统(即 Windows)和特定浏览器(即 Internet Explorer)联系起来。你真的要这样做吗?

为什么浏览器语言不适合您的应用程序?

【讨论】:

我正在寻找 navigator.systemLanguage ,我可以将它与 firefox 或仅 IE 一起使用吗?? 不,恐怕只有 IE。然而,这件事很复杂。但是,我认为您应该仔细考虑一下为什么浏览器的语言不够用。 @SzamDev:Firefox 提供navigator.language,这几乎是一回事,请参阅 Matthew 的回答。 @T.J. navigator.language 等价于 navigator.browserLanguage @SzamDev:这是您用户的问题,而不是您的问题。如果他们对你撒谎,那么,他们应该解决这个问题。您正在处理浏览器,所以这就是您应该处理的语言。【参考方案2】:

可能只是猜测操作系统语言考虑以下几个因素:

Windows 操作系统

Internet Explorer

navigator.browserLanguage: IE 语言(菜单、帮助等),与 OS 显示语言相同(如果用户没有更改)。如控制面板 -> 区域和语言 -> 键盘和语言 -> 显示语言 navigator.systemLanguage:如控制面板 -> 区域和语言 -> 位置 navigator.userLanguage:如控制面板 -> 区域和语言 -> 格式

ECMAScript 国际化 API

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 语言格式化的日期。

Adobe Flash

如果您迫切需要了解操作系统语言 - 在您的页面中嵌入 flash 并利用 flash.system.Capabilities.language:

注意! Chrome 不允许这种伎俩 — Chrome 的 Flash 总是显示 browser.language,我想是因为它有自己的 Flash。

Firefox 和 Chrome

navigator.language 告诉您浏览器的 UI 语言(菜单、帮助等)并且您可能假设在绝大多数情况下它与操作系统语言匹配(尤其是对于家用计算机):在下载时FF 或 Chrome 会根据用户当时的浏览器显示下载页面 - 在 Windows 上是与操作系统相同语言的 IE。

在处理浏览器的环境参数时,Chrome 本身就是一个东西,这确实很奇怪,唉。

【讨论】:

【参考方案3】:

您可以使用用户代理。但是,它很容易被欺骗,不保证包含语言信息,navigator.languagenavigator.browserLanguage 可能会更可靠。

【讨论】:

我想他说的是地区设置。 navigator.languagenavigator.browserLanguage,从来没有标准化过:developer.mozilla.org/en/Navigator.language,msdn.microsoft.com/en-us/library/ms533542(v=VS.85).aspx IE 还提供了systemLanguageuserLanguage【参考方案4】:

这里的每个人都需要考虑一件事,并非所有用户都知道如何设置他们的浏览器语言首选项。因此,如果您正在创建一个您希望人们看到的网站,那么如果他们以不同于他们熟悉的语言登陆它,这就是您的问题,因为这会增加他们将离开的变化。这在很大程度上取决于您的目标人群,但是对于网页,我认为至少可以检测系统语言是很好的,如果不能,则使用浏览器语言。它更可能是准确的。

【讨论】:

(直到寻找这个设置,作为一个说英语的人从来没有需要,我不知道如何改变它。这对我在意大利咖啡店度假真的很痛苦,甚至如果我使用语言栏更改系统语言。)

以上是关于反正有没有使用javascript检测操作系统语言?的主要内容,如果未能解决你的问题,请参考以下文章

用于检测浏览器语言偏好的 JavaScript [重复]

Javascript -- 检测用户的语言环境是不是设置为使用 12 小时或 24 小时时间格式

如何检测用于创建 slug 的输入语言,如果不是英语,那么 slug 输入使用 javascript 保持为空

Javascript数据类型检测

JavaScript——杂项

Javascript闭包——懂不懂由你,反正我是懂了