浅析 AngularJS 全球化最优方案(二)
来源:互联网 发布:linux mysql源码安装 编辑:程序博客网 时间:2024/05/17 07:14
上节我们谈到在 AngularJS 里面拿当前浏览器 Locale 的3种方式,本节我们主要讨论下 AngularJS 里面自带的 $locale 服务和用原生 JS 如何获取浏览器 Locale,严谨的角度来说是获取当前用户浏览器的语言列表或者是浏览器UI语言。
首先我们聊下 AngularJS 里面的$locale 服务,很棒的概览,会让人感觉眼前一亮,但当我们研读了它的源码后,我们会有些许的失望:
'use strict';/** * @ngdoc service * @name $locale * * @description * $locale service provides localization rules for various Angular components. As of right now the * only public api is: * * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`) */
目前为止AngularJS 支持的locale 服务还是很弱, 仅提供了一个locale id的格式接口。那么回到鼻祖原生JS,如何获取浏览器当前的语言或者浏览器UI语言。其实 W3C 定义html5 API 规格里面是这样写的:
- window .
navigator
.language
- Returns a language tag representing the user's preferred language.
而具体到实现,每个浏览器上面的实现是很狂野的。
Internet Explorer
navigator.languagesSorry! 暂不支持。
navigator.userLanguage 返回用户设定的第一个语言,可以在 Internet Options > General > Languages 修改。
navigator.browserLanguage 返回当前浏览器UI语言,用户不能修改。跟安装时选择的可执行文件版本相关。
navigate.systemLanguage 返回当前OS的语言。
Firefox
navigator.language返回用户设定的第一个语言,可以在Internet Options > General > Languages 修改。
Safari
navigator.systemLanguage 在 Safari里面语言定义是系统层面的,不能在重载。
Chrome
navigator.language 非常坚定,不为用户首选语言而动摇,坚持一个浏览器 UI 语言为方针。但是做人要公道,之前在写 chrome 的插件时,意外发现一个 API 可以返回用户语言列表,这个是一个异步的API。
chrome.i18n.getAcceptLanguages(function(requestedLocales) {
// 'requestedLocales' is an array of strings.
});
不知不觉夜以深,总结下从前端或者从JS的角度获取用户偏好的语言信息有一定难度,主要体现在API的缺失和对应实现的不一致性。
下一个章节我们会谈到如何获取http请求头里面的accept-language和权重信息,以及不同方式之间的差异性。
- 浅析 AngularJS 全球化最优方案(二)
- 浅析 AngularJS 全球化最优方案(一)
- 浅析 AngularJS 全球化最优方案(三)
- 浅析 AngularJS 全球化最优方案(四)
- 浅析 AngularJS 全球化最优方案(五)
- 浅析 AngularJS 全球化最优方案(六)
- 浅析Oracle三层全球化支持(NLS)
- 【不错】浅析Oracle三层全球化支持(NLS)
- 乘地铁方案的最优选择二(票价,距离)Floyd算法
- hdu 4504(背包最优方案数)
- 最优分解方案(贪心+高精乘单精)
- 浅析AngularJS
- AngularJS入门(二)
- AngularJS 教程(二)
- AngularJS学习(二)
- AngularJS学习(二)
- AngularJs教程(二)
- AngularJS入门(二)
- java常用小技巧!
- 如何学好设计模式?
- POJ - 2674 Linear world(弹性碰撞)
- Git教程4——Git分支
- Dijkstra+堆优化 模板
- 浅析 AngularJS 全球化最优方案(二)
- JavaWeb JSP技术(上)
- Android控制文字水平间距android:letterSpacing
- 浏览器页面加载性能
- 解决Windows下载(Downloads)目录打开速度异常慢的问题
- 浅析 AngularJS 全球化最优方案(三)
- Maven入门
- js,easyui关闭当前的窗口!
- 浅析 AngularJS 全球化最优方案(四)