Angular の国際化ソリューションはまだ開発中のようです。同時に、公式にドキュメントに記載されているため、本番アプリケーションで使用する準備ができていると思います。
私が理解できないのは、商用環境でこのソリューションでどのようなワークフローとツールを使用できるかということです.
ワークフローは、私にはある程度理にかなっています。開発者は、アプリケーションを開発し、翻訳用のソース文字列を生成し、翻訳者が最小限の技術的専門知識で文字列を翻訳するプログラムにロードできるファイルを生成します。ファイルを生成するには、エクストラクタ (xi18n) を使用して翻訳されていないテンプレート XLIFF を取得し、これを言語ごとにコピーします。翻訳者は XLIFF エディタを使用して、後で抽出したために変更が発生したときにテンプレートから各言語を更新します。ソース文字列の変更。これは、Gettext アプローチに似ています。これは Angular にとっても適切な戦略ですか、それとも翻訳ファイルはテンプレート XLIFF から Angular で他の方法で更新されますか?
私にとってより大きな問題は、Angular が XLIFF ファイルをどのようにつなぎ合わせるかということです。残念ながら、Angular が XLIFF 1.2 と ICU を組み合わせる方法はかなり複雑に思えますが、これを適切に処理できるツールをまだ見つけていません。Angular は、翻訳単位で XLIFF プレースホルダーを使用しているようで、単にテキスト「ICU」を ID として使用し、ICU のようなパターンを equiv-text で使用しています。これは、ランダム ID と完全な ICU 式を含む別の翻訳単位と何らかの方法で照合されます。補間は、ID "INTERPOLATION" のプレースホルダーと equiv-text 内の変数を使用して処理されます。
Angular が ICU 式のマッチングを行うために内部で何を行っているかを正確に理解するのが難しいだけでなく、XLIFF エディターでこれらすべての結果を理解することは、翻訳者はもちろん、開発者である私にとっても困難です。スクリーンショットでは、Virtaal XLIFF エディターを使用した ICU と補間の例を示しています。これは、以下の翻訳元文字列から生成され、その下の XLIFF に抽出されます。プレースホルダーを使ってできることはほとんどなく、VAR_PLURAL ICU 翻訳とそれが使用されている翻訳との間の関連性を確認することもできません。私は他のエディタを見てきましたが、同様の問題を抱えているようです。
Angular テンプレート:
<ng-container i18n>Example with ICU {randomNumber, plural, =1 {expression} other {expressions}}: {{randomDecimal}}</ng-container>
XLIFF:
<trans-unit id="698dc3ea0590e8f5f533d296e91d012993eb9b36" datatype="html">
<source>Example with ICU <x id="ICU" equiv-text="{randomNumber, plural, =1 {...} other {...}}"/>: <x id="INTERPOLATION" equiv-text="{{randomDecimal}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">OMITTED</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
<trans-unit id="e3f60ad6a9d907d30e2c51244085d3084d326cbe" datatype="html">
<source>{VAR_PLURAL, plural, =1 {expression} other {expressions} }</source>
<context-group purpose="location">
<context context-type="sourcefile">OMITTED</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
翻訳ファイルが実際に翻訳者にとって意味のあるものになるように、これらの問題を回避するために、本番環境での使用を目的としたAngularアプリケーションで通常どのツールを使用していますか? 多くの人が手作業でファイルを編集していると読んだことがありますが、それは翻訳者にとって使いやすいものではないと思います。