プラグインの日本語訳を強制解除する方法

WordPressのプラグインには、海外の作者さんのものでも日本語化されたものがたくさんありますが、中には日本語化が中途半端だったり、翻訳に間違いが多かったりして、残念なことになっているものもあります。

「このプラグインだけはむしろ英語で使いたい」といった時に便利な、特定のプラグインでの翻訳ファイルの読み込みを解除する方法を紹介します。

プラグインが日本語訳で表示される仕組み

日本語など多言語に対応しているプラグインは、各プラグインフォルダ内に翻訳ファイル(末尾が.moとなっている種類のファイル)が同梱されています。

WordPressは、load_textdomain という関数の実行によって、「設定>一般設定>サイトの表示言語」で指定した言語にマッチするプラグインの翻訳ファイルを読み込みます。マッチングの処理には、プラグインごとに設定された Text Domain と呼ばれる項目の値が使用されます。

プラグインの日本語訳を英語に戻す手順

プラグインの表示言語をデフォルトの英語に戻すには、上記の load_textdomain という関数とは逆の機能となる unload_textdomain という関数を実行させて、読み込んだ日本語の翻訳ファイルを解除します。

  1. プラグインの Text Domain を調べる

    翻訳ファイルを読み込む時と同じで、読み込みを解除する時も、解除するプラグインを指定するために Text Domain が必要になります。

    Text Domain はWordPressの管理画面で「プラグイン>プラグインエディター>編集するプラグインを選択」と辿って、表示されるファイルの冒頭のコメント部分に書かれていることが多いです。

    コメント部分に書かれておらず、プラグインのフォルダ名やファイル名が Text Domain になっているケースもあります。それでも不明な場合は、プラグインのサポートフォーラム等で作者に問い合わせてみましょう。

  2. functions.php にコードを追加する

    日本語訳を解除したいプラグインの Text Domain がわかったら、以下のコードの unload_textdomain(‘xxx’); のカッコ内を削除したい Text Domain の値に差し替えて functions.php に記述します。

    add_action( 'wp_loaded', function () {
      unload_textdomain('autoptimize');
      unload_textdomain('wp-optimize');
    } );

    カッコ内の Text Domain の値は シングルクォーテーションで囲みます。

    上のコードでは、Autoptimize プラグインと WP-Optimize の2つを指定してみました。必要に応じて unload_textdomain(‘xxx’);の行を 追加または削除してください。

上記のコードで日本語表示が解除されない場合

前述のコードでほとんどのプラグインは英語表示に戻りますが、私が試した中で、Google XML Sitemaps プラグイン は日本語化が解除できませんでした。このような場合は、以下のコードを試してみてください。

add_filter( 'load_textdomain_mofile', 'my_custom_translation_file', 10, 2 );
function my_custom_translation_file( $mofile, $domain ) {
  if ( ( 'sitemap' === $domain ) ) {
    $mofile = '';
  }
  return $mofile;
}
  • もともと翻訳ファイルの指定場所をプラグインが指定しているデフォルトの場所から変更するためのコード を改造したものです。
  • 3行目の ( ‘sitemap’ === $domain ) の sitemap と書かれている部分は、「Google XML Sitemaps」プラグインの Text Domain です。この部分を翻訳を解除したいプラグインの Text Domain に置き換えて使ってください。