Internationalization 在这一点上,Angular2 i18n?
我们决定给它一个旋转,我们开始使用Angular2的新项目。到目前为止还不错,但现在我们面临一个问题。在这一点上,Angular2的i18n的正确方法是什么?我们进行了一些研究,发现:Internationalization 在这一点上,Angular2 i18n?,internationalization,angular,Internationalization,Angular,我们决定给它一个旋转,我们开始使用Angular2的新项目。到目前为止还不错,但现在我们面临一个问题。在这一点上,Angular2的i18n的正确方法是什么?我们进行了一些研究,发现: 但最后一次提交时间超过5个月。。。看起来不像是积极的发展 有人试过使用角度转换或角度获取文本吗?或者使用Angular2更好地包装一些JS,比如i18next?有人能分享他们的想法吗?也许你也面临同样的问题 每个人都渴望正式实现,但这一个对我的用例有效: 自述文件是相当全面的,如果你需要一些真正特别的东西
有人试过使用角度转换或角度获取文本吗?或者使用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
- 语言设置为
,无法在运行时更改。这一点在最后阶段应该有所改变引导
- 生成
中可翻译项的Id。当前获取此id的方法有点混乱:创建一个新的可翻译项,使用它,从错误中复制SHA id,然后粘贴到xlf
文件中i18n.lang.xlf
不幸的是,仍然没有可用的文档。对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');
...