個人的にWordPressのテーマやプラグインを作成するなら気にならないが、公式ディレクトリに登録するとなると各国語への翻訳を考慮する必要がある。
そこで多言語する方法についての概要を解説してみます。
他言語化機能の概略
WordPressは単純な多言語化の仕組みを持っています。
多言語化と聞くと、閲覧している地域に対応した言語で記事を提供するイメージを思い浮かべるかもしれません。
しかしWordPressはこのような機能を持っていないため、自分でカスタマイズするか、第三者によって開発されたプラグインなどを使用する必要があります。
WordPressが持っている多言語化の仕組みは、キーワードを指定すると言語に対応した文字列が返ってくる、という単純なものです。

ただしこれは自動翻訳という意味ではなくて、テーマやプラグインの作成者が用意したキーワードと文字列の組み合わせデータから抽出されます。
そのため、次のようなケースで利用されます。
- Webページの固定部分、例えばフッターに住所を掲載しているとしたら、そのタイトルに日本語なら「住所:」を、英語なら「address:」と表示する
- プラグインで生成した管理ページで、入力項目のラベルなどを多言語化する
キーワードは、翻訳データが存在しないとき、そのまま翻訳結果として使用されます。
そのため、意味が通じる単語や文章をキーワードとして使用します。
基本は英語
日本人としては日本語を基本として、他言語に翻訳したいと思います。
しかし英語から、他言語への翻訳が基本です。
テーマやプラグインを公式ディレクトリに登録すると、第三者による翻訳サポートを受けることができます。
このとき日本語で記述されていると、他国の方が理解できないのです。
そんな理由から、英語をキーワードとして使用して、まずは日本語の翻訳データを作成することになります。
多言語化の手順
実際に多言語化を行うには、次の二つの作業が必要です。
順番に解説していきます。
コードを組みこむ
多言語化するには、テーマやプラグインにコードを組みこむ必要があります。
変換データの読み込み
まずは、言語データを読み込んで変換ができる状態にします。
テーマとプラグインでは、呼び出す関数が異なります。
■テーマでの変換データ読み込み
テーマは次のコードをfunction.phpに記述します。
- load_theme_textdomain( テーマ名 );
■プラグインでの変換データ読み込み
プラグインは次のコードをプラグインに記述します。
- load_plugin_textdomain( プラグイン名 );
この二つの関数により、規定の場所から既定のデータファイルを検索して読み込みます。
これらの関数で指定したテーマ名やプラグイン名は、テキストドメインという名前で呼ばれています。
WordPressはWordPressの本体やテーマ、プラグインなどで各々変換データを読み込みます。
読み込まれたデータは、それぞれ異なる領域に保存されます。

テキストドメインは、どの領域のデータを使用するのかを指定するために使用されます。
変換データの読み込み関数については、次の記事で詳しく紹介しているので読んでみてください。
WordPress: load_theme_textdomain()とload_plugin_textdomain()関数を少し詳しく解説してみる
キーワードの変換関数
キーワードの変換は、__( )関数または_e( )関数を使用します。
わかりにくいですが、__( )はアンダーバー二つ、_e( )はアンダーバー一つです。
■__( )関数
__( )関数を実行すると、変換結果がリターンされます。
- $text = __( キーワード , テキストドメイン );
変換結果はテキストなので、次のようにsprintfなどのフォーマット関数で使用できます。
- $text = sprintf( __( 'price: %d yen' , 'my-theme' ) , 100);
■_e( )関数
_e( )関数は、変換結果をechoします。
- <p><?php _e( キーワード , テキストドメイン ); ?></p>
こちらの関数は結果を返さないので、sprintf( )などを使用できません。
■タグをエスケープする関数
<や>などのhtmlとして意味を持つ文字を表示するときは、エスケープする必要があります。
esc_html__( )関数は、__( )関数の結果をエスケープします。
- $text = esc_html__( キーワード , テキストドメイン );
esc_html__( )関数は、__( )関数の結果をエスケープ後にechoします。
- esc_html_e( キーワード , テキストドメイン );
■その他の変換関数
WordPressはここで紹介したもの以外にも、変換関数が用意されています。
次の記事に一覧で紹介しているので、読んでみてください。
変換データの作成
キーワードと文字の組み合わせは、.moファイルに保存されています。
moはMachine Objectを意味しています。
このファイルは言語ごとに作成されていて、どの言語なのか判別できる名前が付けられています。
例えばテーマの場合、日本語なら「ja.mo」で英語(米国)なら「en_US.mo」となります。
プラグインの場合は「プラグイン名-ja.mo」や「プラグイン名-en_US.mo」です。
.moファイルはコンピューターが効率的に読み取れるように最適化されていて、メモ帳などで編集することはできません。
そこで別の形式で編集したものを、アプリを使用して.moファイルに変換します。
変換前のファイルは.poファイルと呼ばれています。
また.poファイルのテンプレートとして用意されているファイルを、.potファイルと呼びます。
.potファイルをコピーして、.poファイルを作成するイメージですね。
poはPortable Objectを、potはPortable Object Templateを意味しています。
専用のアプリを使用すると、.potファイルの作成から.moファイルの出力までを一貫して行うことができます。

アプリの使い方は、こちらの記事を読んでみてください。
.poファイルのフォーマット
専用のアプリを使用する場合、.poファイルのフォーマット形式を知らなくても大丈夫です。
ですが知っておくと、_n( )や_x( )などの少し特殊な翻訳関数についてや、アプリの機能を理解するのに役立つと思います。
次の記事で.poファイルのフォーマットについて紹介しているので、読んでみてください。
.moファイルの設置
.moファイルを作成したら、テーマやプラグインに設置します。
基本的には、テーマまたはプラグインディレクトリの直下です。
ファイル名は、テーマの場合は 言語ロケール.mo です。
プラグインの場合は、テキストドメイン-言語ロケール.mo です。
テーマのディレクトリ/言語ロケール.mo
テーマのディレクトリ/テキストドメイン-言語ロケール.mo
.moファイルをサブディレクトリにまとめたいときは、変換データの読み込み関数で、パス指定をおこないます。
公式ディレクトリに公開後
テーマやプラグインを公式ディレクトリに公開すると、GlotPressというシステムを使用して第三者が提案という形で翻訳の手助けをすることが可能になります。
ただし、承認権限を取得していないと提案を承認できません。
権限を取得するには、Slack ワークスペースに参加する必要があります。
参加方法は、次のリンク先(ja.wordpress.org)を読んでみてください。
■Slack への参加方法
承認された翻訳ファイルは、/wp-content/languages/にダウンロードされるようになります。
このディレクトリはテーマディレクトリよりも優先度が高いです。
そのため、テーマディレクトリの.moファイルを更新しても適用されないので注意が必要ですね。
■Googleで他サイト検索
■僕がおススメするアフィリエイト教材
■マーケティング施策ツール





こんにちは。