WordPressのプラグイン「WooCommerce」を使っていて、日本語翻訳の文言がしっくりこない箇所がいくつかありました。
そこで、翻訳を修正してみることにしました。
前提
・プラグイン「WooCommerce」インストール済み
・プラグイン「WooCommerce For Japan」インストール済み
・子テーマ作成済み
functions.phpに関数を追加する
翻訳ファイルを修正する方法もあるようですが、.poファイルを修正後に.moをツールで生成しなければならないなど手間がかかりそうでしたので、functions.phpファイルに関数を追加する方法をとることにしました。
change_admin_cpt_text_filter
下記のフィルターフックを子テーマのfunction.phpに記述します。
1 2 3 4 5 6 7 8 9 10 |
add_filter('gettext', 'change_admin_cpt_text_filter', 20, 3); function change_admin_cpt_text_filter( $translated_text, $untranslated_text, $domain ){ switch ($untranslated_text) { case '': //翻訳前の文言(英語) $translated_text = ''; //翻訳後の文言(日本語) break; } return $translated_text; } |
case文を増やすことで、複数の文言を翻訳することが可能です。
修正前
それでは、実際に修正していきます。
マイアカウントからログインする際のエラーメッセージ、「エラー: ユーザー名が必要です」を「エラー: ユーザー名は必須です」に変更することにします。
修正方法
wp-content/languages/plugins/woocommerce-ja.poを開いて、対象の文言を検索します。
「ユーザー名が必要です」で検索したところ、見つかりました。
12456 12457 12458 |
#: includes/class-wc-form-handler.php:988 msgid "Username is required." msgstr "ユーザー名が必要です" |
msgidが翻訳前の英文、msgstrが翻訳後の日本語です。
msgidの”Username is required.“をコピーします。
そして、先ほどの関数のcaseの後にペースト、$translated_textには’ユーザー名は必須です‘と入力します。
1 2 3 4 5 6 7 8 9 10 |
add_filter('gettext', 'change_admin_cpt_text_filter', 20, 3); function change_admin_cpt_text_filter( $translated_text, $untranslated_text, $domain ){ switch ($untranslated_text) { case 'Username is required.': //翻訳前の文言(英語) $translated_text = 'ユーザー名は必須です'; //翻訳後の文言(日本語) break; } return $translated_text; } |
保存して、画面をリロードします。
修正後
修正されました。
woocommerce-ja.poファイル内に対象文言が見つからない場合
wp-content/languages/plugins/woocommerce-ja.poを検索しても対象文言が見つからない場合は、wp-content/languages/jp.poなどを検索してみると見つかるかもしれません。
他のファイルの場合も、手順は同様です。