Angular2 i18n在这一点上?
我们决定给它一个旋转,我们开始使用Angular2的新项目。 到目前为止这么好,但在这一点上,我们正面临一个问题。 在这一点上,Angular2的i18n的正确方法是什么? 我们研究了一下,发现了这一点:
- https://github.com/angular/i18n
不过最后一次提交已经超过5个月了…看起来不像是积极的发展。
任何人试图使用angular度翻译或angular度gettext? 或者,也许用Angular2最好包装像i18next JS? 任何人都能分享他们的想法 也许你面临同样的问题?
Plunk已更新为Angular 2 Final : https ://plnkr.co/edit/4euRQQ。 事情似乎和RC7一样。
Angular 2官方文档中增加了新的i18n部分。 基本上,它详细解释了在上面的plunkr发生了什么。
XLIFF是翻译的唯一格式,不支持json 。 应使用ng-xi18n工具创build翻译源文件(xliff,xlf):
package.json :
"scripts": { "i18n": "ng-xi18n", ... }
和
npm run i18n
有关将翻译合并到组件模板的详细信息,请参阅合并翻译部分。 它使用SystemJS Text插件完成。
另一个例子使用Gulp http://www.savethecode.com/angular2-i18n-native-support/
老员工 :根据RC7更新和Herman Fransen提供的链接:
我做了一个最小的Plunkr例子: https ://plnkr.co/edit/4W3LqZYAJWdHjb4Q5EbM
对plunkr的评论:
-
bootstrap
应该提供TRANSLATIONS
,TRANSLATIONS_FORMAT
,LOCALE_ID
值 – >设置翻译 - html-templates中可翻译的项目应该使用指令
i18n
- 翻译存储在
.xlf
文件中。 语言之间的关系是通过Id
来完成的,通过xlf
的<source>
标记的值xlf
- 目前
xlf
文件不能直接使用; 手动创build.ts
文件以将xlf
的内容xlf
在可导出的variables中。 我想,这应该在最终版本中自动工作(甚至可能是现在)。
这是我发现的第一个正式logging的方法。 但是,它仍然几乎不可用。 我在当前的实现中看到以下问题:
- 语言在
bootstrap
中设置,无法在运行时更改。 这应该在Final中改变。 - 在
xlf
可翻译项目的xlf
是生成SHA。 目前获得这个id的方法有点麻烦:你创build一个新的可翻译的项目,使用它,从错误中复制SHA ID并粘贴到你的i18n.lang.xlf
文件中。
有关国际文件的大量文件请求
老员工 :发行说明https://github.com/angular/angular/blob/master/CHANGELOG.md有logging
i18n :合并翻译7a8ef1e
Angular 2 RC5中引入了大量国际化的i18n
不幸的是,还没有可用的文件。
每个人都渴望官方的实施,但这个工作为我的用例: https : //github.com/ocombe/ng2-translate
自述文件是相当彻底的,如果你需要一些特别的东西(对我来说是代码分割),代码本身不会太长或难以阅读。
现在支持i18n现在是Angular 2 RC6的官方版本
官方发布博客:
https://angularjs.blogspot.nl/2016/09/angular-2-rc6_1.html
Angular 2 RC6的国际化样本
https://github.com/StephenFluin/i18n-sample
更多信息i18n的新概念如何在angular2中工作:
https://lingohub.com/blog/2015/03/angular-2-i18n-update-ng-conf-2015
我发现另一种使用pipe
和service
来实现这一点的方法
HTML
<!-- should display 'hola mundo' when translate to Spanish --> <p>{{ 'hello world' | translate }}</p>
打字稿
... // "this.translate" is our translate service this.translate.use('es'); // use spanish ... // should display 'hola mundo' when translated to Spanish this.translatedText = this.translate.instant('hello world'); ...
教程
在Angular.io中有一个官方的i18n支持:
https://angular.io/docs/ts/latest/cookbook/i18n.html
但! 正如在文档中提到的那样:
您需要为每种受支持的语言构build和部署单独的应用程序版本!
这使得这个function在大多数情况下是无用的
除非您按照以下说明使用CLI:
https://devblog.dymel.pl/2016/11/03/angular2-and-i18n-translate-your-app/
我正在把POC放在一起,官方文档至less说起来很麻烦,所以我尝试了ngx-translate http://www.ngx-translate.com/,而且我几分钟就打好了Hello world,几个警告:
- 我读过人们抱怨的performance,因为pipe道,但阅读github的问题,似乎它得到了解决
- 它只是为了i18n或翻译它不处理i10n或本地化
- Angular4有很less的警告错误,但它可以正常工作
长话短说我喜欢ngx翻译,如果你有一个小应用程序,只需要翻译
我个人想本地化,所以我在看https://github.com/robisim74/angular-l10n 。 它看起来不错,但我还没有testing,所以我会让你知道,或者你们可以去,我们都尝试