現在,namazu.cgi の出力の言語は,
(1) .namazurc で指定された言語
(2) CGI の query で指定された言語
によって決まっていますが,ブラウザの request も参照して欲しいなあと思っ
たので,Apache によって設定される HTTP_ACCEPT_LANGUAGE 環境変数を参照
するパッチを書いてみました.
;; Content Negotiation については,RFC2616 の 14.4 節や,apache の付属
;; 文書などを参照してください.
一応,ブラウザの指定した(最良の)言語を使うところまでは作業したのですが,
ちょっと問題があって困っています.例えば,もっとも得意な言葉はデンマー
ク語で,次に得意な言葉はフランス語,3番目は英語というようなユーザーを
考えてみてください.この場合,ブラウザの送信する Accept-Language は,
Accept-Language: da, fr;q=0.9, en;q=0.8, *
のようになっているでしょう.このような Accept-Language を受け取った場
合,私の書いたパッチは,単に nmz_set_lang("da") を行います.しかし,デ
ンマーク語に翻訳されたメッセージファイルはありませんから,
nmz_choose_msgfile_suffix() によって,言語 suffix は削られて,「英語」
のメッセージが選択されます.この指定の場合,本当はフランス語のメッセー
ジが選択されるべきだと思うのですが,そこまで実装しようとすると,改変の
範囲がかなり大きくなりそうだったので,見送りました.
よろしくご検討をお願いします.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )Attachment:
cgi.diff
Description: Binary data