WordPressでアップロードした翻訳ファイルがいつの間にか元の翻訳内容に書き換わってしまうときの対処

WordPressのサイトにいろいろなコンテンツを追加したり、機能をアップさせたりできる便利なプラグイン。でも・・・たくさん設定項目があるプラグインなのに英語で理解不能・・・なんてことも多いはず。そんなとき役に立つのが「日本語翻訳ファイル」。当サイトでもプラグインの紹介記事と共に翻訳できるものは独自のファイルを提供させていただいており、たくさんの方に活用(ダウンロード)いただいています(もちろんダウンロードは無料です)。

おお!!これでバックエンド(管理画面)の設定もフロントエンド(閲覧画面)の表示も完璧!!と思って数日たっらなぜか英語に戻っていたり、全部日本語だったはずが中途半端な感じになっていたりという経験ありませんか?

当サイトにも時折「プラグインの翻訳ファイルを適用して快適に使えたのですがある日突然元にもどってしまいました・・・」なんていう問い合わせをいただき、都度返事を書かせていただきながら対処しています。でもこれではいたちごっこでしょ!ということで根本的な対処方法を模索し、一定の結論を得ましたので紹介します。

環境により「これでバッチリ!!」という対処方法ではありませんが、参考になればと思います。

スポンサーリンク

原因の1つはWordpress3.7から導入されている「自動更新機能」

WordPressのバージョン3.7からWordpress本体、機能が有効なテーマ、機能が有効なプラグイン、機能が有効な翻訳ファイルなどに対し、定期的に更新情報をチェックして自動で更新されるようになっています。自動更新が有効なサーバー環境でのみ動作するのでいつの間にか更新されているということになります。

更新のタイミングはこちらのWordpress日本語公式ブログの記事に書かれていますが、午前7時または午後7時に実行するようになっているようです。

前述した通り、この機能によって翻訳ファイルも自動更新が可能になっているものについては否応なしに更新されてしまうため、せっかく作ってアップロードしたサイトの内容に合わせた翻訳ファイルが元に戻ってしまう現象が発生するのです。

プラグインの翻訳ファイルは通常

  1. プラグインのフォルダ内にある「languages」等のフォルダ内
  2. サイトの「wp-content」→「language」→「plugins」のフォルダ内

へ挿入することで翻訳が適用されるのですが、最終的に採用される2のディレクトリに入ったファイルがこの自動更新によってアップデートされてしまうため、ある一定期間過ぎると翻訳が元にもどってしまうという奇妙な現象が起こるのです。

中にはそんなことされないよと思う方もいるかもしれませんね。使っているサーバーによっては対応していないものもあるようで、たまたまレンタルしたサーバーが自動更新に非対応だったためにこの不具合から免れている場合があります(文末の参考リンクを参照ください)。

使用しているサーバーが自動更新に対応しているかどうかは「Background Update Tester」というプラグインを使ってテストできます。

(古いプラグインですがWordpress4.7.5でも問題なく動作しました)

プラグインを有効化するとダッシュボードの中のリンクに「Update Tester」という項目が追加されるのでクリックするだけです。

自動更新が有効となっている環境であれば【This site is able to apply these updates automatically. Cool!】というメッセージが切り替わった画面に表示されます。

翻訳ファイルの自動更新を停止する方法

それなら自動更新を停止してしまえばいい!!と思う方もいるでしょう。でもちょっと待ってください!!以前に

最近4.7.0へメジャーアップデートがあったWordpress。このバージョン4.7.0もしくは4.7.1を使用しているサイトでRest APIの脆弱性をついたサイバー攻撃があるようです。Wordpressは無償・無料で提供してくれていて本当に便利なツールでありながら、こうした問題に対して即座に対応してアップデートをしてくれますから本当に助かります。旧バージョンのWordpressを使用している方はぜひ最新版への更新をしましょうね。

でも書いた通り、Wordpressは非常に人気のあるCMSツールですし、ファイルの構造は共通ですから一度弱いところ(脆弱性)が見つかるとそこを足掛かりにサイトを乗っ取られたりということもないことはありません。Wordpress本体やテーマ、プラグインの更新はこうした弱い部分に対策を打つために更新される場合も多いですからむやみに更新を停止するのは危険だと思います。

そこで一番安全な方法として、「翻訳ファイルの更新だけを停止する」方法を紹介します。

設定は簡単、テーマのfunctions.phpへ

//翻訳ファイルの自動更新を無効化
add_filter( ‘auto_update_translation’, ‘__return_false’ );
を追記するだけです。

functions.phpへ追記するのは不安・・・という方は

「Easy Updates Manager」プラグインは設定に応じて個別に更新表示の有無を管理できますので、プラグイン単位、テーマ単位、コアファイルだけといった感じでプラグインの更新通知をコントロールできる便利なプラグインです。

というプラグインを使えば設定できます。

ただしいずれの方法でも2つ注意点があります。

1つめはプラグインの更新やダッシュボードの「更新」メニューから「翻訳ファイルの更新」を行ってしまうと、Wordpress本体のlanguagesフォルダに保存されているファイルのうち、自動更新できるものはすべて上書きされてしまうこと。もしも更新する場合には今サーバー上にあるファイルをバックアップ(パソコンなどへ保存)しておく必要があります。

2つめはWordpress本体やプラグインがどんどんこの機能を拡充していくということです。セキュリティや使い勝手の問題から常に最新状態にしてくれる便利な機能ですから当然の話ですね。今までは英語のまま苦労して使っていたプラグインがいつの間にか日本語で使えるようになる・・・なんて時代も来ていますからこの機能を使わない手はないわけです。しかし、この更新機能を停止してしまえばこの恩恵は受けられなくなります。

・・・で一番いい方法は、

  1. 自身で作成したプラグインなどの翻訳ファイルはいつもパソコン上に持っておく
  2. 翻訳の自動更新を停止する
  3. 時折ダッシュボードの更新から「翻訳の更新」を行った後、パソコンに保存したものを上書きする

でしょうね。これでもプラグインの更新などによって翻訳すべき単語が変わってしまうと一部は翻訳されないまま・・・なんてことにもなりますから完璧とは言えません。でも現状では一番最善の方法でしょう。

自身でpoeditを使って翻訳しているのであれば、わざと翻訳を更新して、「〇〇の翻訳を更新しました」と書かれたプラグインの.po.moファイルをダウンロードし、一度poeditで開いて事前翻訳をかけ、足りない部分を翻訳してから元に戻す・・・なんて方法を取ればほぼ完璧でしょう。

参考資料

WordPressのCodexに掲載されている関連情報です

自動更新に対応しているサーバー一覧

少し古いテストデータではありますが、自身の使っているレンタルサーバーが自動更新に対応している場合には今回のような翻訳ファイルの上書きが行われます。

自動更新の設定

トップへ戻る