Next: , Previous: , Up: Maintainers   [Contents][Index]


13.3 gettextizeプログラムの呼び出し

gettextizeプログラムは、GNU gettextによりインターナショナライズされたパッケージのメンテナーを助けるための対話的なツールで、2つの目的のために使用されます:

このプログラムは以下のタスクを処理します:

呼び出し方は以下のようになります:

gettextize [ option… ] [ directory ]

以下のオプションを指定できます:

-f
--force

すでに存在するファイルを強制的に置き換えます。

--intl

libintlのソースを、intl/というサブディレクトリーにインストールします。このlibintlは、GNU libintlがインストールされていないシステムでインターナショナリゼーションを提供するのに使用されます。このオプションが省略された場合は、configure.acAM_GNU_GETTEXT呼び出しが読み込まれます。しかし‘AM_GNU_GETTEXT([external])’とインターナショナリゼーションは、GNU gettextのないシステムでは利用できないでしょう。

--po-dir=dir

POファイルを含むディレクトリを指定します。このようなディレクトリーには、特定のPOTファイルをさまざまな言語に翻訳したファイルが含まれています。このオプションは、翻訳ドメインどとに複数回指定することができます。指定されなかったときは、po/というディレクトリーが更新されます。

--no-changelog

ChangeLogの作成・更新をしません。デフォルトではgettextizeは、影響を受けるディレクトリーごとの‘ChangeLog’というファイルに、すべての変更(ファイルの追加・変更・削除)を記録します。

--symlink

必要なファイルをコピーするかわりに、シンボリックリンクを作成します。これはディスク容量を数キロバイト節約するのには便利ですが、自分自身を含む形式のtarballの作成には特別な配慮が必要になり、メンテナーがソースに適用できるいくつかの機能が使えなくなり、システムに新しいバージョンのgettextがインストールされたときにバグ(のような状態)を招きます。

-n
--dry-run

変更を出力しますが、処理は行いません。普通にgettextizeを実行したときのアクションはすべて抑止され、かわりにリストが標準出力に出力されるだけになります。

--help

このヘルプを表示して終了します。

--version

バージョン情報を表示して終了します。

directoryを指定した場合、そのディレクトリーはGNU gettextを使う準備をしたいパッケージの、トップレベルのディレクトリーになります。

プログラムgettextizeは、以下のファイルを提供します。しかし--force (-f)オプションを指定しなければ、既存のファイルは置き換えられません。

  1. ABOUT-NLSファイルは、パッケージのメインディレクトリー(トップレベル)にコピーされます。このファイルは、プログラムでNative Language Support機能をインストールして使う方法を示す主要なファイルです。もし手軽に入手できるなら、gettextizeにより提供されるABOUT-NLSよりも、新しいコピーを使いたいと思うかもしれません。より新しいABOUT-NLSファイルのコピーを、翻訳プロジェクト、またはGNU archive siteから入手することもできます。
  2. 作成されたpo/ディレクトリーには、最終的にはすべての翻訳用ファイルが保持されますが、初期状態ではGNU gettextによるpo/Makefile.in.in(ファイル名に‘.in’が2つあることに注意してください)と、いくつかの予備ファイルしか含まれていません。すでにpo/というディレクトリーがあるときは、そのディレクトリーのファイルは保持され、Makefile.in.inと予備ファイルだけが上書きされます。

    --po-dir’が指定されたときは、po/のかわりに‘--po-dir’で指定されたそれぞれのディレクトリーに配置されます。

  3. --intl’だけが指定されたときは、intl/ディレクトリーが作成され、GNU gettextintl/ディレクトリーから、ほとんどのファイルがコピーされます。--force (-f)も指定されたときは、まず最初にintl/が空にされます。
  4. ファイルconfig.rpathは、設定サポートファイルを含むディレクトリーにコピーされます。このファイルは、autoconfマクロAM_GNU_GETTEXTで必要です。
  5. プロジェクトがGNU automakeしか使っていないときは、autoconfの一連のマクロファイルが、パッケージのautoconfマクロのレポジトリー(通常はm4/というディレクトリー)にコピーされます。

シンボリックリンクがサポートされている場合、gettextizeはパッケージのディレクトリーへは実際にコピーはされず、かわりにシンボリックリンクが作成されます。これによりすべてのパッケージで必要なファイルによる重複を避けることができます。単に‘-h’オプションを指定すると、配布物のtarアーカイブを作成するときには、それらのリンクが解決されて実際のファイルが配布物のアーカイブにコピーされます。そのため、メインのMakefile.inのゴールdistにたいするtarのオプションには、‘-h’を使う必要があることを強調しておきましょう

それだけではなく、gettextizeは、影響を受ける各ディレクトリーのMakefile.amをすべて更新し、同様にトップレベルのconfigure.ac(またはconfigure.in)も更新します。

パッケージのサブディレクトリーintl/po/m4/にコピーされる、GNU gettextをサポートするための最新のファイルを理解するのも、興味深いでしょう。intl/と他の2つのディレクトリーの違いは、intl/はGNU gettextを使うすべてのパッケージで同じですが、他の2つのディレクトリーのものの大部分はパッケージに依存したものだという点です。

gettextizeプログラムは、置換または変更するファイルのバックアップを作成して、それらの変更をChangeLogに書き込みます。この方法により、注意深いメンテナーはgettextizeを実行した後に、それによる変更が許容できるか確認して、可能なら調整することができます。このルールの例外はintl/ディレクトリーで、このディレクトリーは完全に追加・置換、または削除されます。

gettextizeが、GNU gettextを使うパッケージのための調整すべてを処理できる訳ではないことを理解するのことも重要です。残っている作業の量は、パッケージがGNU automakeを使うか否かによります。それでも大抵の場合、メンテナーはgettextizeを呼び出した後、Adjusting Filesを読む必要があるでしょう。

特に‘gettexize’を使った後は、‘AC_COMPILE_IFELSE was called before AC_GNU_SOURCE’、または‘AC_RUN_IFELSE was called before AC_GNU_SOURCE’というエラーが発生するかもしれません。このエラーはconfigure.acで説明している方法でconfigure.acを変更することにより修正できます。

gettextizeは、GNU build systemの一部ではないので、自動的には呼び出されず、パッケージメンテナーとしての責任を持たない人も呼び出さないことを理解しておくのも重要です。後者の目的のためには個別にツールが準備されています。詳細はautopoint Invocationを参照してください。