AngularJS本地化,国际化
国际化,简写为i18n,指的是使产品快速适应不同语言和文化。
本地化,简称l10n,是指使产品在特定文化和语言市场中可用。
对开发者来说,国际化一个应用意味着将所有的文字和其他因地区而异的数据从应用中抽离出来。
本地化意味着为这些抽离的数据和文字提供翻译和转变成本地的格式。
目前,AngularJS支持日期,数字和货币的国际化和本地化。
另外,AngularJS还通过ngPluralize指令支持本地多元化。
所有的AngularJS本地化组件都依赖于$locale服务,管理本地化规则(locale-specific rule sets)。
如果你想直接看例子,你可以在AngularJS开发包的i18n/e2e文件夹下找到这些例子。
一个地区(locale)是指一个按地理上,政治上,文化上划分的区域。常用的地区ID由两部分组成:语言代号和国家代号。比如,en-US, en-AU, zh-CN就是合法的地区ID,它们都含有语言代号和国家代号。 因为国家代号是可选的。所以像en, zh, and sk这样的id也是合法的。查看ICU网站来获取更多的地区ID信息。
对于AngularJS支持的地区,AngularJS按照数字,事件格式等规则分别放在不同的文件里,每个文件都对应一个指定的地区。你在AngularJS文件夹里可以找到一系列支持的地区。
有两种方法能使用新的地区规则:
1. 预捆绑规则
你可以通过将地区文件与angular.js捆绑,来实现对你想要使用的地区文件的预绑定。
比如在*nix系统中,你可以按照下面的命令,创建一个包含德国地区规则的angular.js文件:
cat angular.js i18n/angular-locale_de-ge.js > angular_de-ge.js
当应用使用angular_de-ge.js脚本而不是angular.js脚本时,AngularJS会自动使用德国本地化规则。
2. 将地区脚本载入到index.html
你也可以将指定的地区文件载入到index.html中。比如,当有客户端请求是来自德国的,你可以返回index_de-ge.html,这个文件看起来像下面这样:
<html ng-app>
<head>
….
<script src="angular.js"></script>
<script src="i18n/angular-locale_de-ge.js"></script>
….
</head>
</html>
第二种方式(在index.html中加载脚本)要更慢一些,因为需要额外加载脚本。
AngularJs的货币过滤器允许你使用地区服务里的默认货币符号,但是你也可以使用你自己定义了货币符号的过滤器。如果你的应用只在一个地区使用,那么使用默认的钱币符很好。但是如果你的应用在多地区使用, 你应该提供你自己的钱币符来确保钱币值能被正确理解。
比如说,如果你想显示1000美元的账户余额,使用下面这种带有钱币过滤器的表达式{{1000|currency}},并且你的应用目前是在en-US地区,那么'$1000.00'会被显示出来。但是,如果用户在其他地方使用(比如说,中国深圳)你的应用,它的浏览器会将地区指定成CN,'¥1000.00'就会被显示出来。这会迷惑你的用户。