複数のドメインを持つプログラムがあります。一部のソースファイルには、異なるテキストドメインを持つdgettext()呼び出しが含まれています。
gettext-stringsを複数の.poファイルに抽出する方法は?たとえば、呼び出しdgettext('one', 'Hello')
はone.poとtwo.poに移動する必要がありdgettext('two', 'Bye')
ます。xgettextはテキストドメインを無視し、すべてを1つのファイルに入れます。
複数のドメインを持つプログラムがあります。一部のソースファイルには、異なるテキストドメインを持つdgettext()呼び出しが含まれています。
gettext-stringsを複数の.poファイルに抽出する方法は?たとえば、呼び出しdgettext('one', 'Hello')
はone.poとtwo.poに移動する必要がありdgettext('two', 'Bye')
ます。xgettextはテキストドメインを無視し、すべてを1つのファイルに入れます。
まず、ドメインを分離する方法が必要です。
たとえば、lib用のドメインとappdgettext()
用のドメインがあり、呼び出しのショートカットを作成するとします。
_app(msg) -> dgettext("app", msg);
もう 1 つは lib ドメイン用です。
_lib(msg) -> dgettext("lib", msg);
次のように、これらの呼び出しをコード全体に追加します。
show_message(_app("Choose a directory to save your work."));
show_message(_lib("No space left on device."));
bindtextdomain()
アプリケーションを初期化するときは、両方のドメインを呼び出す必要があることに注意してください。
xgettext
それらを抽出するには、これらのマーカーを含むソース ツリー内のすべてのファイル名に異なるキーワードを指定する必要があります。
xgettext --keyword=_app -d domain1 filenames...
xgettext --keyword=_lib -d domain2 filenames...
最後に、両方の .po ファイルをバイナリの .mo バリアントにコンパイルし、適切な場所にコピー/インストールします。
Linux を使用している場合は、gtranslator プログラムを使用して *.po を操作し、*.po ファイルをテストします。