Web2.0* WPテーマをアップグレードしたらi18n対応になっていたので、適当にja.po(mo)ファイルを作って日本語化した、という話は前回書いた。その記事にも書いたが、英語と日本語で語順が違うために素直に訳しただけじゃ上手く行かない部分がある。どうしたらいいのかなあ、と思ってたら、身近にとても良いサンプルがあった。
WordPress日本語版のdefaultテーマは、メッセージカタログの機能を使って日本語化されているのだ。
それを参考にして、phpファイルのメッセージ出力部を、
<?php _e('This entry was posted on ','web20'); the_time('l, F jS, Y'); _e(' at ','web20'); the_time(); _e(' and is filed under ','web20'); the_category(', '); ?>.
という感じに_eでぶつ切りになっている状態から、
<?php printf(__('This entry was posted on %1$s at %2$s and is filed under %3$s.', 'web20'), get_the_time(__('l, F jS, Y', 'web20')), get_the_time(), get_the_category_list(', ')); ?>
のように変更して、
msgid "This entry was posted on %1$s at %2$s and is filed under %3$s."
msgstr "この投稿は %1$s %2$s に %3$s カテゴリーに公開されました。"
というメッセージを用意すれば語順の問題に対応できる。(.phpファイルをいじらなければならないのが面倒だが。)
さらにWeb2.0* WPテーマのメッセージは、WordPressのdefaultテーマと全く同じメッセージを使っているところが多いので、日本語訳もWordPress日本語版のものを引っ張ってくるようにした。
一部、きちんと上記の対応をしないで無理やり日本語訳にしてある部分も少し残っているが、昨日の段階よりはだいぶマシになったと思う。
どうせ元の.phpファイルをいじることになるから、メッセージカタログに固執しないで元ファイルをガシガシ訳していけばいいのかもしれないんだが、Localizationの定番を勉強できたということでヨシとしよう。