WordPressで_e関数や__関数による翻訳が機能する仕組み

WordPressでは_e関数や__関数という独特な名前の関数がサポートされています。どちらもサイトの文字列を翻訳するときに使う関数で他言語対応に役立つ関数です。たとえば、テーマTwenty Fourteenの404.phpには次のように記述されています。

<?php _e( 'Not Found', 'twentyfourteen' ); ?>

ピンとくるかもしれませんが、ここでは_e関数によって「Not Found」を翻訳して表示しています。「twentyfourteen」は翻訳ファイルの目印(テキストドメイン)です。早く言えば「対訳はtwentyfourteen-ja.moという翻訳ファイルから取得してください」という指令に使われる目印です。

対訳ファイルはテーマごとやプラグインごとに作成できるので、どのテーマ、どのプラグインの翻訳ファイルから英日の対訳を取得するのかを指定できるようになっています。

上記のTwenty Fourteenの例では、twentyfourteen-ja.moに格納された対訳から、それぞれの単語やフレーズが翻訳されます。

この対訳の元ファイルはPOファイル(例:twentyfourteen-ja.po)に格納されているのが一般的で、通常はPOファイルからMOファイルを生成します。

POファイルに格納された英日の対訳

POファイルに格納された英日の対訳

この対訳によって「Not Found」が日本語の「見つかりません」に翻訳されます。

「Not Found」が日本語の「見つかりません」に翻訳される

「Not Found」が日本語の「見つかりません」に翻訳される

POファイルをPoeditなどで開いて編集すれば、独自の訳を割り当てたり英日の対訳パターンを増やすことができます。

PoeditでPOファイルの編集後に「保存」ボタンをクリックするとMOファイルが更新されます。

_e関数と__関数の用途の違い

_e関数と似た名前の「__」も翻訳に使う関数です。_eは翻訳して表示(echo)するときに使いますが、__は、すぐに表示しないときに使います。たとえば、Twenty Fourteenのarchive.phpには次のように記述されています。

printf( __( 'Monthly Archives: %s', 'twentyfourteen' ), get_the_date( _x( 'F Y', 'monthly archives date format', 'twentyfourteen' ) ) );

ここでは「Monthly Archives: %s」を「月別アーカイブ: %s」に翻訳しますが、すぐに表示せずに翻訳結果の「月別アーカイブ: %s」をprintf関数に渡しています。「%s」に月別アーカイブの年月を埋め込むためです。

このように文字列を翻訳した結果を変数などに取得して次の処理に渡したり、printf関数に渡して整形してから出力したい場合は_e関数ではなく__関数を使います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする