welcartの翻訳を変更する。 アップデート影響されない

WordPressの翻訳データ(.mo)をアップデートに影響されず部分的にオーバーライドしたい

https://poedit.net/

【Poeditの使い方】WPテーマやプラグインを日本語化する翻訳エディタ

を参考。

 

まずは元々の翻訳データ元ファイル(.po)を子テーマのディレクトリにコピー

まずは、ウェルカートプラグインの翻訳データ、poファイルを任意のディレクトリにコピーします。

今回の例では、子テーマフォルダのlanguageフォルダにコピーしました。
コピーするフォルダは、wordpressのプラグインやテーマ等のアップデートでデータが消えてしまわないような場所が好ましいかと思います。

最終的にファイルの場所をfunctions.phpから指定するので、最悪どこだっていいです。
わかりやすく管理しやすくかつアップデートの影響を受けない場所なら。

 

 

必要な翻訳だけを自作で
この編集したpoファイルに記述されている翻訳が反映され、そこに無いものが、オリジナルの翻訳(元のデータ)が反映されることになります。
翻訳データがアップデートされることは稀かもしれませんが、アップデートの内容を極力利用しつつ、ここだけは譲れないって文言だけを反映させることができます。

 

 

開いたpoファイルのヘッダー部分を残して、その他は全て削除し、変更後の翻訳行のみ残して保存します。

今回の例では下記のようなファイルになりました。

ヘッダー部分は、コピー元のデータによって様々かと思いますので、下記とは全く同じではありません。

msgid ""
msgstr ""
"Project-Id-Version: Welcart e-Commerce\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-01-20 00:00+0900\n"
"PO-Revision-Date: 2019-03-04 16:11+0900\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.5.7\n"

msgid "Admit to send it with this information."
msgstr "プライバシーポリシーに同意の上、上記内容を送信する"

 

msgid “Admit to send it with this information.”
msgstr “プライバシーポリシーに同意の上、上記内容を送信する”
これで下準備はOK。

 

 

保存した.poファイルをコンパイルして、.moファイルを書き出します。

ここで登場するのが、Poedit。

PoeditをPCにインストールして、保存したファイルを開きます。

開いたら、ファイル→MOにコンパイル
で、同じ階層にmoファイルを書き出します。

これで、翻訳データの準備が完了しました。

あとは、functions.phpに、翻訳データのオーバーライド指定を追記するだけでOKです。

流れとしては、既にプラグインからload_textdomainにて読み込まれている翻訳データをアンロードします。

アンロードした上で、自作の翻訳データを読み込ませ、さらに、オリジナル(元の翻訳データ)を読み込みます。

こうすることで、まずは、自作の翻訳データが適用され、そこに無いものに関しては、オリジナルの翻訳データが利用されることになります。


/***ウェルカート翻訳ファイルをオーバーライド***/

//ウェルカートプラグインのテキストドメインを指定
$welcart_text_domain = 'usces';

//オリジナル(元の)翻訳データ
$welcart_original_mofile = WP_PLUGIN_DIR.'/usc-e-shop/languages/'. $welcart_text_domain.'-ja.mo';

//変更後の自作翻訳データ(任意)※例では利用している子テーマのlanguagesフォルダ
$welcart_override_mofile = get_stylesheet_directory().'/languages/'.$welcart_text_domain.'-ja.mo';

//読み込まれている翻訳データをアンロード
unload_textdomain($welcart_text_domain);

//変更後の自作翻訳データをロードする
load_textdomain($welcart_text_domain, $welcart_override_mofile );

//オリジナル(元の)翻訳データをロードする
load_textdomain($welcart_text_domain, $welcart_original_mofile );

以上を、functions.phpに追記します。
追記箇所はどこでも良いかと思います。

保存して、サーバーにアップロードしたら完了です。

変更した箇所のみが、変わっていることが確認できたらOKです。