テーマでもプラグインでも、やり方は同じ。
まず、テーマを作る。表示を切り替えたい箇所は
__('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 を選択
さっき保存したpotファイル(default.pot)を選択
追加されるのを確認
翻訳して、保存。保存すると.poと.moが更新される
localeの切り替え
localeの切り替えは、 locale フィルタを使う。
参考) http://codex.wordpress.org/Plugin_API/Filter_Reference/locale
このcodexの例ではGET値を使っているが、ユーザーがlocaleを変更できるように、locale値をフォームで入れて、その値をSESSIONなどに入れて使えば良い。