对于一些技术小伙伴来说,有的时候会遇见国际化的需求。这个时候就得知道用户到底用的是什么样的系统语言了(用户第一次打开你的网站的时候,需要知道该用户用的系统语言亦或是浏览器的语言)。在web端应该如果获取我们需要的参数呢?

一、navigator

Navigator 对象包含有关浏览器的信息。根据MDN的统计,Navigator参数在各大浏览器都是被支持的,如下图:

所以,我们可以大胆的在每个浏览器使用。

而关乎系统或者是浏览器语言的属性,就是navigator.language和navigator.languages两个字段了。如下图:

而我们一般来说采取的就是language,如果现实的是“zh-CN”,表示当前的系统/浏览器是中文的环境。

本来,这是一个非常容易的需求,但是,公司的测试发现在windows中的chrome或者Firefox浏览器在系统语言为英文的环境中,navigator.language仍旧是“zh-CN”。这其实不难理解,说明JS还真的是取不到系统的语言类型,只能够获取浏览器的属性系统。IE和opera在几年前是navigator.browerLanguage来获取浏览器的语言,并且通过navigator.systemLanguage获取系统(计算机)语言。但是,后来全部浏览器都用navigator存储浏览器的信息,而ie等浏览器也不能够通过参数获取系统语言了。所以,这里需要说明的是,JS不能够获取系统语言的。

二、浏览器设置成为了英文,但是仍展示中文?

我构建了一个虚拟机,虚拟机是windows环境并且是专业版的,计算机的语言我先设置成了英文的,但是,我打开chrome等浏览器,navigator.language仍旧没有我要扥“en”类型的,而且,navigator.languages是一个数组,数组里边居然也不包含“en”类型的字段,这就神奇了。不管是重启电脑还是重启虚拟机,都无事于补。再后来,我设置了语言为英文,仍旧是展示中文的。这就纳闷了。

但是这里疏忽了一点,就是没有去chrome浏览器设置里边设置,语言环境,如下图设置:

添加完成如下,

这个时候,如果重启浏览器仍旧navigator.language还是获取不到包含“en”的,因为需要在设置里边的语言项目中将英文拖到第一位。

这样navigator.language就是获取到了第一个语言含有“en”字段的了。

三、为什么这么神奇呢?

以上截图是MDN的官方说法,也就是说即使你的浏览器设置了英文,也是没有用的,需要将该语言移动到所有语言的前边。

navigator.language 代表的不是浏览器的语言,而是用户更喜欢的语言,这才是最正确的说法。

不过,国际化最好有一个可以切换的按钮,需要用户主动选择,这样可以保证用户用什么类型的语言,一劳永逸了。

JS获取系统语言、浏览器语言navigator.language和navigator.languages相关推荐

  1. html 获取浏览器语言,js之获取浏览器语言

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 今天看代码的时候看到了navigator.language以及navigator.browserLanguage 那这些 ...

  2. navigator 与语言相关的属性在各大浏览器的差异,及获取浏览器语言的正解

    问题描述 各浏览器对 navigator 对象中几个与语言相关的属性(language.userLanguage.browserLanguage. systemLanguage)的返回值存在很大的差异 ...

  3. html js 浏览器语言,js 判断浏览器语言的方法

    今天遇到一个要根据浏览器设置语言的类型,来展示网站的字体.比如,浏览器的语言是中文简体,那么网站也要显示中文简体字,如果是繁体或是英文都要根据浏览器当前设置的语言进行显示.那么,飞鸟慕鱼博客来和大家说 ...

  4. html页面国际化之谷歌翻译js实践,支持通过判断浏览器语言自动将中文翻译成英文

    实践过程 最近boss提出了一个需求,需要支持打开的页面自动翻译成英文,csdn来回找资料,最终确定使用谷歌翻译js插件,这个插件测试只支持手动翻译,没能满足打开页面通过判断浏览器语言自动翻译成英文的 ...

  5. 前端获得浏览器语言,如果是英文,则进行页面跳转

    前端获得浏览器语言,如果是英文,则进行页面跳转 你可以在前端使用 `navigator.language` 或 `navigator.userLanguage` 获取浏览器的语言设置.其中,`navi ...

  6. 获取浏览器语言的解决方案

    1.问题分析 首先查看一下 navigator 对象中的这几个与 language 相关的属性. navigator 对象包含有关浏览器的信息.没有应用于 navigator 对象的公开标准,不过所有 ...

  7. navigator.language 代表的是浏览器的语言?

    navigator.language 代表的不是浏览器的语言,而是用户更喜欢的语言,也就是各浏览器优先语言排行榜的第一名,但是chrome这回让我们失望了,火狐是可以的? 手机端在设置 里面改变语言, ...

  8. js获取浏览器语言(ie、ff、chrome)、contextpath

    js获取浏览器语言(ie.ff.chrome).contextpath /js获取浏览器语言(ie.ff.chrome) Java代码   var language_en_us = "en- ...

  9. html 获取浏览器语言,js获取浏览器类型和语言

    js代码如下: // 获取终端的相关信息 var Terminal = { // 辨别浏览器类型 browserType : function(){ var u = navigator.userAge ...

最新文章

  1. 设计模式笔记(1)---开篇(文章索引)
  2. sqlalchemy如何在查询时给一个常量加标签(label)
  3. scrapy-splash抓取动态数据例子八
  4. CS231n课程笔记翻译系列之目录汇总
  5. 实验一线性表的基本操作实现及其应用(JavaScript实现)
  6. 前端如何实现:在不刷新页面的情况下实时看到自己的评论
  7. 初学者应该了解的一些SQL语句及hr 用户解锁相关
  8. java swing 一闪而过_Java代码,为什么图形会一闪而过,怎么修改?
  9. 01数据库基本设计规范
  10. 数据库知识 | 关系型数据库与非关系型数据库小记录
  11. One River CEO:从长远来看比特币可能达到每枚50万美元
  12. 浅谈CSS选择器中的空格
  13. memset()函数及其作用
  14. javaScript 解析 xml
  15. 【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)
  16. day-60Django
  17. 扇贝有道180929每日一句
  18. 转载python操作wps V9 API,测试好用
  19. VGA常用分辨率及计算方法
  20. 跨专业北邮计算机考研,北京邮电大学跨专业考研心得

热门文章

  1. 基于stc89c52单片机的密码锁制作
  2. VS(C#)调用Basler相机SDK采集图像及基本功能设定
  3. Chrome 扩展教程之如何使用 React 构建 Chrome 扩展(教程含源码)
  4. 解决conda install 出现的源报错问题
  5. 软件工程概论 结构化分析与设计作业2
  6. Audition学习笔记(01)
  7. 关于Adobe Audition的相关问题
  8. Qt中QLineEdit(取值、赋值、背景文字、字体样式)、QTextEdit(取值、赋值)和QPlainTextEdit使用介绍
  9. 操作系统原理学习(第三周_上)_进程
  10. 分享一些提升效率的小工具