wp_set_script_translations无法加载翻译文件 自定义区块翻译失效如何解决
问题排查&解决方法
- 翻译绑定的脚本句柄不匹配
你调用wp_set_script_translations时传入的脚本句柄是gutrs-slider-script,但实际你注册的脚本句柄是gutrs-slider-front-script,二者不一致导致翻译无法绑定到对应脚本。 - 缺失编辑器端脚本的注册与翻译绑定
你当前仅注册了前端渲染用的脚本,区块编辑器后台加载的编辑器脚本未注册,也没有绑定翻译规则,后台插入区块时自然不会触发翻译效果。注册区块时需要通过editor_script参数指定编辑器端使用的脚本。 - 翻译文件命名不符合规范
WordPress 古腾堡区块的JS翻译文件需遵循{文本域}-{本地化语言标识}-{脚本句柄}.json的命名规则,比如你的文本域是gutrs-slider、简体中文locale为zh_CN、脚本句柄为gutrs-slider-editor-script,则翻译文件名应为gutrs-slider-zh_CN-gutrs-slider-editor-script.json,且需放在你指定的languages目录下。 - 未加载插件基础翻译域
需要先调用load_plugin_textdomain加载插件的全局翻译域,作为JS翻译的基础依赖。
修正后代码示例
function create_block_gutrs_slider_block_init() { // 加载插件翻译域 load_plugin_textdomain( 'gutrs-slider', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); $asset_file = include( plugin_dir_path( __FILE__ ) . 'build/index.asset.php'); // 注册前端脚本 wp_register_script( 'gutrs-slider-front-script', plugins_url( 'build/gutrsfrontscript.js', __FILE__ ), ['wp-i18n'], $asset_file['version'] ); // 注册编辑器端脚本(替换为你实际的编辑器脚本路径) wp_register_script( 'gutrs-slider-editor-script', plugins_url( 'build/index.js', __FILE__ ), $asset_file['dependencies'], $asset_file['version'] ); // 分别给前端、编辑器脚本绑定翻译 if (function_exists('wp_set_script_translations')) { wp_set_script_translations( 'gutrs-slider-front-script', 'gutrs-slider', plugin_dir_path( __FILE__ ) . 'languages' ); wp_set_script_translations( 'gutrs-slider-editor-script', 'gutrs-slider', plugin_dir_path( __FILE__ ) . 'languages' ); } register_block_type( __DIR__ ,array( 'script' => 'gutrs-slider-front-script', 'editor_script' => 'gutrs-slider-editor-script' // 新增编辑器脚本参数 )); } add_action( 'init', 'create_block_gutrs_slider_block_init' );
内容的提问来源于stack exchange,提问作者Ron
相关产品推荐
相关产品推荐

