反正有没有使用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.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
【参考方案4】:
这里的每个人都需要考虑一件事,并非所有用户都知道如何设置他们的浏览器语言首选项。因此,如果您正在创建一个您希望人们看到的网站,那么如果他们以不同于他们熟悉的语言登陆它,这就是您的问题,因为这会增加他们将离开的变化。这在很大程度上取决于您的目标人群,但是对于网页,我认为至少可以检测系统语言是很好的,如果不能,则使用浏览器语言。它更可能是准确的。
【讨论】:
(直到寻找这个设置,作为一个说英语的人从来没有需要,我不知道如何改变它。这对我在意大利咖啡店度假真的很痛苦,甚至如果我使用语言栏更改系统语言。)以上是关于反正有没有使用javascript检测操作系统语言?的主要内容,如果未能解决你的问题,请参考以下文章
Javascript -- 检测用户的语言环境是不是设置为使用 12 小时或 24 小时时间格式