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 本体のオリジナルのテキストが変更された時に、それを追いかけないといけなくなりますので、末長くお付き合いする覚悟が必要ですからね!