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应该提供TRANSLATIONSTRANSLATIONS_FORMATLOCALE_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

我发现另一种使用pipeservice来实现这一点的方法

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,几个警告:

  1. 我读过人们抱怨的performance,因为pipe道,但阅读github的问题,似乎它得到了解决
  2. 它只是为了i18n或翻译它不处理i10n或本地化
  3. Angular4有很less的警告错误,但它可以正常工作

长话短说我喜欢ngx翻译,如果你有一个小应用程序,只需要翻译

我个人想本地化,所以我在看https://github.com/robisim74/angular-l10n 。 它看起来不错,但我还没有testing,所以我会让你知道,或者你们可以去,我们都尝试

Interesting Posts