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

[debian-users:41559] Re: Sargeにおけるコンソールの日本語処理



At Fri, 1 Oct 2004 12:15:27 +0900,
Kenshi Muto wrote:
> Q. つーか、なんで標準で全部日本語なの?
> A. 全体の環境変数を司る/etc/environmentファイルにインストーラから導出
>    したLANG環境変数、値ja_JP.EUC-JPが記述されているからです。
>    メリットはユーザーが個々にLANGを設定しなくても日本語が使われる
>    ことです。X Window Systemを使うときにはこちらのほうが便利でしょう。
>    デメリットは文字を表示できるできないに関わらず日本語が使われること
>    です。つまり、Linuxの標準コンソールでも日本語が使われてしまいます。
>    LANG=Cに変更するかこの行を消せば、英語が標準になります(ユーザーは各
>    自の設定でLANG=ja_JP.EUC-JPを設定する)。

locales パッケージで /etc/environment に LANG を設定しているので、こう
いう仕様になっています。

/etc/environment に LANG を設定する事の是非はずっと昔から議論の対象に
なっているのですが、pam・シェル・諸々を考えると、現行 /etc/environment 
よりも良い方法はなかなかなさそうです。また、たびたび BTS に何とかして
欲しいという要望が届くのですが、大抵きちんとした proposal を出して欲し
いという理由で却下しています。

正直 locales をメンテしている人間がこんなことをいうのも問題かもしれま
せんが、そもそも現行の /etc/environment に設定するという仕様が本当に妥
当なのか分かっていません。どなたか説明希望 :-)

(話はずれますが、時事ネタという事で紹介しますと、locales が LANG を触
  らないというエントリを追加するかどうかで現在議論中です。興味がある人
  はどうぞ: #274289: locales: postinst should not overwrite settings
  in /etc/environment)

> Q. 条件判定とかできないの?
> A. 誰か良いアイデアを持っていて、コードを書けて、対象となるパッケージ
>    メンテナを説得しようという人はいませんか?
>    私が考えたのは、少なくともrootでttyがコンソールの場合にLANG=Cを使う
>    のはどうか、というものでしたが、「それは解決じゃなくてハックなので
>    ダメ」と却下されました。このメンテナの意見は理解できます。
>    小汚い手を使わずスマートにをモットーに、かつ欧米圏では問題の本当の
>    理解は困難だし別に必要としてない、と厳しい条件下にあります。ちなみに
>   「日本語の場合には特別にja_JP.EUC-JPを設定せず、デフォルト値をCにし
>    てしまえ」というのには私はその後のデスクトップの利便性の面で賛同し
>    かねます。多分コードも汚くなるのでよくない。

昔見た記憶なのできちんと確認したことではありませんが、RedHat はブート
中のコンソール時では英語を出すようにしていました。

ただ、Debian では単純に /etc/environment に LC_MESSAGES=C を追加すると、
X を起動した後も影響をひきずってしまうので、/etc/init.d などのスクリプ
ト中でだけ働く方法を考えなければなりません。今のところうまい方法はない
のかも。


おそらくこの話題は、LANG に限らず、ブート時も含めてシステム設定の環境
変数がどういうルールで適用され、どのプログラムがそれを利用するのか、ま
とめてからでないとなかなか話が進まないと予想しています。結構大変な作業
になるでしょうが、なぜ /etc/environment で良いか (or 悪いか) がはっき
りすると思います。

Regards,
-- gotom