Namazu-users-ja(旧)


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

Re: 検索結果の文字化け



馬場@京大宇宙物理 です。

 From: Yuka Hirata <hirata@xxxxxxxxxxxxxx>
 Subject: [namazu-users-ja] Re: 検索結果の文字化け
 Date: Thu, 22 Mar 2001 16:53:43 +0900

 > ところでこの環境でインデックスを作成するときに出力されるメッセージなので
 > すが、Writing index files... と英語でメッセージが表示されます。
 > これはnamazuサイト上にあった環境変数LANGの設定誤りにあたるようですが。

そうです。

LANG などのロケール関係の環境変数(左から LANGUAGE, LC_ALL,
LC_MESSAGE, LANG の順に読み込む)の問題は、単なる表示メッセージだけ
の問題ではありません。KAKASI や NKF などの日本語処理関係のフィルタ
プログラムを通すか通さないかの問題になっているからです。ということ
で、化けてるものがある、というのはたぶんこれではないかとおもいます。

とりあえず、シェルの環境設定に左右されない確実な方法は、コマンドラ
インで

  % env LANGUAGE=ja mknmz datadir

のように env コマンドを使ってインデックスを作り直すことです。

  % env LANGUAGE=ja mknmz -C

とすれば、日本語で設定メッセージが出力されるはずです。

# env で指定するのが LANG ではだめな場合もありますが、LANGUAGE 
# なら大丈夫です。




  ========    ========    ========  

前からぼんやりと考えていたことですが、mknmz 実行時に LANG=ja でな
いと KAKASI, NKF その他を利用しないようになっていますが、これはや
はり不親切というか混乱気味であるような気がしてきたのですがどうでしょ
うか。つまり、表示メッセージを日本語にするかどうかを LANG (その他)
で制御できるのは良いでしょうが、KAKASI や NKF を通すかどうかまでが 
LANG に制御されるのはどうなんだろうかということです。

mknmz では、count_words() の中で

    if (util::islang("ja")) {
        wakati::wakatize_japanese($contref) if $kanji;
    }

としてますが、$kanji は load_document() の最後部で漢字が含まれてい
るかどうかを判定している変数だから、別に if (util::islang("ja")) 
しなくてもいい気がします。

あるいは、別案としては、util::islang() でなくて、(たとえば)
util::supportlang() とかを作って、supportlang を mknmzrc かどっか
で設定できるようにするというのはどうでしょうか。

まあ、最近のシングルバイナリの ghostscript とかは LANG=ja でないと
憲法9条を表示できませんから、正しいI18Nとはそういうモンなのだ、と
言われれば強く言うつもりはないし、僕は十分に理解しているとは言えま
せん(むしろ混乱している)ので引っ込みますが、個人的にはそれほどな教
条主義でないんで、Netscape がメニューは英語でも日本語は表示できる
というようになっているように、mknmz の進行メッセージが英語でも 
KAKASI,NKF を通せるような(あるいは逆の)枠組みがあってもいいんでな
いかという気はします。
--
馬場  肇 ( Hajime BABA )            E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士後期課程
--