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

公開日: 更新日: Wordpress
CMSのアイキャッチ画像




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!】というメッセージが切り替わった画面に表示されます。

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

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

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

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

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

//翻訳ファイルの自動更新を無効化
add_filter( 'auto_update_translation', '__return_false' );
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

を追記するだけです。

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

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

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

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

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

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

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

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

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

参考資料

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

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

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

自動更新の設定

いつでもご相談・サイトカスタマイズの依頼を受け付けています

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


【スポンサーリンク】