22

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

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

我需要操作系统语言

提前谢谢你

1
  • 2
    你不能这样做。你可以让你的用户显式地选择一种语言,或者你可以遵守“Accept-language”标题中列出的语言。
    – 波蒂
    评论 2010年10月8日21时45分

6个答案6

重置为默认值
25

这将返回系统语言:

国际日期时间格式().resolvedOptions().locate
4
  • 1
    为什么这不是正确的答案?它在主浏览器中运行良好。我在Chrome、Firefox和Internet Explorer(Microsoft Edge)上进行了测试。 评论 2022年6月1日13:07
  • 这个问题是12年前提出的,所以这是一件事。我很想看看堆栈溢出是否能随着时间的推移更好地更改答案。 评论 2022年6月29日18:17
  • 这是浏览器的语言设置,而不是操作系统的 评论 2022年10月13日7:30
  • @用户13904118对我来说,导航器.语言显示的值(en-GB)与国际日期时间格式().resolvedOptions().locale(es-es),而最后一个是我希望看到的。 评论 6月22日8:07
24

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

  • navigator.browser语言:浏览器语言
  • navigator.systemLanguage(导航程序系统语言):Windows系统语言
  • 导航器.userLanguage:Windows用户特定语言

但无法从任何其他浏览器(我可以说)访问这些设置,所以不要用它们:坚持标准导航器.语言(对应于浏览器语言)。如果您使用它们,您将把您的网站绑定到特定的操作系统系列(即Windows)和特定的浏览器(即Internet Explorer)。你真的想这么做吗?

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

7
  • 我正在寻找navigator.systemLanguage,我可以将其与firefox一起使用,还是仅使用IE??
    – 萨利赫
    评论 2010年10月8日21:45
  • 1
    不,只是我害怕。然而,这件事很复杂。然而,我认为你应该仔细思考为什么浏览器的语言还不够。 评论 2010年10月8日21:46
  • 1
    @T。J。导航器.语言相当于navigator.browser语言. 评论 2010年10月8日21:50
  • 1
    关于您的问题,为什么浏览器语言不适合您的应用程序?我有每种语言的页面,我想在检测到操作系统语言后重定向到此页面或显示它,因为有时浏览器语言可能与操作系统不同
    – 萨利赫
    评论 2010年10月8日21:56
  • 1
    @SzamDev:这是你用户的问题,不是你的。如果他们对你撒谎,那么,他们应该解决这个问题。你正在处理浏览器,所以这就是你应该处理的语言。 评论 2010年10月8日22:02
5

可以只是猜测操作系统语言考虑的因素很少:

Windows操作系统

Internet Explorer(Internet Explorer)

  • navigator.browser语言:IE语言(菜单、帮助等),与操作系统显示语言相同(如果用户没有更改)。如控制面板->区域和语言->键盘和语言->显示语言
  • 导航器.systemLanguage:如“控制面板”->“区域和语言”->“位置”中所示
  • 导航器.userLanguage:与“控制面板”->“区域和语言”->“格式”中的相同

ECMAScript国际化API

var d=新日期(日期UTC(2014年1月1日、26日、3月0日));var dateFormat={weekday:“long”,year:“numeric”,month:“lond”,day:”numeric“};var result=d.toLocaleDateString(“i-default”,dateFormat);警报(结果);//例如,对于俄语格式(控制面板->区域和语言->格式)//result==‘2014年Г

然后搜索结果在服务器上以不同语言初步生成的格式化日期集。

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

Adobe Flash

如果您迫切需要了解操作系统语言-嵌入闪光并利用闪光灯系统。能力.语言:

注意! Chrome不允许使用此技巧-Chrome的Flash始终显示浏览器.语言,我想是因为它有自己的Flash。

Firefox和Chrome

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

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

2

您可以使用用户代理。然而,它很容易被欺骗,不保证包含语言信息,以及导航器.语言navigator.browser语言可能会更可靠。

2
2

您可以通过以下方式从js中获取默认语言和支持的语言:

导航器.语言

返回“en-GB”

导航器.语言

退换商品[‘n-GB’,‘en-US’,‘en’,‘zh-CN’]

PS:我在Windows上测试了Chrome(不确定Mac是否也能正常工作)

1
1

这里的每个人都需要考虑一件事,不是所有的用户都知道如何设置他们的浏览器语言首选项。因此,如果你正在创建一个你想让人们看到的网站,那么如果他们使用的语言与他们熟悉的语言不同,这就是你的问题,因为这会增加他们离开的机会。这在很大程度上取决于你的目标人群,但对于一个网页来说,我认为如果你能检测到系统语言,那么最好是检测出系统语言,如果你不能,那么就返回到浏览器语言。这更有可能是准确的。

1
  • (在寻找这个设置之前,作为一个从来不需要英语的人,我不知道如何改变它。这对我在意大利咖啡馆度假的时候来说真的很痛苦,即使我用语言栏改变了系统语言。)
    – 丹尼
    评论 2012年12月10日15:31

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.