トップページ»3.1.Linux/UNIX»Webアプリのマルチリンガル化

3.1.Linux/UNIX



Webアプリのマルチリンガル化

前に作ったWebアプリケーションをマルチリンガル化しなければならなくなった。

ベースはRHEL3/Apache+PHP+PostgreSQLなのだが、従来は日本語だけ考えていれば良かったところを、英語は元より中国語、ドイツ語なども考慮しなければならない。

現状内部、外部共に文字コードがEUC-JP。 このままでは当然マルチリンガルは無理。 とはいえ内部コードから変えるとなるとかなりの作業量になりそう。 できるだけ手抜きしたい&早期に実現しなければならないからこれは却下。

というわけで、内部はEUC-JPのまま、外部だけUTF-8にする事に。

問題はこのサーバーには他のアプリケーションも存在しており、それらは準日本語仕様。 そっちには影響させたくない。

どうやって実現するか、暫く悩んだ結果…




まずはApache。

サーバーのAddDefaultCharsetはEUC-JPになっている。 他のアプリケーションはEUC-JPベースでできているので、これは変えるのはやばそう。 なので特定のフォルダだけUTF-8にする。

<Directory /var/www/html/hoge/>
・・・
AddDefaultCharset UTF-8
・・・
</Directory>

次にPHP。 現状php.iniに指定されているのは

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = EUC-JP

といったところ。 基本的にEUC-JPになっている。 これに

mbstring.encoding_translation = On

を追加。 これでフォームからUTF-8でPOSTやGETされた内容を自動的にEUC-JPに戻す。 これなら他のアプリケーションに対しても影響がないはず。

次に実際のphpのソース。

html出力ルーチンがあるソースの先頭付近に

mb_http_output("UTF-8");
ob_start("mb_output_handler");

を追加。 これでそのページだけ全てUTF-8に自動的に変換される。

あとは表示する内容を全て分離、ランゲージパックを作成し、ユーザーのブラウザに応じて、又はユーザのアクションに応じて差し替えれば完成。

海外版OSでテストしてみたが、ひとまずOKっぽい。
UTF-8初めて使ってみたけどマルチランゲージやるとなると便利だねやっぱり。


投稿日 : 2005年3月 2日

この記事に関する言及

このエントリーのトラックバックURL:
http://akionweb.com/mt-tb.cgi/162

コメント

このページに対する感想、意見をお寄せ下さい。




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

おことわり

当サイトに掲載している全ての情報は、全て当サイト管理者が個人的、実験的に試した事、又は独自に調査したものです。 従ってその情報に誤りがある可能性も多分にあります。 当サイトの情報をそのまま鵜呑みにされませんようお願い申し上げます。 また当サイトの情報を元に作業されたりする場合はそれをご理解頂いた上で、あくまで自己責任の元で行ってください。

トップページ»3.1.Linux/UNIX»Webアプリのマルチリンガル化