TF2のゲーム内ブラウザはHTTPのAccept-Languageヘッダを適切に設定してくれてないっぽい?
motdをi18n化して、
http://tf2.kymt.me/mvm
ユーザーのAccept-Languageに応じて表示する言語を en / ja 切り替えるように先日したのだけど、どうもゲーム内ブラウザで見ると常にenになってしまう。
Accept-Languageヘッダが実際についてるかどうか実際にゲーム内ブラウザから送信されてるHTTPリクエストをちゃんとチェックし忘れてしまったのだけど、おそらく適切に設定してくれてないっぽい?
みんなどうしてるんだろうなーこれ。
この方式が無理だとしたら、普通にユーザーにマウスでlocaleを選択させて、HTTPのほうのcookie(sm_cookieではなく)にlocale情報をぶち込もうかしら。(しかしゲーム内ブラウザのcookieがどの程度生存してくれるのかもわかってない。ゲーム終了するたびに破棄されてたら意味ない)
どうしたものか。一度ログとってみたらそれっぽいHeader情報あるかもしれないのであれだけど。
ユーザーのIPアドレスをもとに、GeoIP.datを利用して国コード取得して翻訳刷る感じにするというのも有りだと思う。(これでデフォルトのlocaleを選択して、任意でユーザーによるcookie切り替えが一番妥当なやり方?)
あと、motdコマンドは実はsourcemodで実装されてて、nativeのShowMotdPanel関数で実現してるっぽいんだけど ShowMotdPanelはnativeじゃなくて、この関数内部で使ってるShowVGUIPanelがnativeだった。
この関数でhttp_header書き換えれるとかだったら、cl_languageとうまいこと組み合わせてイイ感じにできそうなんだけどなー。