WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです

【WordPress】プラグインを日本語化する際によくある不具合と対処方法

公開日:2016(平成28)年9月2日/最終更新日:

【WordPress】プラグインを日本語化する際によくある不具合と対処方法



【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

当サイトで配布しているプラグインの日本語翻訳ファイルに関しては、きちんと適用されるようにテストした上でリリースさせていただいておりますので、説明手順通りに適用していただければ大丈夫なのですが、独自に翻訳ファイルを苦労して作って適用してみたけどうまくいかないことありませんか?

今回はWordPressのプラグイン翻訳でよくある不具合と対処方法について解説します。この情報以前に行っていただきたいチェック方法を別の記事で説明していますので

【WordPress】プラグインの日本語翻訳ファイルがどうしても適用されないときのチェックポイント

で解決されない場合の参考にしてください。

翻訳ファイルが使える(日本語で使用できる)かどうかのチェックポイント

言語の変更に対応しているプラグインかどうかを簡単に判断する

公式に配布されているプラグインはプログラムの先頭に説明を記述するように決められています。その中に

  1. Text Domain:翻訳ファイルの名前
  2. Domain Path:翻訳ファイルの場所

という記述が存在すれば、日本語化は可能ということになります。

原則として日本語の場合は「翻訳ファイルの名前-ja.mo」という名前のファイルが「翻訳ファイルの場所」へ挿入されていれば日本語化されるはずなのですが、プラグインによってはうまくいかないことがあります。

原因として多いのは

  1. プログラムの中に言語変換用の接頭語がない
  2. プラグインの翻訳読み込みプログラムが欠落している
  3. プラグインの翻訳読み込みプログラムが間違っている

です。多くはプラグイン作者の設定漏れということになります。まあ、個人で作られていて無料提供されているという完全ボランティアですから起こり得ることだと思います。
1に関しては変換用の接頭語というのが決められていて、通常表示される英語の前にそれがあることが翻訳の前提なのですが、中には入れ忘れの文字列があったり、全く設定されていなかったりすることがあります。この場合にはプログラム全てを見て修正すれば使えるようになるのですが、プラグインのアップデートで上書きされてしまうと修正部分も上書きされ、作業が台無しになってしまいますから翻訳はあきらめた方が無難です。

2と3に関しては次の項で説明します。

別のプラグインを使って翻訳可能かどうかを判断する

前述したように本来はプラグインのプログラムの先頭に

  1. Text Domain:翻訳ファイルの名前
  2. Domain Path:翻訳ファイルの場所

が記述されていることが決まりなのですが、中にはこの部分が欠落しているものもあります。あきらめる前に「Loco Translate」というプラグインを使って翻訳文字列があるかどうかを判断します。

管理画面からテーマやプラグインを翻訳できる「Loco Translate」

このプラグインもこの記事を書く直前にバージョンが大きく変わり、最新版をインストールすると日本語化されない状況でした。前のバージョンではきちんと日本語で使えるので必要な方は

WordPressの翻訳プラグイン「Loco Translate」をバージョン2.×から1.×へ戻す方法

を参考に旧プラグインを導入ください。

プラグインを有効化したら、上のリンクの手順に従って翻訳の元となる.potファイルを作成してみてください。翻訳可能な接頭語があるものはこのプラグインが抽出してくれます。つまり翻訳可能になる可能性があるということです。

プラグインの翻訳読み込みプログラムが欠落している

add_action( 'plugins_loaded', 'プラグイン名_load_textdomain' );
function プラグイン名_load_textdomain() {
load_plugin_textdomain( '翻訳ファイル名', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
  • 「プラグイン名」の欄を実際のプラグイン名へ、「翻訳ファイル名」を正しい翻訳ファイル名へ書き換えます
  • プラグイン名は通常編集画面上部に記載されている「Plugin Name: プラグイン名」のスペース部分を「_(半角アンダーバー)」に置き換えて使用します
  • 翻訳ファイル名は上記の「Text Domain」に書かれているものか、「Plugin Name: プラグイン名」のスペース部分を「-(半角ハイフン)」に置き換えて入力します
  • コード適用前に「load_plugin_textdomain・・・」というプログラムがソースの中に存在しないかを確認してください。重複した場合エラーが発生し、管理画面へ入れなくなるなどの不具合が発生しますので注意が必要です。もし発生した場合は文末の対処方法を参考に修復してください。

コードの参考にさせていただいたサイト

コードはShinichi Nishikawa’sさんのページにあるものを利用させていただきました

WordPressの翻訳用のファイルがどうやって読み込まれているのかを調べてみた

QA AnalyticsQA Analytics

プラグインの翻訳読み込みプログラムが間違っている

翻訳ファイルを読み込むためのプログラムは記述してあるのに読み込めないこともあります。下手に修正するよりも以下のように書き換えてしまった方が無難です。

  1. 「load_plugin_textdomain・・・」と書かれているコードの前後にある「function ~コード~ }」の部分を削除
  2. 「更新」ボタンを押して不具合がないかを確認する
  3. 上のコードを参考に正しい翻訳読み込み用のプログラムを追記する
  4. 「更新」ボタンを押して不具合がないかを確認する

きれいな書き方がされているプラグインならこのコードの前後に注釈があるのでそこの間を削除すれば済むのですが、コードを間違って記述する位ですからごちゃごちゃに書かれている場合がほとんどです。よくプログラムの流れを見て削除するようにしてください。

2度更新ボタンを押すように説明しているのは、エラーが出た場合にどちらが原因かを切り分けるためです。

修正が終わった後は

上記の措置できちんと読み込みコードが動いたら、後は翻訳した「.mo」ファイルを転送するだけです。転送先は

  1. プラグインのフォルダの中にある「languages」フォルダ(ない場合は作成する)
  2. WordPressのフォルダの中にある「languages」→「plugins」フォルダの中

のいずれかです。プラグインのアップデートによって翻訳ファイルが消失しないように2の場所へ転送することをおすすめします。

不具合が起きてしまったら

プログラムを触るのですからコードの修正をして「更新」ボタンを押した後違うページを開こうとしたらエラーが・・・ということが発生しないとは限りません。そんな場合には一旦エラーの出たプラグインそのものを削除して復旧する方法が妥当です。プラグインの設定画面などで行った設定のほとんどはデータベースへ追記されていますので、復旧後再度同じプラグインをインストールすれば元に戻ります。

さいごに

いかがでしたか?できるだけ分かりやすく解説しようと思って書きましたがなかなか説明が難しいなぁというのが私自身の感想です。基本的に私がプラグインの日本語翻訳ファイルを提供する際にはスムーズにいく場合を除いて上記のようなチェックを行った上でリリースしています。今までに以下のような翻訳ファイルを提供させていただきましたので必要であればどんどん使ってください。
※完全ボランティアでやっていますから、張られている広告や商品などに興味がある方はそちらもぜひご利用ください(強制するものではありません)

著:清水 由規, 著:清水 久美子, 著:鈴木 力哉, 著:西岡 由美, 読み手:星野 邦敏, 読み手:吉田 裕介
¥2,889 (2024/02/08 17:07時点 | Amazon調べ)