質問

どうすればコンパイルできますか .po 1つのコマンドを使用してPHPファイルを使用してxgetTextを使用してファイルを再帰的にファイルしますか?

私のPHPファイルは階層に存在し、ストレート xgettext コマンドは再帰的に掘り下げていないようです。

役に立ちましたか?

解決

とった:

find . -iname "*.php" | xargs xgettext

私は使用しようとしていました -exec 以前は、それは一度に1つのファイルのみを実行するだけでした。これにより、それらは束に合わせて実行されます。

Yay Google!

他のヒント

Windowsコマンドラインの場合、SIMPEソリューションは次のとおりです。

 @echo off
echo Generating file list..
dir html\wp-content\themes\wpt\*.php /L /B /S > %TEMP%\listfile.txt
echo Generating .POT file...
xgettext -k_e -k__ --from-code utf-8  -o html\wp-content\themes\wpt\lang\wpt.pot -L PHP --no-wrap -D html\wp-content\themes\wpt -f %TEMP%\listfile.txt
echo Done.
del %TEMP%\listfile.txt

これがWindowsのソリューションです。最初は、getTextをインストールし、GNUWIN32ツールコレクションから検索します。

その後、次のコマンドを実行できます。

find /source/directory -iname "*.php" -exec xgettext -j -o /output/directory/messages.pot {} ;

コマンドを実行する前に出力ファイルが存在する必要があるため、新しい定義を統合できます。

これは、Macでの再帰検索のために見つけたソリューションです。

xgettext -o translations/messages.pot --keyword=gettext `find . -name "*.php"`

サブフォルダーを含む拡張機能のPHPであるファイルでメソッドgetTextのすべての使用のエントリを生成し、翻訳/message.potに挿入します。

1つのコマンドでこれを達成することはできません。 XgetTextオプション --files-from あなたの友達です。

find . -name '*.php' >POTFILES
xgettext --files-from=POTFILES

ソースファイルが多すぎないことが肯定的であれば、使用することもできます findxargs:

find . -name "*.php" -print0 | xargs -0 xgettext

ただし、ソースファイルが多すぎる場合、 xargs 呼び出します xgettext プラットフォームの最大コマンドライン長を超えないように、複数回。そのケースから身を守るには、xgetTextオプションを使用する必要があります -j, --join-existing, 、古いメッセージファイルを最初に削除し、空のファイルから始めて、xgetTextが救済されないようにします。

rm -f messages.po
echo >messages.po
find . -name "*.php" -print0 | xargs -0 xgettext --join-existing

それを最初に与えられた単純なソリューションと比較してください。 POTFILES!

使用 find--exec 呼び出されるため、非常に非効率的です xgettext -j すべてのソースファイルが翻訳可能な文字列を検索するには一度。の特定の場合 xgettext -j XgetTextは、成長している既存の出力ファイルを読み取る必要があるため、さらに非効率的です messages.po すべての呼び出しで(それはすべての入力ソースファイルを使用します)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top