2

ソースディレクトリ(PHP)をスキャンしxgettext --join-existing ...、更新された翻訳を実行してpotファイルに保存するビルドスクリプトがあります。

find . -type f -name '*.php' -not -path './vendor/*' | 
xargs xgettext --join-existing --keyword=_e --keyword=_x 
--keyword=__ --from-code=UTF-8 --default-domain=myapp 
--output=languages/myapp/myapp.pot

コードのリファクタリングとビルドを数回行った後、pot ファイルがこのようなものになる理由はわかりません。

#: src/Member/Auth.php:196
#: src/Member/Auth.php:135
msgid "Login failed!"
msgstr ""
  1. コメントにソース/行が 2 行あるのはなぜですか? (ソース内でメッセージを移動したためだと思います。)

  2. では、同じファイルのコンテンツが更新された場合に xgettext を無視させるにはどうすればよいでしょうか?

  3. --join-existingまたは、ビルド スクリプトで使用することをお勧めしませんか? (でも時々、pot ファイルに手動の項目があるので、どうすれば解決できますか?)

4

2 に答える 2

2

オプションで明示的に設定されているため、情報を追加することは論理的にxgettext聞こえます(ソース参照も)--join-existing。ただし、次の回避策が役立つ場合があります。


回避策 1

新しいポットをビルドする前に、sed を使用してポット ファイルから以前のソース参照を削除します。

sed -i.old '/^#: /d' languages/myapp/myapp.pot

回避策 2

オプションを使用せず--join-existing、マニュアル項目をダミーの php ファイルに配置します。

于 2014-11-27T20:29:13.763 に答える