WordPress プラグイン・テーマ翻訳: 翻訳ファイルがあるのに反映されない場合のトラブルシューティング

引き続き、WordPress プラグイン・テーマ翻訳シリーズ第3弾です(その1その2)。

さあ、日本語の MO ファイルが無事完成した!と思っても、なぜか翻訳が適用されていない場合があります。悲しいことにこれ、けっこうよくあるんです…。そんな時のためのトラブルシューティング向けヒントをまとめてみました。

翻訳がまったく適用されていない場合

すべて英語のままという場合には、以下の原因が考えられます。

  • MO ファイルが正しく生成されていない(生成時にエラーが発生している場合など)
  • プラグイン・テーマ特有の textdomain が含まれていない(i18n Tools のadd-textdomain.php で解決可能。テーマ国際化ドキュメンテーション参照)
  • load_plugin_textdomain または load_theme_textdomain 関数が含まれていないか書式が誤っている
  • 翻訳ファイル名が間違っている
  • 翻訳ファイルを置く位置が間違っている(load_plugin_textdomain、load_theme_textdomain 関数で指定された位置に正しく置くこと)

翻訳が一部のみ適用されていない場合

一部だけ英語のままという場合には、以下の原因が考えられます。

  • MO ファイルが正しく生成されていない
  • プラグイン・テーマ付属の POT ファイルを使った場合、それが古くなっている(POT ファイルを更新して再翻訳)
  • 部分的に gettext 関数または textdomain 指定が抜けている

公式ディレクトリで translation-ready のタグがついていても、特にプラグイン・テーマ作者が英語圏の方の場合は実際に PO ファイルを用意してテストまではされていない場合がほとんど。実際に翻訳を反映してみた際にもしファイルの方におかしいところがあったら、フィードバックしていくと喜んでもらえると思います。

PO ファイルが無事完成したら、ぜひ翻訳ファイルを共有してパッケージに含めてもらいましょう。日本語 Codex には作者に連絡する際の例文などもあります。

トラブルシューティングに便利なプラグイン

Pig Latin

WordPress の翻訳プラットフォームである GlotPress の開発など、コアの国際化を進めてきたニコライの作ったプラグイン。きちんと文字列が翻訳可能になっている場合は英語の文字をピッグ・ラテンという独特の配列に変更してくれます。

Akismet in Pig Latin

Akismet プラグインの画面に Pig Latin を適用した例。

プラグインが出力する画面を見るだけで、文字列が英語のままの場合はコードが翻訳可能ではない、ピッグラテン表示だけど日本語になっていないという場合は翻訳漏れや POT ファイルが古いなどの理由で適用されていない、という判断ができます。

Pig Latin for Japanese

上記のプラグインのフォーク。ピッグラテンになる部分を意味不明な日本語の文字列にしてくれるので、こちらのほうが翻訳未対応の部分を見つけやすいかも。元の言葉がまったくわからなくなるのでナビゲーションにご注意を!

Akismet Pig Latin Japanese

Akismet プラグインの画面に Pig Latin Japanese を適用した例。

プラグイン・テーマ翻訳関連のドキュメンテーション

下の2つのリンク、Handbook についてはまだ完成していない部分もありますが、WordPress に特化した内容でかなり詳しい説明があるので参考になると思います。

コメントを残す