ワードプレスの6.5 以降wp-content/languagesフォルダに-ja.l10n.php等のPHPファイルが生成されるようになりました。このファイルについて解説いたします。

wp-content/languagesフォルダに生成される、mo,poファイル

ワードプレスのwp-contentフォルダにはlanguagesというワードプレスコアファイルやテーマ、プラグインの翻訳ファイルが入っています。
.poファイルは翻訳のソースファイルで、.moファイルはそれをコンパイル(データベース形式の機械語に変換)したものです。
この翻訳ファイルは、 https://translate.wordpress.org/ で有志の方が翻訳したものが自動で更新されて、ダウンロードされこのフォルダに設置され、プラグイン等のページの描画の際に読み込まれて翻訳が実施されます。

※テーマやプラグインのフォルダ内に翻訳が含まれる場合もあります。このような場合はテーマやプラグインに翻訳ファイルの読み込み先がプログラミングされ明示されています

wp-content/languagesフォルダに生成される、-ja.l10n.php等のPHPファイル

このwp-contentフォルダにlanguagesワードプレスの6.5 以降-ja.l10n.php等のPHPファイルが生成されるようになりました。
このファイルは、mo,poファイルを読み込むよりも高速な翻訳のキャッシュファイルになります。
構造は

'language'=>'ja_JP','messages'=>['Show details'=>'詳細を表示'

のようになっており、言語指定(‘language’=>’ja_JP’)の後に翻訳する文字列→翻訳という配列データになっています。

wp-content/languagesフォルダの-ja.l10n.php等のPHPファイルを編集するとどうなる?

この翻訳のキャッシュであるPHPファイルの翻訳を変更すると、翻訳も変更されます。
しかし、1日に一回、mo,poファイルの更新があるかどうかをワードプレスが自動で確かめますので、もしその時に翻訳のmoファイルの更新がある場合は、moと共に-ja.l10n.php等のPHPファイルのキャッシュも更新されてしまいますので、翻訳の変更が上書きで消えてしまいます。

この為、-ja.l10n.php等のPHPファイルを直接編集するのはお勧めできません。

翻訳の自動更新を止めるには下記のコードをfunctions.phpに記載します

add_filter( ‘auto_update_translation’, ‘__return_false’ );

翻訳の一部だけを書き換えたい場合は?

この場合は、add_filter( ‘gettext’, フィルタを使う方法がございます。

下記の例では、Add FieldとEditの日本語の翻訳を置き換えるコードの例です。(テーマのfunctions.phpなどに記載いただくと動作します)

add_action( 'init', function() {
  add_filter( 'gettext', function( $translation, $text, $domain ) {
    $overrides = [
        'Add Field' => 'フィールドを追加する',
        'Edit'      => '編集する',
    ];

    return $overrides[ $text ] ?? $translation;
  }, 10, 3 );
} );

ご参考になりましたら幸いです。

WordPress ワードプレスのテーマやプラグインの修正、カスタマイズ、PHPコーディングのご依頼・ご相談はWPドクターまでお気軽にお送りください