[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:47515] Re: LC_ALL について



At Tue, 24 Oct 2006 00:24:22 +0900,
Keni Matsuda wrote:
> >  LC_PAPER が設定されていると、LC_ALL をなしにしても LANG を見てくれない
> > ようです。LC_ALL、LC_PAPER の設定をともになしにすると、LANG を見てくれる
> > ようです。
> 
> この振舞いに関しては、
> LANG と LC_* 系の環境変数のローケール定義に関する UNIX/POSIX 系 OS (含 Linux)
> の昔からの仕様です、というのが理由になるかと思います。

これは正確ではないと思います。

問題は LC_PAPER に定義されていない(つまり locale -a コマンドで表示さ
れない)ロケール名が使用されているため、man コマンドが setlocale() 関
数を実行しようとしたところ、libc の内部において知らないロケール名 A4 
を発見したのでエラーで失敗を返してしまったためだと思います。その環境で
定義されている正しい名前が入っていれば動作したのではないでしょうか。

そこで、問題はなぜLC_PAPERに無効な環境変数を設定しているのかになります:

1. なぜ LC_PAPER に A4 を設定しているのか?

   LC_PAPERは他のロケール環境変数と同様 ja_JP.UTF-8 などを指定するもの
   です。なぜ LC_PAPER に A4 を設定されたのでしょうか。まず普通には知
   られていないものだと思うのですが。

2. LC_PAPER を使う必要があるのか?

   LC_PAPER など ISO-14652 で制定されたロケールはほとんど使い道がなく
   て現実問題使われていないと考えています(LC_NAMEなど)。なぜ設定され
   ているのでしょうか?

何か使っているアプリケーションがあってしかたなく設定されているとすれば、
それがどうして LC_PAPER を使っているのかを考えた方が良さそうです。
特に理由がなく設定されているならば設定自体を消すべきだと思います。

以降についてはその通りです。

> locale(7) とか、setlocale(3) とかに詳細な記述があります。
> 
> LC_PAPER 自身は *比較的* 新しい変数のようで、ざっと見た限り
> locale(1) を除いて man とかの関連したオンラインマニュアルに記述は見当
> たりませんでした。
> 
> ローケールのソースをみると、locale(1) の記述どおり、紙のサイズだけを定
> 義しているようですね。パッケージ locales の以下のファイルを御参照下さい。
> 
> /usr/share/i18n/locales/ja_JP

--
後藤 正徳