プラグインの言語設定でハマる

こんにちは、佐藤です。久々にどハマりしてしまったので記事にします。

WordPress関連で困ったことがあるとだいたいは検索で解決するのですが、時々、いくら調べても解決しないケースに遭遇します。

どこかに自分と同じ悩みできっとハマっている方がいると思い、記事にしたいと思います

前提環境

WordPress: v4.9.8

Plugin: WordPress Simple Membership v 3.7.2

やりたいこと

プラグインの言語を英語から完全に日本語にする。

ごくごく簡単で朝飯前。と思っていた時が自分にもありました。

 

問題発生

フォームの入力チェックを行っている時に問題が発生。エラー画面には以下のような内容が。

以下の内容を修正してください
・Username is required
・メールアドレスは必須です
・パスワードは入力必須です

一部だけ日本語になっていない?!これは困った。

問題へのアプローチ

1: .po/.moファイルをコンパイルし直す

調べたところwp-content/plugins/simple-membership/languages/内に日本語と思わしきファイルが複数ある。

この手の翻訳がダメなケースは.moファイル古いままなので.poファイルをコンパイルし直せば解決するはず。

が、コンパイルし直しても全く解決せず。

2: 未翻訳の可能性

先ほど調べた言語ファイルに不備はない。

3: 他の言語ファイルを消す

無駄なものは消してしまいましょう。でも治らない。

ここで1つ重大なことに気付く。ローカルでは言語が全て日本語になっているのにサーバー上ではおかしい。

つまりバージョンまたはパスの設定が怪しいとアタリをつける。

4: define(WPLANG, ‘ja’)を疑う

これだ!と思いきや違う。そもそもdefine(WPLANG, ‘ja’)は非推奨になっている。

5: load_textdomain / load_plugin_textdomain を見直す

こうなればsimple-membershipの全てを読み尽くす覚悟。言語ファイルを設定する関数の使用が間違っていないかを確認する。

しかし、これも正常に設定されている。

6: 定数: WP_LANG_DIR / SIMPLE_WP
_MEMBERSHIP_DIRNAMEを確認

やっと正解にたどり着く。

先ほどの言語ファイルのパスがどうやらサーバーとローカルが違う事で起こっていた模様

サーバー:wp-content/languages/plugins/simple-membership-ja.mo

ローカル:wp-content/plugins/simple-membership/languages/simple-membership-ja.mo

 

サーバー上のファイルが古かったので新しいものに差し替えて解決。一件落着。