3.1. autogen.sh の変更

最初に glib-gettextize スクリプトの位置を指示することで、 autogen.sh スクリプトがすべてのプロセスをブーストラップし、 実行できることを確認します。 [ただし] GNOME の CVS リポジトリ内の gnome-common モジュールの autogen.sh スクリプトを利用する場合は、 これは自動的になされるので次のセクションにスキップできます。

標準的な GNOME autogen.sh スクリプトを使っていないのなら、 適切なスクリプトのチェックを追加し、みつかったものは何でも実行する必要があるでしょう。 次はこれ(gettextizeintltool のチェック) を行うサンプルコードです。

注意

autogen.sh スクリプトの構造に依存しているので、 このコードをそのまま使うことはできないかもしれません。 これらの例は、gnome-common モジュールと Gconfmetacity 内に含まれるようないくつかのスタンドアローンスクリプトのように、 GNOME で共通に使われる autogen.sh の形式を前提としています。

また glib または gtk+autogen.sh (と対応する acinclude.m4) も見たいと思うかもしれません。 これらのパッケージはよりずっと自己充足し、 glib-gettextize の利用を強制しています。 しかしこれらは GNOME の他の部分で使われている標準スクリプトとはずっと異なっています。

例 5. autogen.sh に追加

if grep "^AM_[A-Z0-9_]\{1,\}_GETTEXT" "$CONFIGURE" >/dev/null; then
 if grep "sed.*POTFILES" "$CONFIGURE" >/dev/null; then
  GETTEXTIZE=""
 else
  if grep "^AM_GLIB_GNU_GETTEXT" "$CONFIGURE" >/dev/null; then
    GETTEXTIZE="glib-gettextize"
  else
    GETTEXTIZE="gettextize"
  fi

  $GETTEXTIZE --version < /dev/null > /dev/null 2>&1
  if test $? -ne 0; then
    echo
    echo "**Error**: You must have \`$GETTEXTIZE' installed" \
         "to compile $PKG_NAME."
    DIE=1
  fi
 fi
fi
(grep "^AC_PROG_INTLTOOL" "$CONFIGURE" >/dev/null) && {
(intltoolize --version) < /dev/null > /dev/null 2>&1 || {
 echo
 echo "**Error**: You must have \`intltoolize' installed" \
      "to compile $PKG_NAME."
 DIE=1
 }
}

autogen.sh 内の以降の部分では、 libtoolize または他のスクリプトを実行する前に、 glib-gettextizeintltoolize を次のように実行して i18n プロセスをブーストラップさせるべきです:

例 6. さらに autogen.sh に追加

if test "$GETTEXTIZE"; then
 echo "Creating $dr/aclocal.m4 ..."
 test -r aclocal.m4 || touch aclocal.m4
 echo "Running $GETTEXTIZE...  Ignore non-fatal messages."
 echo "no" | $GETTEXTIZE --force --copy
 echo "Making aclocal.m4 writable ..."
 test -r aclocal.m4 && chmod u+w aclocal.m4
fi
if grep "^AC_PROG_INTLTOOL" $bn >/dev/null; then
 echo "Running intltoolize..."
 intltoolize --copy --force --automake
fi

例えば aclocal.m4 が現在のディレクトリにない場合は、 ここである程度のカスタマイズが必要となるかもしれません。 Gconf のような既存のアプリケーションから例をコピーするのがこつです。

注意

普通の gettextize の代わりに glib-gettextize を使うのは GNU gettext のメンテナと GNOME 開発者の間に哲学の違いがあるからです。 gettext メンテナは、複数のバージョンの gettext を統合するか gettext を使うプロジェクトを開始するときにのみ、 gettextize のようなスクリプトを実行するべきであると言っています。 しかし GNOME では (gettextize が生成するものと基本的には同じ) glib-gettextize が生成するファイルを CVS に保存しておかないで、ちょうど autogen 時に生成するのを好みます。 二つの作業方法を単一のスクリプトにはできないので、GNOME プロジェクトではオリジナルの gettext スクリプトをほんの少し変更したバージョンを使っています。

gettext v0.11 では autopoint という glib-gettextize. と同じ役割を果すスクリプトが紹介されています。 しかし、GNOME は今のところ gettext v0.11 を要求していないので、 そのスクリプトに依存するのは時期尚早です。