ワードプレスのテーマやプラグインに含まれる_()や_e()という処理について解説いたします。
テーマやプラグインに含まれる_()や_e()とは?
この関数は、翻訳を行うための関数で、書式としましては下記のようになります。
_e('翻訳したい文字列','テキストドメイン')
$honyaku = __('翻訳したい文字列','テキストドメイン')
機能は同じですが、_e(の方は、すぐに翻訳を出力する関数で、__(の方は出力しないので何らかの変数に代入して後から使う場合に使用されます。
テキストドメイン とは、テーマやプラグインに固有の値で、翻訳のセットを指定するもので、この翻訳ファイルは、テーマやプラグインの languages フォルダ※に含まれていたりします。
※翻訳ファイルの場所は、個別のテーマやプラグインで指定できるため違う場合もあります。またワードプレスの公式サイトから配信されてwp-content\languages フォルダに全部入っている場合もあります。
ワードプレスの翻訳ファイルの構造
翻訳ファイルの名称は
テキストドメイン-言語コード.po
のようになっており、実際に使用されるのは テキストドメイン-言語コード.mo というコンパイルされた言語ファイルの方です。Poedit等のソフトウェアでコンパイルできます。
翻訳ファイルの中身を見ていきましょう。コンパイル前の翻訳ファイルは下記のような構造になっています。
msgid "翻訳したい文字列" msgstr "翻訳後の文字列"
msgidが翻訳したい文字列、msgstrが翻訳語の文字列で、この2行のセットが複数翻訳可能な文字列分だけ含まれています。
ワードプレスは、_e(や__(関数を実行すると、この翻訳ファイルから翻訳したい叔父列を検索して、翻訳後の文字列を出力するという単純な仕組みで多言語翻訳を行います。
特定の言語の翻訳ファイルが無かったり、翻訳したい文字列が言語ファイルに含まれない場合は、翻訳前の文字列をそのまま出力します。