JS获取系统语言、浏览器语言navigator.language和navigator.languages
对于一些技术小伙伴来说,有的时候会遇见国际化的需求。这个时候就得知道用户到底用的是什么样的系统语言了(用户第一次打开你的网站的时候,需要知道该用户用的系统语言亦或是浏览器的语言)。在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相关推荐
- html 获取浏览器语言,js之获取浏览器语言
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 今天看代码的时候看到了navigator.language以及navigator.browserLanguage 那这些 ...
- navigator 与语言相关的属性在各大浏览器的差异,及获取浏览器语言的正解
问题描述 各浏览器对 navigator 对象中几个与语言相关的属性(language.userLanguage.browserLanguage. systemLanguage)的返回值存在很大的差异 ...
- html js 浏览器语言,js 判断浏览器语言的方法
今天遇到一个要根据浏览器设置语言的类型,来展示网站的字体.比如,浏览器的语言是中文简体,那么网站也要显示中文简体字,如果是繁体或是英文都要根据浏览器当前设置的语言进行显示.那么,飞鸟慕鱼博客来和大家说 ...
- html页面国际化之谷歌翻译js实践,支持通过判断浏览器语言自动将中文翻译成英文
实践过程 最近boss提出了一个需求,需要支持打开的页面自动翻译成英文,csdn来回找资料,最终确定使用谷歌翻译js插件,这个插件测试只支持手动翻译,没能满足打开页面通过判断浏览器语言自动翻译成英文的 ...
- 前端获得浏览器语言,如果是英文,则进行页面跳转
前端获得浏览器语言,如果是英文,则进行页面跳转 你可以在前端使用 `navigator.language` 或 `navigator.userLanguage` 获取浏览器的语言设置.其中,`navi ...
- 获取浏览器语言的解决方案
1.问题分析 首先查看一下 navigator 对象中的这几个与 language 相关的属性. navigator 对象包含有关浏览器的信息.没有应用于 navigator 对象的公开标准,不过所有 ...
- navigator.language 代表的是浏览器的语言?
navigator.language 代表的不是浏览器的语言,而是用户更喜欢的语言,也就是各浏览器优先语言排行榜的第一名,但是chrome这回让我们失望了,火狐是可以的? 手机端在设置 里面改变语言, ...
- js获取浏览器语言(ie、ff、chrome)、contextpath
js获取浏览器语言(ie.ff.chrome).contextpath /js获取浏览器语言(ie.ff.chrome) Java代码 var language_en_us = "en- ...
- html 获取浏览器语言,js获取浏览器类型和语言
js代码如下: // 获取终端的相关信息 var Terminal = { // 辨别浏览器类型 browserType : function(){ var u = navigator.userAge ...
最新文章
- 设计模式笔记(1)---开篇(文章索引)
- sqlalchemy如何在查询时给一个常量加标签(label)
- scrapy-splash抓取动态数据例子八
- CS231n课程笔记翻译系列之目录汇总
- 实验一线性表的基本操作实现及其应用(JavaScript实现)
- 前端如何实现:在不刷新页面的情况下实时看到自己的评论
- 初学者应该了解的一些SQL语句及hr 用户解锁相关
- java swing 一闪而过_Java代码,为什么图形会一闪而过,怎么修改?
- 01数据库基本设计规范
- 数据库知识 | 关系型数据库与非关系型数据库小记录
- One River CEO:从长远来看比特币可能达到每枚50万美元
- 浅谈CSS选择器中的空格
- memset()函数及其作用
- javaScript 解析 xml
- 【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)
- day-60Django
- 扇贝有道180929每日一句
- 转载python操作wps V9 API,测试好用
- VGA常用分辨率及计算方法
- 跨专业北邮计算机考研,北京邮电大学跨专业考研心得
热门文章
- 基于stc89c52单片机的密码锁制作
- VS(C#)调用Basler相机SDK采集图像及基本功能设定
- Chrome 扩展教程之如何使用 React 构建 Chrome 扩展(教程含源码)
- 解决conda install 出现的源报错问题
- 软件工程概论 结构化分析与设计作业2
- Audition学习笔记(01)
- 关于Adobe Audition的相关问题
- Qt中QLineEdit(取值、赋值、背景文字、字体样式)、QTextEdit(取值、赋值)和QPlainTextEdit使用介绍
- 操作系统原理学习(第三周_上)_进程
- 分享一些提升效率的小工具