システム開発・構築の神様

新しいサービスや技術を使った開発や構築。その他不具合解決など

WordPressの翻訳ファイル(.mo)が、アップデートの度に上書きされ戻ってしまう

WordPressは、世界中で最もサイト構築に利用されているオープンソースです。

そのため、コア、テーマ、プラグインには、複数の言語に対応する仕組みが取り入れられています。

言語ファイルの.poを、新規に作成したり変更することで、ページ上のテキストを編集することが可能です。

海外のプラグインの場合は、日本語がおかしかったり、100%日本語に対応している訳では無く、ところどころ翻訳されていないことも多々あります。

その時は、自分で翻訳を追加して.moファイルをコンパイルして対応します。

ただ、この時に気をつけなければならないことは、テーマやプラグインのバージョンを上げると

翻訳ファイルまで更新されてしまい、自分で翻訳した単語がまた未設定に戻ってしまうことです。

このあたりの対応が面倒・・・

WooCommerceのプラグインで、日本でなじみのない単語やテキストを、分かりやすく翻訳していても、アップデートの度に戻ってしまいます。

WooCommerceは、比較的アップデートの頻度が高いため、その都度コピーし直すのでは面倒です。

いろいろと調べていると、自動アップデートはやめて、FTPによるアップデート(言語ファイルはアップデートしない)を推奨していたりと・・・

面倒・・・

そして、その面倒な作業をしているのに、新しい翻訳がありますとメッセージが常に表示されたままになります。

これはこれで邪魔・・・

言語ファイルのパーミッションを変更して、上書き禁止にしても同じだし・・・

無いか良い方法が無いのか?

調べてみても見つかりませんでした。

みんな翻訳ファイルの管理は、まめにしているのだろうか?

それとも、便利な翻訳プラグインがあり、データベース上に単語を登録することで、常にその翻訳が使われるものがあるのだろうか?

うーん。

結局ごり押し対応で今は様子見することにしました。

行った作業は

テーマフォルダに新しくlanguagesフォルダを作成し、その中に編集した自分の翻訳ファイルを置く。

テーマ側の翻訳ファイルが使われるように、プログラムを追加する。

です。

コード(例)

function MY_load_textdomain_mofile( $mofile, $domain ) {
$locale = get_locale();
$myfile = get_stylesheet_directory() . ‘/languages/’. $domain .’-‘. $locale . ‘.mo’;
if ( is_file( $myfile ) AND ‘ja’ == $locale ) $mofile = $myfile;
return $mofile;
}

add_filter( ‘load_textdomain_mofile’, ‘MY_load_textdomain_mofile’, 99999, 2 );

テーマフォルダ内に、テーマやプラグインの翻訳がある場合だけ、テーマ側の翻訳を使うようになります。

これで、翻訳した翻訳ファイルが、アップデートの度に戻ってしまうことも無く、管理やメンテナンスが楽に行えるようになりました。

ただ、新しい単語の追加に対応していくコストは残っていますが・・・

関連記事