LoginSignup
5
6

More than 5 years have passed since last update.

WordPress本体の翻訳をプラグインから差し替える

Last updated at Posted at 2016-10-14

WordPress本体の翻訳をなんらかの都合で差し替えたいときは、以下のような感じ。

add_filter( "gettext", function( $translations, $text, $domain ){
    if ( "default" === $domain && "Dashboard" === $text ) {
        return "まいど!";
    } else {
        return $translations;
    }
}, 10, 3 );

gettext というフィルターフックを使って、差し替えることができます。

"default" === $domain という部分は WordPress 本体の翻訳ですよという意味で、この場合、たとえばプラグインやテーマに Dashboard という単語があってもそれはプラグインやテーマ側の翻訳が使用されます。

プラグインやテーマの翻訳を差し替えたいときは、ソースのどこかに load_plugin_textdomain() 等があるので、それの第一引数にある textdomain を使用してください。

独自の .mo を使って翻訳を差し替える

これはレアなケースですが、翻訳ファイルを丸ごと差し替えたいケースもあるかもしれません。また、WordPressにコントリビュートする過程の中で、まだコアにとりこまれておらずプラグインとして提供されている新機能の翻訳をテストしたいケースもあります。

そんな場合は以下のような感じ。

load_plugin_textdomain(
    "rest-api",
    false,
    dirname( plugin_basename( __FILE__ ) ).'/languages'
);

add_filter( "gettext", "translate_rest_api", 10, 3 );

function translate_rest_api( $translations, $text, $domain ) {
    if ( "default" === $domain && translate( $text, "rest-api" ) ) {
        return translate( $text, "rest-api" );
    } else {
        return $translations;
    }
}

この例では rest-api という textdomain で翻訳ファイルを作成して、それで WordPress 本体の翻訳を上書きしています。

サンプルのプラグインはこちら。

注意

これらの方法は、WordPress 本体のオリジナルのテキストが変更された時に、それを追いかけないといけなくなりますので、末長くお付き合いする覚悟が必要ですからね!

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6