我正在为古腾堡街区设置本地化。使用wp cli命令构建基本块后npx @wordpress/create-block
, 我需要设置本地化。我已经使用wp-cli创建了pot文件并进行了本地化,生成了所需的所有json文件。
现在我如何在插件中设置它?
我正在使用块中的元数据注册块。json,我在这里正确设置了textdomain。
我使用这段代码在PHP上注册块并加载textdomain。
function create_block_gutenpride_block_init() {
load_plugin_textdomain( \'gutenpride\', false, dirname( plugin_basename( __FILE__ ) ) . \'/languages/\' );
register_block_type( __DIR__ );
}
add_action( \'init\', \'create_block_gutenpride_block_init\' );
最合适的回答,由SO网友:Sally CJ 整理而成
Summary: 也许像我一样,您只需要重命名、重新定位和/或手动加载脚本/JSON翻译文件
所以我用npx @wordpress/create-block gutenpride
命令,然后我创建了翻译文件(POT、PO、MO和JSON/JED文件),我的插件结构是这样的(但有些文件src/*
未包括在内):
gutenpride/
build/
index.asset.php
index.css
index.js
style-index.css
languages/
gutenpride-de_DE-1b3034803df8a21550db0d04471ea571.json
gutenpride-de_DE.mo
gutenpride-de_DE.po
gutenpride.pot
block.json
gutenpride.php
1b3034803df8a21550db0d04471ea571
是到的相对路径的MD5哈希built 编辑器脚本位于build/index.js
, i、 e.在PHP中,md5( \'build/index.js\' )
.在我的区块中metadata file (block.json
), 我有这些台词:
"name": "create-block/gutenpride",
...
"textdomain": "gutenpride",
"editorScript": "file:./build/index.js",
调试后,我发现如果textdomain
不为空(即指定了文本域),则WordPress将在此处自动运行最后一步:https://developer.wordpress.org/block-editor/how-to-guides/internationalization/#how-to-use-i18n-in-javascript, 就我而言,WordPress打电话给我wp_set_script_translations( \'create-block-gutenpride-editor-script\', \'gutenpride\' )
— 看见register_block_script_handle()
, 但脚本句柄基本上是<block name>-editor-script
(无任何斜线(/
) ).因此,自动加载脚本翻译很酷,但我的JSON文件放在languages
在我的插件文件夹中,因此我不得不像这样手动重新加载翻译,我调用了after 这个register_block_type( __DIR__ )
:
// ** first param = script handle; second param = text domain
wp_set_script_translations( \'create-block-gutenpride-editor-script\', \'gutenpride\',
plugin_dir_path( __FILE__ ) . \'/languages/\' ); // ** use a full absolute path
或者,将JSON/JED文件移动/复制到wp-content/languages/plugins
文件夹,则无需手动加载脚本翻译。=)(例如wp-content/languages/plugins/gutenpride-de_DE-1b3034803df8a21550db0d04471ea571.json
)此外,我还删除了./
在编辑器脚本路径中,即我使用"editorScript": "file:build/index.js"
相反,否则WordPress将加载错误的文件,因为MD5哈希将dfbff627e6c248bcb3b61d7d06da9ca9
(即。md5( \'./build/index.js\' )
) 而不是1b3034803df8a21550db0d04471ea571
(这是什么wp i18n make-json
和插件,如Loco Translate 将使用)。
或者如果您不想更改editorScript
值,则需要在JSON文件名中编辑MD5哈希。。