Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: content negotiation of namazu.cgi
- From: Tadamasa Teranishi <yw3t-trns@xxxxxxxxxxxxxxx>
- Date: Wed, 31 Dec 2003 02:20:39 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 03499
- References: <87u13i4eiw.fsf@pine.kuee.kyoto-u.ac.jp>
寺西です。
TSUCHIYA Masatoshi wrote:
>
> 現在,namazu.cgi の出力の言語は,
>
> (1) .namazurc で指定された言語
> (2) CGI の query で指定された言語
>
> によって決まっていますが,ブラウザの request も参照して欲しいなあと思っ
> たので,Apache によって設定される HTTP_ACCEPT_LANGUAGE 環境変数を参照
> するパッチを書いてみました.
これはこれで面白いと思います。
> のようになっているでしょう.このような Accept-Language を受け取った場
> 合,私の書いたパッチは,単に nmz_set_lang("da") を行います.しかし,デ
> ンマーク語に翻訳されたメッセージファイルはありませんから,
> nmz_choose_msgfile_suffix() によって,言語 suffix は削られて,「英語」
> のメッセージが選択されます.この指定の場合,本当はフランス語のメッセー
> ジが選択されるべきだと思うのですが,そこまで実装しようとすると,改変の
> 範囲がかなり大きくなりそうだったので,見送りました.
今、手元にソースがないのできちんとチェックできていませんが、
これは nmz_choose_msgfile_suffix() で、"da" が見つからずに、
"en" になってしまうということでしょうか。
もしそうなら、nmz_choose_msgfile_suffix() に相当する別関数を
用意し、指定した言語のメッセージファイルが見つかったか、否かを
チェックし、見つかった場合は nmz_set_lang() を呼んで終了。
見つからなかったら、次の言語をチェックというようにループすれば
良いのでは? どれも見つからない場合は、nmz_set_lang("en") を呼ぶ。
例えば、こんな感じ。
for(i = 0; i < n; i++) {
if (xxxx_choose_msgfile_suffix(buf[i].name)) {
nmz_set_lang(buf[i].name);
break;
}
}
if (i == n) {
nmz_set_lang("en");
}
xxxx_chose_msgfile_suffix() は、メッセージファイルのチェックのみ
で、見つからない場合は 0 を返し、見つかった場合は 1 を返すように
しておく。
これだと、それほど改変の範囲は大きくないのでは?
# 似て非なる xxxx_chose_msgfile_suffix() を作るのに抵抗があるかな。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E