一、I18n and L10n in AngularJS

1. 什么是I18n和L10n?

国际化(Internationalization),简称I18n,是让产品开发在一个他们可以简单地对产品进行语言、文化的本地化的方法的规范。本地化(Localization),简称L10n,一个使得应用、文本有适应特殊的文化或者语言市场的能力的规范。对于应用开发者,使一个程序国际化,意味着需要从程序中抽取所有字符串和其他区域较为特别的地方(例如日期和货币格式)。使一个程序本地化,意味着需要提供根据I18n抽取出来的块进行翻译和格式本地化。

2. 当前angular支持什么级别的I18n、L10n?

当前,angular对datetime、number、currency过滤器提供I18n、L10n支持。

此外,angular通过ngPluralize directive(http://docs.angularjs.org/api/ng.directive:ngPluralize)支持多元化的本地化。

所有可本地化的控件都依赖于通过$locale服务管理的区域设定特性规则集。

为了让读者看到实际例子,官方准备了一些网页例子,展示如何通过区域规则集合变量使用angular过滤器。我们可以在Github(https://github.com/angular/angular.js/tree/master/i18n/e2e)或者在angular开发包中的i18n/e2e中找到对应的例子。

3. 什么是区域id(locale id)?

locale是一个特定地理、政治、文化的地区。最常用的locale id 由两部分组成:语言代码和国家代码。例如,en-US,en-AU,zh-CN都是有效的locale ID,都包含语言代码和国家代码。因为在locale ID中指定的国家编码是可选的,locale ID,例如en、zh和sk都是有效的。查看网站ICU(http://userguide.icu-project.org/locale),那里有更多关于locale ID的信息。

4. angular支持的locale

angular将数字、日期时间格式的规则集合分开放在不同的文件中,每个文件独有一个区域。我们可以在这里(https://github.com/angular/angular.js/tree/master/i18n/locale)找到当前支持的locale列表

二、在angular中定制locale规则

在angular中定制locale有两个方式:

1. 预先绑定的规则集合(Pre-bundled rule sets)

我们可以通过将locale-specific的文件连接到angular.js或者angular.min.js之后,实现将angular和预先绑定(pre-bundle)期望的locale文件。

例如,在*nix中,我们可以通过以下命令来创建一个包含德国区域本地化规则的文件的angular.js文件:

cat angular.js i18n/angular-locale_de-ge.js > angular_de-ge.js

当从应用程序使用angular_de-ge.js脚本代替一般的angular.js脚本开始,angular开始自动预先配置(pre-configured)德国地区的本地化规则。

2. 包含locale js脚本到index.html页

我们也可以包含指定区域的js文件到页面当中。例如,如果一个客户端需要德国区域文件,我们可以提供类似以下的页面:

...

...

...

上述两种方法,都要求我们为本地化而提供各个区域的不同的index.html页或者js文件。我们还需要配置我们的服务器提供正确的、符合期望的区域设置文件。

然而,第二种方式(包含区域设置文件到页面中)会比较慢,因为需要多加载一个脚本。(-_-!!!!)。

三、陷阱(“Gotchas”)

1. 货币符号陷阱

angular的currency filter允许我们从locale service中使用默认的货币符号,我们也可以提供自定义的货币符号。如果我们的应用只在一个区域中使用,那么我们可以依赖(设置)默认货币符号。但是,如果我们预料到其他区域的用户也会使用到我们的应用的话,我们应该提供我们自定义的货币符号,确保用户能够明白实际的值。

例如,如果我们想通过绑定currency filter来显示账户余额为1000元:{{ 1000 | currency}},我们的应用当前是使用en-US的区域设置,那么将会显示”$1000.00”。然而,如果一些其他区域(例如中国大陆)的用户访问我们的应用,用户浏览器会指定区域设置为“中国大陆”,然后余额将显示为“¥1000.00”(很悲催的错误啊,汇率...)。

在这个例子中,当我们需要设置filter的时候,我们需要通过对currency filter(http://docs.angularjs.org/api/ng.filter:currency)提供货币符号作为参数来重写默认货币符号,参数如:USD$。这样,angular会忽略任何区域设置的变化,一直显示余额为“USD$1000.00”。

2. 翻译长度陷阱

记住,翻译字符串、事件格式时,长度的变化可能会很大。例如“June 3, 1977”翻译为西班牙语时变为“3 de junio de 1977”。当然,还可能会有更加极端的状况。因此,当我们对应用进行国际化时,我们需要设置相应的CSS规则并且进行全面测试,确保UI组件不会折行(变型)。

3. 时区

记住,angular的datetime filter是使用浏览器端设置的时区的。所以,同一个应用将根据运行应用的计算机的时区设置而显示不同的时间信息,而不是取决于javascript或者angular的开发者指定的时区。

时间: 2016-08-31

l10n php download,AngularJs 国际化(I18n/L10n)详解相关推荐

  1. /etc/sysconfig/i18n文件详解

                    编辑/etc/sysconfig/i18n这个文件, 不管你装的是中文版,还是英文版.删掉原来的设置,把下面的拷贝过去 LANG="zh_CN.GB18030 ...

  2. 【Linux】/etc/sysconfig/i18n文件详解

    转载地址:https://blog.csdn.net/fu_zk/article/details/41728733 i18n是internationalization的缩写,意思指i和n之间有18个字 ...

  3. linux没有i18n文件,【Linux】/etc/sysconfig/i18n文件详解

    i18n是internationalization的缩写,意思指i和n之间有18个字母./etc/sysconfig/i18n里面存放着系统的区域语言设置,可以使linux系统支持国际化信息显示.就是 ...

  4. 3分钟实现iOS语言本地化/国际化(图文详解)

    为什么80%的码农都做不了架构师?>>>    原文 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往 ...

  5. angularjs之ng-class指令详解

    angularjs中通常使用ng-class指令生成不同样式,以下总结使用方法: 一 ng-class使用字符串 <div class="well"><div c ...

  6. AngularJS 详解Directive(指令)机制

    AngularJS  5个实例详解Directive(指令)机制 大漠穷秋  http://damoqiongqiu.iteye.com/blog/1917971 1.一点小说明 指令的作用:实现语义 ...

  7. colsure php_PHP_PHP中Closure类的使用方法及详解,Closure,匿名函数,又称为Anonym - phpStudy...

    PHP中Closure类的使用方法及详解 Closure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的.匿名函数就是没有定义名字的函数.这点牢牢记住就能理解匿名函 ...

  8. 分享《TCP-IP详解-三卷》及《TCP/IP 技术大全》下载

    转自 http://bbs.chinaunix.net/viewthread.php?tid=271724 <TCP-IP详解,卷1:协议>书 pdf格式 http://www.laogu ...

  9. 软件I18N/L10N软件国际化与本地化

    I18N/L10N:是指软件的国际化和本地化,通俗的讲就是语言的国际化和本地化.国际语言:英语.汉语.德语...  本地化:繁体.简体.藏语...国家内部的语言. I18N: 软件国际化,即inter ...

最新文章

  1. 神舟台式计算机图片,扩展性媲美台式机!神舟战神K780G拆机图赏
  2. [YTU]_2437 (C++ 习题 比较大小-类模板)
  3. 如何选择专业的Java软件工程师培训机构
  4. Linux内核启动流程分析(一)【转】
  5. 从Vue.js源码中我学到的几个实用函数
  6. 鸿蒙系统开发资金,华为终于动手,将拿出超十亿资金,开发者们有福了
  7. 【Java】OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes…… 的解决方法
  8. matlab贝塞尔函数的根,matlab画贝塞尔函数根分布的曲线图.doc
  9. php mysql敏感词_用PHP如何实现敏感词过滤
  10. RTL8761ATV-CG蓝牙芯片4.0模块Realtek蓝牙驱动
  11. I. 知识图谱 应用案例
  12. 网站域名被微信/QQ红了(被封锁、被屏蔽、被和谐)后最好的解决方法
  13. 053试题 - 320/321/322/323/324/326/330/332/544/553/585/586/587/588/589/592/596/597/598/599 rman backup
  14. HTML前端开发入门之表单标签/labei标签/datalist标签
  15. HEVC(H.265)标准的编码器(x265,DivX265)试用
  16. 深信服设备连接linux,deepin官方论坛-深度科技官网旗下网站
  17. eplan 电箱布局_Eplan D布局步骤
  18. PCB设计中的Mark点
  19. 如何利用MSDN在线查询MFC里面的API
  20. 木材加工 解题报告

热门文章

  1. OpenCV 4.0学习笔记
  2. Android studio开发工具安装与配置
  3. 【C语言典例】——day5:小球下落
  4. Ubuntu修改mtu
  5. HDI线路板棕化与黑化的区别和作用
  6. 2022年好用的蓝牙耳机有哪些?2022年蓝牙耳机推荐
  7. w8计算机配置要求,安装Win8对电脑硬件的配置要求
  8. 如何在 Linux 中检查打开的端口?
  9. 关于子网掩码怎么计算!!!!我终于搞懂了!!!!
  10. 深度测试和Z缓存专场