WordCamp US 2019 での Matt Mullenweg の基調講演の裏側、ブロックエディターでプレゼンテーションを作成するプラグイン「Slides & Presentations」の詳細を記述したブログ記事を友人と共同で翻訳しました。
乗りかかった船ですので、記事末尾の案内に従い、文字列を日本語に翻訳してみました。が、ブロックのメニューで日本語が出力されません。あらら。

調査と修正の流れ
メニュー末尾の「プレゼンテーションのカバー画像」のように翻訳されているものもあるので、まったく翻訳がだめなわけではありません。この「プレゼンテーションのカバー画像」が翻訳されれている箇所は register.php にありますので、JavaSript に正しく翻訳ファイルがロードされていないようです。
参考文献、特に Pascal の記事から以下のような行を追加すれば良さそうです。
wp_register_script(
'my-plugin-script',
plugins_url( 'js/my-script.js', __FILE__ ),
array( 'wp-i18n' ),
'0.0.1'
);
wp_set_script_translations( 'my-plugin-script', 'my-plugin' );
ここでテキストドメイン(上の例では my-plugin
)は頻出する __()
の引数から「slide」とすぐに分かりますが、ハンドル名が分かりません。そこでwp-content/languages/plugins
を見ると以下のファイルがあります。
- slide-ja-168726dbe96b3ce427e7fedce31bb0bc.json
- slide-ja-7f0d6418aa692eba917bad748c670f71.json
中間にあるのはJavaScript ファイル名の MD5 ハッシュですので、プラグインディレクトリ内の JavaScript ファイル名のハッシュを取得します。
~/wordpress/slides $ md5 -s index.js
MD5 ("index.js") = 168726dbe96b3ce427e7fedce31bb0bc
~/wordpress/slides $ md5 -s template.js
MD5 ("template.js") = 7f0d6418aa692eba917bad748c670f71
~/wordpress/slides $ md5 -s speaker.js
MD5 ("speaker.js") = b2ae778d7976042f1650d33654d12e4d
これで、index.js と template.js に関連するハンドルが必要なものとわかります。このファイル名で検索すると wp_enqueue_script
している部分があり、ハンドル名がそれぞれ「slide」「slide-template」とわかります。
あとは init
のアクションフックで呼び出される register.php にコードを挿入します。
wp_register_script(
'slide',
plugins_url( 'index.js', __FILE__ ),
array( 'wp-i18n' ),
filemtime( dirname( __FILE__ ) . '/index.js' )
);
wp_register_script(
'slide-template',
plugins_url( 'template.js', __FILE__ ),
array( 'wp-i18n' ),
filemtime( dirname( __FILE__ ) . '/template.js' )
);
if ( function_exists( 'wp_set_script_translations' ) ) {
wp_set_script_translations( 'slide', 'slide' );
wp_set_script_translations( 'slide-template', 'slide' );
}
無事出ました。Pull Request を送っています。
