3.3. Makefile の変更

まず最上位の Makefile.am を編集して po を降下していくサブディレクトリのリストに追加します。 次のようになるでしょう。

SUBDIRS = src po

また intltool-extract.inintltool-merge.in そして intltool-update.in を最上位の Makefile.am 内の EXTRA_DIST ルールに追加します。 これら三つのファイル名から .in 拡張子を除いた名前をそのディレクトリ内の .cvsignore に追加します。

それから main() 関数またはライブラリ初期化コードを持つファイルを含むディレクトリへ移動します。 そのディレクトリの Makefile.am 内の include フラグを編集し、 メッセージファイルを保存しているディレクトリが追加されるように設定する必要があります。

INCLUDES =                      \
    -I$(top_srcdir)             \
    ...
    -DSLICELOCALEDIR=\""$(slicelocaledir)"\"

ここで SLICELOCALEDIRbindtextdomain() 呼び出しに渡す変数名にマッチし (項2.1.2. 「i18n サポートコードの初期化」 を参照)、 slicelocaledir は前のセクションで configure.in を編集した際に選んだ変数名にマッチします。

必要な Makefile 編集の最後のピースは intltool が desktop、schema、server、XML ファイルの完全な翻訳バージョンをビルドできるようにすることです。 項2.2. 「翻訳可能な文字列をマーク」 に戻ると、 .in 拡張子をつけた多数の新しいファイルを作成し、 翻訳するフィールドを示す特別なマークアップを施したでしょう。 (.in 拡張子なしの)これらファイルのすべてが現在 いくつかの Makefile.am 中に存在しています。 次のような行があるはずです。

desktop_DATA = slice-n-dice.desktop

intltool の手助けでテンプレートからこのファイルが生成されるように、 この行を編集する必要があります。 上の例では Makefile.am に次のような変更を施します。

desktop_in_files = slice-n-dice.desktop.in
desktop_DATA = $(slice_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@

ここには二つの変更が含まれています。 最初にすべての desktop ファイル (この場合は一つだけですが、複数持てます) を(Automake について特別ではない)別の名前の元で並べます。 それからそれを含む、リストの前の方で変換パターンを適用してできたファイルを desktop_DATA ルールが算出します。

二番目の変更は、 slice-n-dice.desktop を生成する slice-n-dice.desktop.in への利用可能なすべての翻訳の統合を引き受ける、 いくつかの特別な Makefile ルールを取り込むことです。 これらのルールは configure.in 内の AC_PROG_INTLTOOL マクロの一部で置き換えられる @INTLTOOL_DESKTOP_RULE@ 変数を使って取り込まれています。

@INTLTOOL_DESKTOP_RULE@ の代わりにそれぞれ @INTLTOOL_SERVER_RULE@@INTLTOOL_SCHEMAS_RULE@@INTLTOOL_XML_RULE@ とすることを除けば server、schema そして一般的な XML ファイルについてもすべて同じです。 またファイル名を保持するターゲット (上で desktop_DATA と呼ばれているもの) も同様に変更する必要があるでしょう。 desktop、schema、server そして XML ファイルについてそれぞれ別のターゲットを持つことも可能です。 intltool の配布に同梱される README ファイル内にこれらの変更についてのさらなる例が載っています。

Makefile.am についてすべての変更を終えたら、.in 拡張子を持たないオリジナルの desktop などのファイルについてはこれらは今では自動生成されるようになっているので削除できます。 また cvs が新しく生成されたこれらの不明なファイルについて文句を言わないように、 おそらくまた新しく生成物の名前を .cvsignore に追加したいと思うことでしょう。