翻訳ファイルの一部分を変更する方法

先日のWooCommerce Meetup Kansai にて即答できなかった、翻訳の内容を修正する方法で、翻訳ファイルをいじらずにする方法をここで紹介致します。

WooCommerceの翻訳でサービスによっては、「商品」という良い方が合わない場合などがあります。他にも「お客様」とかもですね。
その場合、簡単な方法としては翻訳ファイルを触ることなのですが、翻訳ファイルではなくて、フックを使って functions.php を使って翻訳を変えることが出来ます。

この方法のメリットは、アップデートの度に翻訳ファイルを書き換えないといけないという手間から開放されるということです。
デメリットは、翻訳ファイルの内容が変わった時に、本家の翻訳に戻ってしまうということです。よくあることなのですが、説明文などは時たま英語の言い回しが変わってしまって、翻訳ファイルの原文自体が変わることがあります。この時に気が付きにくいというデメリットがあります。

個人的には、 functions.php で変えた方が良いと思いますので、その方法をご説明します。

まず、翻訳ファイルは gettext という仕組みを使っています。また、ちょうどこれに gettext というフィルターが WordPress の方で用意されていますので、それをフックする形で対応します。

add_filter('gettext', 'change_japanese_text', 20, 3);
 
function change_japanese_text( $translated_text, $untranslated_text, $domain ){
    switch ($untranslated_text) {
      case 'Order on-hold'://変更したい文言の元テキストを入れる
        $translated_text = '保留(入金待ち)在庫引当済み注文';//変更後のテキストを入れる
        break;
      case 'Processing':
        $translated_text = '出荷処理中(入金済み)';
        break;
      case 'Cancelled':
        $translated_text = 'キャンセル(在庫未処理)';
        break;
    }
    return $translated_text;
}

これで、表示が変わるはずです。
お試しください。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください