私は現在、会社で使用しているAngularアプリにロケールを追加しているところです。いくつか考えた後、Angular 5を使用することにしました。 +ネイティブi18nサポート。
しかし、私が理解していることから、翻訳ファイルがng xi18n --outputPath src/locale/ --locale en
で生成されるたびに、新しいファイルが作成されます。つまり、新しいi18nタグが追加されるたびに、古い翻訳がすでに含まれている以前のXLFファイルを新しい翻訳とマージする必要があります。
これは非常に面倒に思えるので、私の質問です。新しいトランスユニットを既存のXLFファイルに追加する方法はありますか?それとも、これら2つをマージできるツールはすでにありますか?
編集された回答
xliffmerge ツールを使用できます。 HTMLに新しい翻訳を追加した後、翻訳ファイルをマージできます
これが チュートリアル 角度の
基本的に、通常の抽出コマンドを実行した後、xliffmergeを呼び出して、翻訳ファイルを生成する言語を渡します。
ng xi18n --outputPath src/locale/ --locale en && xliffmerge --profile xliffmerge.json en fr
ツールのjson構成を指定できます
{
"xliffmergeOptions": {
"srcDir": "src/locale",
"genDir": "src/locale"
}
}
元の回答
翻訳にカスタムIDを設定してみてください
https://angular.io/guide/i18n#set-a-custom-id-for-persistence-and-maintenance
<h1 i18n="@@introductionHeader">Hello i18n!</h1>
抽出コマンドを実行すると、新しいブロックが追加されるだけで、既存のブロックには影響しません。
ところで、メインの選択肢(ngx-translate)のメンテナーは実際にはネイティブアプローチでangularチームと協力しているので、ネイティブオプションを使用するのは良い選択だと思います
以前の解決策で問題が発生しました:ERROR: language [...] node_modules\@ngx-i18nsupport\ngx-i18nsupport\xliffmerge\xliffmerge" is not valid
xliffmergeとangular-cli: https: //github.com/martinroob/ngx-i18nsupport i18nを抽出/マージします。 package.json
にコマンドを生成し、angular.json
に新しいタスクの構成を生成します。マージ時にコンテキストグループとメモを保持します。
選択した出力パスpackage.json
のangular.json
と"src/locale"
のデフォルト設定を変更する必要がありました。