【サイトにあった翻訳をしてみよう】日本語翻訳されていないWordPressプラグインをお好みで翻訳して、翻訳ファイルをテーマフォルダ内から読み込む方法

WordPressプラグインって便利なものが多いんですが、日本語翻訳されていないものがあったり、翻訳されていても「意味合いがちょっと違うな・・・」「表現を変えたいな」という場合って私はよくあります。

もし可能なら、日本語翻訳したファイル(moファイル)を作ったり修正してプラグイン開発者に送って「プラグインに同梱して日本語にも対応して欲しいです!」というお願いをするのが一般的かもしれませんね。

ただ、そういった連絡を取ることが難しい場合や「日本語に翻訳はしたけど、これって自分のサイトでしか使えない、オレオレ翻訳ファイルだな」という場合もあると思います。

同じ日本語でも、表現の仕方でサイトの印象って随分と変わります。それがたった数文字であっても・・・「自分のサイトにあった翻訳を適切にしたい」なんてことは、私は往々にしてあります。

そこで「自分のサイト用の翻訳ファイルを作って、テーマフォルダに入れて読み込む」方法ついて書きました。

もし機会がありましたらご参考ください。

翻訳ファイルを作ろう

まずは、日本語翻訳したファイルを作ります。私は翻訳ソフト「poedit」で作っています。

poeditはWindows,Mac,Linuxにも対応しています。私は今はメイン端末としてMacを使っているので、dmgファイルをダウンロードしてインストールしました。

potファイルを元に翻訳ファイルを作ろう

翻訳されていないWordPressプラグインのpotファイルを元に翻訳ファイルを作ってもいいですし、翻訳したい言語のpoファイルがすでに存在していれば、そのpoファイルを元にして作ってもいいですね。

どちらにしても、今回は具体的な作り方については説明を省きまして、翻訳ファイルは作成済みとします。(後日方法を書くかもしれないです)

翻訳ファイルを読み込もう

さっそく翻訳したファイルを読み込みます。

Codexの「プラグインの作成」のルールに沿ってプラグインが作られているのであれば、国際化(ローカライズ)についても対応済みだと思いますので「翻訳したいプラグインフォルダ/language/」配下にプラグインに対応した翻訳ファイルを入れれば読み込んでくれます。

ですが、もともと提供されていない翻訳ファイルをプラグインフォルダに入れても、WordPressの公式プラグインなら更新を行うと翻訳ファイルが消えてしまいます。(ですので、冒頭にも書きましたが「プラグイン開発者に翻訳ファイルを提供して同梱してもらおう」という流れがあるってことですね)

プラグインを更新するたびにプラグインフォルダ内に消えてしまった翻訳ファイルを入れなおすのは手間なので、別の方法として「使っているテーマフォルダ内」に翻訳ファイルを入れて読み込めば、プラグインの更新があっても翻訳ファイルが消えることがないですよね。

というわけで、以下のコードは「Theme My Login」プラグインを例にして翻訳ファイルを読み込むようにしています。(「How to load theme and plugin translations」を参考にしました。ありがとうございます。)コードはテーマフォルダ内の「functions.php」ファイル内に追記します。

//翻訳ファイル読み込み
add_action( 'init', 'load_languages' );
function load_languages(){
 $domain = 'theme-my-login';
 $locale = apply_filters( 'plugin_locale', get_locale(), $domain );
 load_textdomain( $domain, get_template_directory() . '/languages/' . $domain . '-' . $locale . '.mo' );
}

コードがやっていること

「テーマフォルダ/languages」配下に「Theme My Login」プラグインに対応する翻訳ファイルがあれば読み込んでくれます。

具体的には、日本語サイトを表示している場合は日本語翻訳ファイル「theme-my-login-ja.mo」ファイルがあれば読み込まれます。

「load_textdomain」の第1引数に指定してある変数「domain」には、プラグインと翻訳ファイルを紐づけるために「theme-my-login」という値が入っています。プラグインによってこの値は変わりますので注意してください。

変数「domain」にどんな値を入れていいのかわからない場合は、調べる方法があります。

翻訳したいプラグインフォルダ内で「load_plugin_textdomain」関数が書かれている箇所を調べて、その第1引数に指定されている値を使えばOKです。例えば「Theme My Login」プラグインでは、以下のように書かれていました。

load_plugin_textdomain( 'theme-my-login', false, plugin_basename( THEME_MY_LOGIN_PATH ) . '/languages' );

この場合は「theme-my-login」という値を変数「domain」に指定すればOKです。

まとめ

WordPressプラグインを使っていて、日本語翻訳されているけど「この日本語、ちょっと文言(表現)を変えて自分のWebサイトのテイストに合わせたいな・・・」ってことはあると思います。

そんな場合には今回ご紹介した方法で、独自の翻訳ファイルを作って読み込ませてもいいのではないかと考えています。

「これはいいな!」と思って実装している方法なのですが、もし他にもっといい方法がありましたら、是非ともご教示いただけますと嬉しいです。

著者:bouya Imamura