WordCamp US 2019 での Matt Mullenweg の基調講演の裏側、ブロックエディターでプレゼンテーションを作成するプラグイン「Slides & Presentations」の詳細を記述したブログ記事を友人と共同で翻訳しました。
乗りかかった船ですので、記事末尾の案内に従い、文字列を日本語に翻訳してみました。が、ブロックのメニューで日本語が出力されません。あらら。
調査と修正の流れ
メニュー末尾の「プレゼンテーションのカバー画像」のように翻訳されているものもあるので、まったく翻訳がだめなわけではありません。この「プレゼンテーションのカバー画像」が翻訳されれている箇所は register.php にありますので、JavaSript に正しく翻訳ファイルがロードされていないようです。
参考文献、特に Pascal の記事から以下のような行を追加すれば良さそうです。
1 2 3 4 5 6 7 |
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 ファイル名のハッシュを取得します。
1 2 3 4 5 6 |
~/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 にコードを挿入します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 を送っています。