47

最新の Angular5 を使用してアプリケーションを構築しています。必要なのは、ユーザーが言語を切り替えられるようにすることです。これを Angular2+ で実装する必要はありませんでした (実際には Angular5 を使用しています)。

2 つの場所で翻訳を設定する必要があります。

  • コンポーネントのテンプレート html - ラベルを指定された言語に変更します
  • component.ts ファイル内のコード - コード内の特定の条件下で動的に構築される一部の文字列を変換する必要がある場合があります

私はngx-translationを見ていましたが、コードを再構築せずに言語を変更できるように、必要なことはすべて行っているようです。 hereを参照してください。ただし、主な開発者が角度のあるチームに移動して i18n コードを開発したため、おそらく非推奨になるだろうと読みました。

また、現在のi18nが現在必要なものすべてをサポートしていないことも理解しています。こちらを参照してください。

私の質問 - Angular の最新バージョンでの翻訳の状況はどうなっていますか? 実際、Angular自体がまだ完全にサポートされていない場合(再コンパイルせずに言語を変更するため)、人々が代わりに推奨する他のライブラリはありますか?ngx-translate は将来のために良いですか?

この分野のガイダンスは大歓迎です!

4

3 に答える 3

57

これを調べるのに時間を費やした後、 ngx-translateAngular-i18nの間で見つけた主な違いを投稿したいと思いました:

  • Angular は一度に 1 つの言語でのみ機能します。言語を変更するには、アプリケーションを完全にリロードする必要があります。JITサポートは、JITで動作することを意味するだけですが、コンパイル中にテンプレートのテキストを置き換えるため、ブートストラップで翻訳を提供する必要がありますが、このlibはバインディングを使用します。つまり、いつでも翻訳を変更できます. 欠点は、バインディングがメモリを消費することです。そのため、Angular の方がパフォーマンスが優れています。しかし、コンポーネントに OnPush を使用すると、おそらく違いに気付かないでしょう。
  • 現在、Angular はテンプレートでの i18n の使用のみをサポートしています。私は、コードで i18n を使用できるようにする機能に取り組んでいますが、まだ進行中の作業です。このライブラリは、コードとテンプレートの両方で機能します
  • Angular は XLIFF または XMB (どちらも XML 形式) をサポートしますが、この lib はデフォルトで JSON をサポートしますが、独自のローダーを作成して任意の形式をサポートできます (たとえば、PO ファイル用のローダーがあります)。個人的には、Json ファイルはこれらの他の形式よりも読みやすいですが、それは大きな欠点ではありません。
  • Angular は ICU 式 (複数形と選択) をサポートしていますが、このライブラリはサポートしていません
  • Angular は angular コードを含む html プレースホルダーをサポートしますが、このライブラリは通常の html のみをサポートします (コンパイル時ではなく実行時に実行され、AngularJS のように Angular には $compile がないため)。
  • このライブラリの API は、実行時に実行されるため、Angular にはない (ただし、翻訳を変更できないため、実際には必要ない) より多くのもの (オブザーバブル、イベントなど) を提供できるため、より完全です。 ngx-translate の作成者は次のように述べています。

オコムベ(ngx の開発者): @josersleal まさに彼らがしたことです。angular チームは、すべての人のために i18n を改善するために私を雇いました。 Angular i18n は私のライブラリよりもはるかに複雑で精巧です。それはより複雑なものをたくさん処理し、私のライブラリにあるすべてのバグや欠点なしで処理します。ライブラリができることほど速くコアが進化しないことに苛立たしいことは理解していますが、それには理由があります.1つ目は、何かを実装して変更することができず、使用事例。すべてを徹底的に計画し、考えなければなりません。それでも、この lib が将来的にコアでできることのほとんどを持っているでしょう。残念ながら、そこにたどり着くまでに1年かかるかもしれません。良いニュースは、私の単純な実装よりもはるかに優れていることです。

これは、ngx-translate と Angular の i18n の主な違いについて説明する良い記事です: https://github.com/ngx-translate/core/issues/495

i18n の変更は、angular のバージョン 6 で予定されています。現在、バージョン 5 を使用しています。

いくつかの考え…</p>

  • Angular-i18n は、アプリケーションを必要な言語でコンパイルすると (実行時に翻訳が行われるよりも) パフォーマンスが向上します。異なる言語でアプリケーションの複数のビルドが必要になる場合があるため、欠点になることもあります。
  • SEO を使用している場合、url ブラウジングのため、angular-i18n が有効です。私の場合、これはまったく必要ありません。
  • 複数形の切り替えなどが必要な場合は、繰り返しますが、これは必要ありません。テンプレートとコードでかなり単純なランタイム言語の切り替えが必要なだけです。
  • Angular-i18n は、少なくとも 2018 年 3 月までリリースされません。私にとっては、今すぐアプリをビルドする必要があるため、それまで待ちきれません。
  • ngx-translate には angular-i18n ほど包括的な一連の機能はありませんが、必要なのは単純な実行時翻訳だけなので、必要なものには問題ないと思います。
  • ngx-translate はオープン ソースであり、開発が終了する日が来ます。重大な問題が発生した場合は、自分で修正できると思います (その時までに、発生する可能性のある問題が解決されることを願っています)。

Angular-l10n ライブラリも非常に良さそうなので見てみます。

于 2017-11-17T13:54:35.210 に答える