Previous: , Up: Adjusting Files   [Contents][Index]


13.4.13 lib/内のgettext.h

GNU gettextにより提供される、パッケージのインターナショナリゼーションはオプションであり、2つの状況でオフに切り替えることが考えられます:

Cプリプロセッサーのマクロは、これら2つのケースを検知するのに使用できます。通常、libintl.hが見つかって、明示的に利用不可されていなければ、autoconfが設定ファイルを生成するときに、ENABLE_NLSマクロが1に定義されます。しかし上記以外の状況では、このマクロは定義されず、それゆえCでは0に評価されます。

gettext.hは、ENABLE_NLSマクロにもとづいて<libintl.h>を使用する、便利なヘッダーファイルです。ENABLE_NLSがセットされていると、<libintl.h>がインクルードされ、セットされていない場合はlibintl.h関数のために代用のno-op(訳注: no-op = no operation = 何もしない)が定義されます。わたしたちは直接<libintl.h>を使うのではなく、"gettext.h"を使うことを推奨します。そうすれば古いシステムへの可搬性が保証され、もし望むならインストーラーでインターナショナリゼーションをオフにできます。

#include "gettext.h"

Cのソースコードは下記の行を、上記のように書き換えます(訳注: 下が修正前で、上が修正後です。通常とは逆の順序で説明しているので間違えないでください)。

#include <libintl.h>

gettext.hの場所は通常、補助のインクルードファイルを含んだディレクトリーです。多くのGNUパッケージには、ヘルパー関数を含むlib/ディレクトリーがあるので、gettext.hはそこに配置すればよいでしょう。他のパッケージでは、srcディレクトリーに配置することができます。

gettext.hをパブリックな場所にインストールしないでください。このファイルを必要とするすべてのパッケージは、パッケージ自身にそのファイルのコピーが含まれているからです。