次のページ 前のページ 目次へ

7. catopen のバグ修正

locale をインストールすると、Linux libc の catopen コマンドにあるバグ (仕様か?)が修正されます。メッセージ・カタログを使うプログラムを作成 し、ドイツ語カタログを作り、それを /home/peeter/catalogs/de_DE におく としましょう。

以下のことを de_DE locale をインストールしないで行なってみてください:

export LC_MESSAGES=de_DE
export NLSPATH=/home/peeter/catalogs/%L/%N.cat:$NLSPATH

ドイツ語のメッセージ・カタログがオープンできず、catgets コールのデフォ ルトのメッセージが使われます。

これは catopen が正しいメッセージ・カテゴリを得るために setlocale コールを実行し、環境変数が設定されていても setlocale が失敗する理由です。それで catopenNLSPATH の全ての "%L" に "C" を代入してメッセージ・ カタログをロードしようとします。

locale をインストールしなくてもメッセージ・カタログを用いることはでき ますが、以下のように NLSPATH の "%L" 部分をはっきりと 設定する必要があるでしょう:

export NLSPATH=/home/peeter/catalogs/de_DE/%N.cat:$NLSPATH

しかし、これは locale カテゴリ環境変数の全ての目的をくじけさせてしまい ます。


次のページ 前のページ 目次へ