3.2. configure.in の変更

configure.in には多数の変更が必要となります。 intltool の存在をテストし、 ビルド時に使ういくつかの定義をセットアップし、 翻訳されている言語をリストする必要があります。 これらすべてを行うコードを次の例で示しています。 一つのブロックにすべてまとめて示していますが、 intltool の検出はもともとは configure.in の前の方に、 テストの残りはファイル内のより後ろの方にあります。

例 7. configure.in への追加部分

AC_PROG_INTLTOOL([0.23])

GETTEXT_PACKAGE=slice-n-dice
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")

ALL_LINGUAS=""
AM_GLIB_GNU_GETTEXT

slicelocaledir='${prefix}/${DATADIRNAME}/locale'
AC_SUBST(slicelocaledir)

ここでいくつものアイテムについて説明する必要があるでしょう。 第一に、GETTEXT_PACKAGE を処理している三行は、 このアプリケーションのメッセージドメインを定義し、 その定義が生成される Makefile とまた (AC_DEFINE_UNQUOTED() マクロによって) ソースコード内の #define で利用されるようにします 前に戻って GETTEXT_PACKAGE を名前として使う bindtextdomain() の呼出しで i18n サポートが初期化されます。

第二に、まだ翻訳がありませんので空の ALL_LINGUAS 文字列を追加しました。 いくつか翻訳が利用できるのならそれら翻訳の言語コードを ALL_LINGUAS に追加します。 この変数はスペースで区切られた言語コード群からなる文字列で、 二三言語を追加すると次のようになるでしょう:

ALL_LINGUAS="de en_AU no sv"

第三に、AC_PROG_INTLTOOL マクロは必要な最低バージョンを指定するオプション引数をとりますが、 このコード断片では Gconf schema 内のデフォルトキーを正確に抽出するようになった最初のバージョンである 0.23 を指定しています。 この機能を必要としないのなら、 広く利用可能になりほとんど正確に動作するようになったバージョン 0.21 を指定するのが安全でしょう。

最後に、どこにロカールファイルをインストールするか指示する slicelocaledir という変数 (名前は何でも好きなものにできます) を定義しています。 次のセクションの Makefile.am の変更で、 この変数は生成される各々のファイルに渡され i18n サポートを初期化する bindtextdomain() 呼出しで使われます。 これは自動的になされるべきであると思うかもしれませんが、 メッセージファイルが GNU gettext の想定する場所とは若干異なる場所にインストールされる Solaris でもシームレスにビルドできるようにするためにこの構文が必要となります。

configure.in で最後に必要な変更は、 ファイルの終わりまで行ってファイル po/Makefile.inAC_OUPUT マクロによって出力されるファイルリストに追加することです。

この時点でもなおも問題なくビルドできるはずですが、 i18n サポートは言語がないのと AM_GLIB_GNU_GETTEXT が呼ばれていないためにまだ無効になっています。 さらにもし言語が利用可能であったとしても Makefile 内で必要不可欠なビルドの変更を行っていないので、 intltool の管理する多数のファイルに適用されません。 これが次のステップです。