はじめに
現在、自作ブロックの日本語化を、「ブロックエディターハンドブック/開発ガイド/国際化」に準じて行っていますが、現在の、block.json でスクリプトをロードする方法には適していないので、ここに捕捉事項として記す事にします。
ハンドル名の指定
上記でのハンドル名の指定方法は、以下の様になっています。この方法では、wp_register_script で、ハンドル名 myguten-script を指定し、register_block_type の、editor_script で、myguten-script を再度指定しています。
<?php
/**
* Plugin Name: Simple Block
* Text Domain: myguten
*/
function myguten_simple_block_init() {
wp_register_script(
'myguten-script',
plugins_url( 'block.js', __FILE__ ),
array( 'wp-blocks', 'wp-element', 'wp-i18n', 'wp-block-editor' )
);
register_block_type( 'myguten/simple-block', array(
'api_version' => 2,
'editor_script' => 'myguten-script',
) );
}
add_action( 'init', 'myguten_simple_block_init' );
その後に、php で、wp_set_script_translations の第一引数に registrer_block_type で登録したハンドル名 myguten-script を指定する方式です。
<?php
function myguten_set_script_translations() {
wp_set_script_translations( 'myguten-script', 'myguten' );
}
add_action( 'init', 'myguten_set_script_translations' );
上記のやり方を、現在の block.json で読み込む方式に置き換えると以下の様になります。
<?php
/**
* Plugin Name: Simple Block
* Text Domain: myguten
*/
function myguten_simple_block_init() {
register_block_type(
__DIR__ . '/block/build',
);
}
add_action( 'init', 'myguten_simple_block_init' );
block.json を置いたディレクトリを検索してそれを読み込むという形です。ここでは、ハンドル名は指定していません。block.json の方を見てみると、editorScript の項目がそれらしいのですが、スクリプトのハンドルという言葉はあるのですが、ファイルへのパスを指定するのが通常の様です。
register_block_type では、ハンドル名を渡さずに、WordPress の php の関数 generate_block_asset_handle で第1引数にブロック名、第2引数に editorScript を渡したらハンドル名を取得し国際化が上手くいきましたので、以下に示します。
function myguten_set_script_translations() {
$script_handle = generate_block_asset_handle( 'myguten/simple-block', 'editorScript' );
wp_set_script_translations( $script_handle, 'myguten' );
}
add_action( 'init', 'myguten_set_script_translations' );
block.json の日本語化
ついでにわかりにくい、block.json の日本語化について以下に記します。上記の、register_block_type に、配列で翻訳対象を列記します。keywords は複数あるので更なる配列にします。
<?php
/**
* Plugin Name: Simple Block
* Text Domain: myguten
*/
function myguten_simple_block_init() {
register_block_type(
__DIR__ . '/block/build',
array(
'title' => _x( 'Simple Block', 'block title', 'myguten' ),
'description' => _x( 'Example static block scaffolded with Create Block tool.', 'block description', 'myguten' ),
'keywords' => array(
_x( 'simple', 'block keyword', 'myguten' ),
_x( 'static', 'block keyword', 'myguten' ),
_x( 'tool', 'block keyword', 'myguten' ),
),
)
);
}
add_action( 'init', 'myguten_simple_block_init' );