9

複数のドメインを持つプログラムがあります。一部のソースファイルには、異なるテキストドメインを持つdgettext()呼び出しが含まれています。

gettext-stringsを複数の.poファイルに抽出する方法は?たとえば、呼び出しdgettext('one', 'Hello')はone.poとtwo.poに移動する必要がありdgettext('two', 'Bye')ます。xgettextはテキストドメインを無視し、すべてを1つのファイルに入れます。

4

2 に答える 2

3

まず、ドメインを分離する方法が必要です。

たとえば、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 バリアントにコンパイルし、適切な場所にコピー/インストールします。

于 2012-04-04T20:14:17.267 に答える
0

Linux を使用している場合は、gtranslator プログラムを使用して *.po を操作し、*.po ファイルをテストします。

于 2011-12-25T23:06:07.313 に答える