Internationalization 在这一点上,Angular2 i18n?

Internationalization 在这一点上,Angular2 i18n?,internationalization,angular,Internationalization,Angular,我们决定给它一个旋转,我们开始使用Angular2的新项目。到目前为止还不错,但现在我们面临一个问题。在这一点上,Angular2的i18n的正确方法是什么?我们进行了一些研究,发现: 但最后一次提交时间超过5个月。。。看起来不像是积极的发展 有人试过使用角度转换或角度获取文本吗?或者使用Angular2更好地包装一些JS,比如i18next?有人能分享他们的想法吗?也许你也面临同样的问题 每个人都渴望正式实现,但这一个对我的用例有效: 自述文件是相当全面的,如果你需要一些真正特别的东西

我们决定给它一个旋转,我们开始使用Angular2的新项目。到目前为止还不错,但现在我们面临一个问题。在这一点上,Angular2的i18n的正确方法是什么?我们进行了一些研究,发现:

但最后一次提交时间超过5个月。。。看起来不像是积极的发展


有人试过使用角度转换或角度获取文本吗?或者使用Angular2更好地包装一些JS,比如i18next?有人能分享他们的想法吗?也许你也面临同样的问题

每个人都渴望正式实现,但这一个对我的用例有效:


自述文件是相当全面的,如果你需要一些真正特别的东西(对我来说是代码拆分),代码本身不会太长或太难阅读。

Plunk已更新为Angular 2Final:。事情似乎和RC7中的一样

新章节已添加到Angular 2官方文档中。基本上,它详细解释了在上面的plunkr中发生了什么

是唯一的翻译格式,不支持json。 应使用以下工具创建翻译源文件(xliff、xlf):

package.json

"scripts": {
  "i18n": "ng-xi18n", 
  ...
}

有关将翻译合并到组件模板中的详细信息,请参见本节。它是使用systemjstext插件完成的

另一个使用Gulp的示例

年长员工: 根据Herman Fransen提供的RC7和链接进行更新:

我举了一个最小的Plunkr示例:

对PRUNKR的评论:

  • bootstrap
    应提供
    TRANSLATIONS
    TRANSLATIONS\u格式
    LOCALE\u ID
    以及值->设置翻译
  • html模板中的可翻译项应使用指令
    i18n
  • 翻译存储在
    .xlf
    文件中。语言之间的联系是通过
    Id
    完成的,在
    xlf
  • 目前
    xlf
    文件未直接使用;手动创建
    .ts
    文件,将
    xlf
    的内容包装在可导出变量中。我想,这应该在最终版本中自动运行(甚至现在)
这是我发现的第一个官方记录的方法。 然而,它仍然几乎无法使用。我在当前的实施中看到了以下问题:

  • 语言设置为
    引导
    ,无法在运行时更改。这一点在最后阶段应该有所改变
  • 生成
    xlf
    中可翻译项的Id。当前获取此id的方法有点混乱:创建一个新的可翻译项,使用它,从错误中复制SHA id,然后粘贴到
    i18n.lang.xlf
    文件中
有一个关于i18n的大文档

年长员工: 发行说明有记录

i18n:合并翻译

Angular 2 RC5中引入了一大块i18n


不幸的是,仍然没有可用的文档。

对i18n的支持现在在Angular 2 RC6中是正式的

官方发布博客:

Angular 2 RC6的国际化示例

更多信息i18n的新概念如何在angular2中工作:

我找到了另一种方法,使用
管道
服务

HTML

<!-- should display 'hola mundo' when translate to Spanish -->
<p>{{ 'hello world' | translate }}</p>

我正在整理一个POC,官方文档至少可以说很繁琐,所以我尝试了ngx翻译,几分钟后我就让hello world开始工作了,这里有几个注意事项:

  • 我曾读到有人因为管道问题而抱怨性能,但读到github的问题,它似乎正在得到解决
  • 它仅用于i18n或翻译,不涉及i10n或本地化
  • Angular4几乎没有警告错误,但它仍然有效
  • 长话短说我喜欢ngx翻译,如果你有一个小应用程序,只需要翻译

    我个人想要本地化,所以我正在考虑
    . 它看起来很不错,但我还没有测试,所以我稍后会告诉你们,或者你们可以去试试,

    Angular.io中对i18n的官方支持如下:

    但是如文档中所述:

    您需要为应用程序构建和部署单独的应用程序版本 每种支持的语言

    这使得此功能在大多数情况下毫无用处

    除非您将在不使用CLI的情况下使用它,如下所述:


    我找到了。我将在这里介绍一下并分享经验:D.几周前我寻找了关于i18n的信息,但还没有尝试在实际项目中实现它。您可以在…中找到概述。。。请分享您使用ng2翻译的经验……在11月的AngularConnect会议上,他们提到i18n故事被推迟,但现在他们有一个人全职工作。@AdamNowaczyk您尝试过使用ng2翻译吗?我也在寻找解决方案……我看不到Angular2 RC6上的最新版本2.4.3对性能有多大影响。我们的网页设置,这可能会帮助很多。webpack创建的vendor.js仅增加约10KB,包括ng2翻译。因此,总体dowload只增加了1个请求(语言文件[13句],我们不想捆绑这些,其他语言文件应仅在语言更改时下载)。我们的网站有约30个组件,加载这些设置需要约13秒。请小心使用该库,它使用的是一个不纯净的管道,它会在组件的每一次更改时触发。。。性能不好这不是因为管道“不纯”,而是性能不好。官方的异步管道也是不纯的,TranslatePipe就是基于它的(原始代码几乎相同)。它必须是不纯净的
    <!-- 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'); 
    
    ...