是否存在使用javascript检测操作系统语言的方法?

是否存在使用javascript检测操作系统语言的方法?,javascript,javascript-framework,Javascript,Javascript Framework,我需要使用javascript检测操作系统语言,以便根据语言查看我的页面 我知道我们可以检测到浏览器语言,但这对我来说还不够 我需要操作系统语言 提前感谢您可以使用用户代理。但是,它很容易被欺骗,不能保证包含语言信息,而且navigator.language和navigator.browserLanguage可能更可靠。没有跨浏览器的方法来做到这一点。Internet Explorer支持以下功能: navigator.browserLanguage:浏览器语言 navigator.syste

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

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

我需要操作系统语言


提前感谢

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

没有跨浏览器的方法来做到这一点。Internet Explorer支持以下功能:

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

但是,无法从任何其他浏览器(我可以说)访问这些设置,因此不要使用它们:如果要保持跨浏览器功能,请坚持使用标准的
navigator.language
(对应于浏览器语言)。如果您确实使用了它们,您将把您的网站与特定的操作系统系列(即Windows)和特定的浏览器(即Internet Explorer)联系起来。你真的想这么做吗


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

每个人都要考虑的一件事,不是所有的用户都知道如何设置他们的浏览器语言偏好。因此,如果你正在制作一个你想让人们看到的网站,那么如果他们使用的语言与他们熟悉的语言不同,那就是你的问题,因为这会增加他们将离开的变化。这在很大程度上取决于你的目标人群,但对于一个网页,我认为如果你至少可以检测到系统语言,那么最好是检测到,如果你不能,那么就求助于浏览器语言。它更可能是准确的。

考虑到以下几个因素,您可能只需猜测操作系统的语言:

Windows操作系统 Internet Explorer
  • navigator.browserLanguage
    :IE语言(菜单、帮助等),与操作系统显示语言相同(如果用户未更改)。如控制面板->区域和语言->键盘和键盘->显示语言
  • navigator.systemLanguage
    :如控制面板->区域和语言->位置
  • navigator.userLanguage
    :与控制面板->区域和语言->格式中一样
ECMAScript国际化API 然后在服务器上搜索不同语言的初步生成的格式化日期集

注意!Chrome返回以其UI语言格式化的日期

Adobe Flash 如果您迫切需要了解操作系统语言-在页面中嵌入flash,并利用:

注意Chrome不允许这种把戏-Chrome的Flash总是显示
浏览器。语言
,我想是因为它有自己的Flash

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


在处理浏览器的环境参数时,Chrome本身就是一件很奇怪的事情,唉。

我想他说的是区域设置。
navigator.language
navigator.browserLanguage
,它从来没有被标准化过:,IE还提供了
systemLanguage
userLanguage
,这是你做不到的。您可以让您的用户明确选择一种语言,或者您可以遵守“接受语言”标题中列出的语言。我正在寻找navigator.systemLanguage,我可以将它与firefox一起使用,还是只使用IE?不,恐怕只有IE。然而,这些东西是复杂的。但是,我认为您应该仔细思考为什么浏览器的语言不够。@SzamDev:Firefox提供了
navigator.language
,这与Matthew的回答差不多。@T.J.
navigator.language
相当于
navigator.browserLanguage
@SzamDev:这是您用户的问题,不是你的。如果他们对你撒谎,那么,他们应该纠正这一点。你要处理的是浏览器,所以这是你应该处理的语言。(在寻找这个设置之前,作为一个说英语的人,我不知道如何更改它。这对我在意大利咖啡馆度假时来说真的是一件痛苦的事,即使我用语言栏更改了系统语言。)
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 г.'