无论如何使用javascript检测操作系统语言?

时间:2010-10-08 21:38:14

标签: javascript javascript-framework

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

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

我需要操作系统语言

提前致谢

4 个答案:

答案 0 :(得分:13)

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

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

但是无法从任何其他浏览器访问这些设置(我可以告诉),因此不使用它们:坚持使用标准navigator.language(对应于浏览器)语言)如果您想维护跨浏览器功能。如果您确实使用它们,则会将您的网站绑定到特定的操作系统系列(即Windows)和特定的浏览器(即Internet Explorer)。你真的想这样做吗?

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

答案 1 :(得分:3)

可能 猜测操作系统语言,考虑的因素很少:

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初步生成的不同语言的格式化日期集。

NB! Chrome会返回以其UI语言格式化的日期。

Adob​​e Flash

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

NB! Chrome不允许这个技巧 - Chrome的Flash始终显示browser.language,我认为因为它有自己的Flash。

Firefox和Chrome

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

在处理浏览器的环境参数时,Chrome确实非常奇怪,唉。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

这里的每个人都要考虑一件事,并非所有用户都知道如何设置他们的浏览器语言首选项。因此,如果你正在制作一个你想让人们看到的网站,那么如果他们用不同于他们所熟悉的语言的语言登陆它就是你的问题,因为它增加了他们将留下的变化。其中很大程度上取决于您所针对的受众特征,但对于网页,我认为至少可以检测系统语言,如果不能,则可以使用浏览器语言。它更可能是准确的。