我需要使用JavaScript检测操作系统语言,以便根据语言查看我的网页。
我知道我们可以检测浏览器语言,但这对我来说不够用。
我需要检测操作系统语言。
提前感谢您的帮助。
我需要使用JavaScript检测操作系统语言,以便根据语言查看我的网页。
我知道我们可以检测浏览器语言,但这对我来说不够用。
我需要检测操作系统语言。
提前感谢您的帮助。
没有跨浏览器的方式可以实现这一点。Internet Explorer支持以下功能:
navigator.browserLanguage
:浏览器语言navigator.systemLanguage
:Windows系统语言navigator.userLanguage
:Windows用户特定语言但是,我不知道其他浏览器有没有办法访问这些设置,所以不要使用它们:如果您想要保持跨浏览器的功能,请坚持使用标准的navigator.language
(对应于浏览器语言)。如果您使用它们,将会将您的网站与特定系列的操作系统(例如Windows)和特定的浏览器(例如Internet Explorer)绑定在一起。您真的想这么做吗?
为什么浏览器语言对您的应用程序不足够呢?
navigator.language
,这个功能与Matthew的回答差不多。 - T.J. Crowdernavigator.language
相当于 navigator.browserLanguage
。 - Matthew Flaschen这将返回系统语言:
Intl.DateTimeFormat().resolvedOptions().locale
您可以考虑以下几个因素来猜测操作系统语言:
navigator.browserLanguage
:IE 语言(菜单、帮助等),与操作系统显示语言相同(如果用户没有更改)。如:控制面板 -> 区域和语言 -> 键盘和语言 -> 显示语言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
。flash
并利用flash.system.Capabilities.language:browser.language
,我认为这是因为它有自己的Flash。navigator.language
告诉您浏览器的UI语言(菜单、帮助等),您可以假设在绝大多数情况下它与操作系统语言匹配(特别是对于家庭计算机):在下载FF或Chrome时,根据用户的浏览器显示下载页面-在Windows中,IE的语言与操作系统相同。您可以使用用户代理(User Agent)。然而,它很容易被欺骗,不能保证包含语言信息,navigator.language
和navigator.browserLanguage
可能更可靠。
navigator.language
жҲ–navigator.browserLanguage
д»ҺжңӘиў«ж ҮеҮҶеҢ–пјҡhttps://developer.mozilla.org/en/Navigator.languageпјҢhttp://msdn.microsoft.com/en-us/library/ms533542(v=VS.85).aspxгҖӮIEиҝҳжҸҗдҫӣдәҶ`systemLanguage`е’Ң`userLanguage`гҖӮ - T.J. Crowdernavigator.language
返回 'en-GB'
navigator.languages
返回 ['en-GB', 'en-US', 'en', 'zh-CN']
注:我在Windows上使用Chrome测试过(不确定Mac是否也是同样的结果)。
这里有一件事情需要所有人考虑,不是所有的用户都知道如何设置他们浏览器的语言偏好。如果你正在制作一个希望人们能够看到的网站,那么如果他们以不同于自己舒适语言的语言进入该网站,这将增加他们离开的可能性,这是你的问题。很大程度上取决于你所针对的人群,但对于一个网页来说,我认为检测系统语言是好的,如果你可以的话,然后如果不能检测到,则回退到浏览器语言。这样更有可能准确。