Namazu-devel-ja(旧)


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

Re: content negotiation of namazu.cgi



寺西です。

TSUCHIYA Masatoshi wrote:
> 
> >今、手元にソースがないのできちんとチェックできていませんが、これは
> >nmz_choose_msgfile_suffix() で、"da" が見つからずに、"en" になってし
> >まうということでしょうか。
> 
> いいえ.nmz_choose_msgfile_suffix() は,
> 
>     NMZ.tips.ja_JP.ISO-2022-JP
>     NMZ.tips.ja_JP
>     NMZ.tips.ja
>     NMZ.tips
> 
> の順番にファイルを検索して,見つかったものを言語 suffix として使用しま
> す.この例では,

いや、だから、

     NMZ.tips.ja_JP.ISO-2022-JP
     NMZ.tips.ja_JP
     NMZ.tips.ja

までで見つかったら 1 を返し、見つからなかったら 0 を返すという
nmz_chose_msgfile_suffix() に似た関数を用意すれば良いだけでは?
という話をしているのです。
(NMZ.tips のチェックはしないということです。)
 
>     NMZ.tips.da
>     MNZ.tips
> 
> の2つが順に調べられて,NMZ.tips.da が存在しないから,NMZ.tips が選ばれ,
> 出力は英語になるということです.

この例だと、NMZ.tips.da があれば 1 を返し、なければ 0 を返すようになって
いれば、1 を返す場合はそのまま nmz_set_lang() を呼び、0 の場合は次の
言語をチェックというようにすれば良いでしょう。
すべての言語が見つからなければ、最後に 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");
}

という感じのプログラムで済むでしょう。('*' の処理は必要ですけど)
-- 
=====================================================================
寺西 忠勝(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