自作テーマを多言語対応させる(完結編)


なんとか poedit を動かすことが出来たので、完結編です。

__() と _e() でくくる

まずは __() と _e() でくくります。内側に”が必須なので __(”) と _e(”) といってもいいかも。そして実はこれで9割以上終わると思われます。というのはテーマでよく使うと思われる Category や Page などは WordPress コアの翻訳カタログに入っているからです。

あと該当記事が無かったり、パスワードが必要だったりした場合のメッセージもコアが持ってますので、できるだけコアの翻訳カタログから引っ張ってくるほうが統一性が取れていいと思われます。

__() と _e() の使い分けですが、テンプレートタグのオプションに指定する場合は__() 。テンプレートタグなどの php へ渡さず、直接表示する場合は _e() で。_e() の e は echo の e らしいです。迷ったら__() 、それで表示されなかったら _e() ってのはダメかな?

独自の訳語を追加する

コアの翻訳カタログでは足りない場合は独自の翻訳カタログを読み込ませます。そのためにはまず funcitons.php で

load_theme_textdomain( 'テーマ名等', get_template_directory() . '/languages' );

として翻訳カタログをテーマ名等で登録します。テーマ名は識別のために登録するので他とかぶらなさそうであればなんでも OK です。この登録した名前を「テキストドメイン」と言うらしいです。

翻訳カタログファイル (.mo) の置き場所はデフォルトだとテーマのディレクトリ直下、style.css と同じところに ja.mo のファイル名で置きますが、上記のようにする場合は style.css と同じところに languages ディレクトリをつくってその中へ置きます。

この登録した翻訳カタログの内容を表示させるには

_e('submenu','テキストドメイン')

とします。コアが持っている翻訳カタログよりも優先されるので category などの単語も上書きできます。ユーザービリティ的にはやらないほうがいいと思うけど。

まとめ

結局今回作ったテーマで公開領域で表示される内容は全てコアが持っている翻訳カタログから全部表示できました。出来なかったのはカスタムメニューの表示部分だけ。

というわけでとりあえずは __() と _e() でくくることを気にしていればいいかと思います。デフォルトテーマからのコピペならくくってあるし。

どんな単語がコアの翻訳カタログに登録されているかを調べるには /wp-content/languages の .po ファイルを poedit で開いて検索すれば調べることが出来ます。

以上、自作テーマを多言語対応させる(完結編)でした。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です