WPでテーマを多言語化する方法

Pocket

テーマでもプラグインでも、やり方は同じ。
まず、テーマを作る。表示を切り替えたい箇所は

__('hogehoge', 'theme_name')

_e('hogehgoe', 'theme_name')

などににする。値を挿入したい場合は、例えば

printf( __( 'Logged in as %1$s', 'denpyokun' ), $current_user->display_name );

のようにする。
 

言語ファイル(default.pot)を作る

poeditを使う。
poeditでNew Catalogから新しく作る。
テーマのどこに言語ファイル一式を置くかを決める。例えば {theme}/library/languages/ だったら、2階層上まで見るので、poeditでは

.
..
../..

のようにしておく。これを.potとして保存したいのだが、.po としてしか保存できないので、default.po (なんでも良い)とし、保存してから *.potとして名前を変える。
各言語ごとの言語ファイル (ja.po, en.poなど)は、default.pot を開いて、save as で作る。
 

テーマを更新する場合

新たに _e()や__()を使って翻訳したい箇所を追加したら、potファイルと各言語ファイルを更新する必要がある(更新しないと翻訳されないまま表示されてしまう)
まずdefault.potをpoeditで開く。
Updateをクリックすると、ファイル内から、新しい箇所・削除された箇所を拾ってくれる。
OKをクリック
default.potを保存
翻訳ファイル(ja.poなど)を開く
Update from POT file を選択
3
さっき保存したpotファイル(default.pot)を選択
5
追加されるのを確認
4
翻訳して、保存。保存すると.poと.moが更新される

localeの切り替え

localeの切り替えは、 locale フィルタを使う。
参考) http://codex.wordpress.org/Plugin_API/Filter_Reference/locale
このcodexの例ではGET値を使っているが、ユーザーがlocaleを変更できるように、locale値をフォームで入れて、その値をSESSIONなどに入れて使えば良い。