[PR] 本ブログの商品紹介リンクには広告が含まれています
「今さら何を」と言われそうですが、
Joi に触発されて、blog (Weblog)に興味を持ちはじめました。いわゆる日記サイトは興味がなかった(自分の個人的記録を露出することに興味がない)のですが、そういう意味での「日記」と blog の間になにやら相違点を見出したような「気がした」のです。
さて、Joi は MovableType という Perl ベースのシステムを使っているようだったので、なにか違うものをと思い、PHPベースの
pMachine と Nucleus をインストールしました。
どちらのツールも、PHPを内部コード、表示コードともEUCにしておけば、インストールしたままでも、それなりに動作します。画面の表示要素などはランゲージファイルやテンプレートになっていますから、それを翻訳すれば、日本語対応っぽくなります。
メール送信する仕組みなどがあるようなので、こういうところは
mail()関数を
mb_send_mail()に置き換えるなりして文字化けを回避する必要があると思われます。ほかにも文字数を数えるところなどで細かい手直しがいるかもしれません。
ところで、PHP 4.2 から、php.ini の設定に
mbstring_func.overloadというパラメータが追加されています。この設定をしておくと、たとえばスクリプトからmail()関数を呼び出すと、自動的にそのマルチバイト対応の関数であるmb_send_mail()関数に読み替えて呼び出してくれるので、上記のようなスクリプトの書き換えが不要になるという便利なものです。これらのマルチバイト関数は、PHPをビルドするときconfigureで --enable-mbstringを指定しておけば使えるようになります。PHPの「国際化」については
このあたりを。
さて、話は戻って pMachine と Nucleus。機能面は別にして、日本語へのローカライズのしやすさでは Nucleus のほうが素直です。HTTPヘッダで出力する文字コードの設定がランゲージファイルでできるようになっていますし、ランゲージファイルも下手に単語を切り出して単語ごとに翻訳させるようなことをせずに、素直に表示するセンテンスごとに翻訳させるという部分が多いのが好感が持てます。単語ごとに翻訳させるアプローチは(英語セントリックな米国人が生半可な「国際化」するときにありがちなのですが)、単語はランゲージファイルで入れ替わるけど、語順は英語のとおりにハードコードされていて、へんな日本語になるところが出てきたり、英語では同じ単語だけど、日本語ではコンテキストで別の単語を使う場合に、思いもよらない別の場所が妙な訳になったりして、使い物にならないことが多いのです。そのほかにも、日付フォーマットがアメリカ式にハードコードされている部分、タイムゾーンを環境変数で設定するのではなく引き算で算出している部分(夏時間が適用されている環境にあるサーバーで日本時間を表示しようとすると困ったことになる)など、この手のスクリプトにはありがちな修正箇所が相当ありそうです(多機能ですしね)。
Nucleus も細かいところに行くと devils in the detail なのでしょうが、直感的には比較的楽そうです。機能が少なめで構造がシンプルなのも、かえってうれしいです。
というわけで、Nucleus を本格的にいじってみることにしました。暇をみながらランゲージファイルを翻訳しつつ、コードの修正が必要なところはとりまとめて製作者にフィードバックすることにしましょう。
ランゲージファイルもまとまったところで公開します。
pMachine のランゲージファイルも、途中まで日本語にしたものがありますので、欲しい方はお知らせください。