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
が失敗する理由です。それで catopen
は NLSPATH
の全ての "%L
" に "C
" を代入してメッセージ・
カタログをロードしようとします。
locale をインストールしなくてもメッセージ・カタログを用いることはでき
ますが、以下のように NLSPATH
の "%L
" 部分をはっきりと
設定する必要があるでしょう:
export NLSPATH=/home/peeter/catalogs/de_DE/%N.cat:$NLSPATH
しかし、これは locale カテゴリ環境変数の全ての目的をくじけさせてしまい ます。