試してみることにし、Angular2を使用した新しいプロジェクトを開始しました。これまでのところは良いですが、この時点で問題に直面しています。この時点で、Angular2のi18nへの適切なアプローチは何ですか?私たちは少し調べて、これを見つけました:
ただし、最後のコミットは5か月以上前です...活発な開発のようには見えません。
誰もangular-translateまたはangular-gettextを使用しようとしましたか?それとも、Angular2でi18nextのようなJSをラップする方が良いでしょうか誰もが自分の考えを共有できますか?たぶん同じ問題に直面したのでしょうか?
PlunkはAngular 2Finalに更新されました: https://plnkr.co/edit/4euRQQ 。 RC7と同じように動作するようです。
新しい i18n セクションがAngular 2つの公式ドキュメントに追加されました。基本的に、上記のplunkrで何が起こるかを詳細に説明します。
XLIFF は翻訳の唯一の形式であり、jsonサポートはありません。翻訳ソースファイル(xliff、xlf)は ng-xi18n ツールを使用して作成する必要があります。
package.json:
"scripts": {
"i18n": "ng-xi18n",
...
}
そして
npm run i18n
翻訳をコンポーネントテンプレートにマージする方法の詳細については、 Merge translation セクションを参照してください。 SystemJS Textプラグインを使用して完了しました。
Gulpを使用した別の例 http://www.savethecode.com/angular2-i18n-native-support/
古いスタッフ:RC7およびハーマン・フランセン:
最小限のPlunkrの例を作成しました: https://plnkr.co/edit/4W3LqZYAJWdHjb4Q5EbM
Plunkrへのコメント:
bootstrap
は、TRANSLATIONS
、TRANSLATIONS_FORMAT
、LOCALE_ID
に値を指定する必要があります->翻訳のセットアップi18n
を使用する必要があります.xlf
ファイルに保存されます。言語間の関連付けは_Id
を介して行われ、htmlとxlf
の<source>
タグの値によって関連付けられますxlf
ファイルは直接使用されていません。 .ts
ファイルは、xlf
の内容をエクスポート可能な変数にラップするために手動で作成されます。これは最終リリースで自動的に機能するはずです(おそらく今でも)。これは、私が見つけた公式に文書化された最初のアプローチです。ただし、まだほとんど使用できません。現在の実装には次の問題があります。
bootstrap
に設定されており、実行時に変更できません。これはFinalで変更する必要があります。xlf
の翻訳可能なアイテムのIDはSHAを生成します。このIDを取得する現在の方法は少し面倒です。新しい翻訳可能なアイテムを作成し、それを使用して、エラーからSHA idをコピーし、i18n.lang.xlf
ファイルに貼り付けます。大きなドキュメントがあります pull request i18nについて
旧スタッフ:リリースノート https://github.com/angular/angular/blob/master/CHANGELOG.md have記録
i18n:翻訳のマージ 7a8ef1e
i18nの大きなチャンクがAngular 2 RC5に導入されました
残念ながら、まだ利用可能なドキュメントはありません。
誰もが公式の実装に熱心ですが、これは私のユースケースで機能しました: https://github.com/ocombe/ng2-translate
READMEはかなり徹底的で、何か特別なものが必要な場合(私にとってはコード分割でした)、コード自体は長すぎず、読みにくいものでもありません。
I18nのサポートがAngular 2 RC6で公式になりました
公式リリースのブログ:
https://angularjs.blogspot.nl/2016/09/angular-2-rc6_1.html
Angular 2 RC6を使用した国際化のサンプル
https://github.com/StephenFluin/i18n-sample
Angle2でi18nの新しいコンセプトがどのように機能するかについての詳細情報:
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>
TypeScript
...
// "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');
...
https://scotch.io/tutorials/simple-language-translation-in-angular-2-part-1https://scotch.io/tutorials/simple-language- translation-in-angular-2-part-2
Angular.ioにはi18nの公式サポートがあります:
https://angular.io/docs/ts/latest/cookbook/i18n.html
しかし!ドキュメントで述べたように:
サポートされている言語ごとに、アプリケーションの個別のバージョンをビルドおよびデプロイする必要があります!
ほとんどの場合、この機能は役に立たなくなります...
ここで説明されているように、CLIなしで使用する場合を除きます。
https://devblog.dymel.pl/2016/11/03/angular2-and-i18n-translate-your-app/
私はPOCをまとめていますが、公式文書は控えめに言っても面倒なので、ngx-translate http://www.ngx-translate.com/ を試し、文字通りhello worldを機能させました数分で、いくつかの注意事項があります。
長い話short小さいアプリがあり、翻訳のみが必要な場合、ngx-translateが気に入った
私は個人的にローカライゼーションを望んでいたので、私は https://github.com/robisim74/angular-l10n を見ています。かなり良いように見えますが、私はテストしていませんので、後でお知らせします。