如何为古腾堡区块设置本地化?

时间:2021-09-01 作者:Francesco Tropicalista

我正在为古腾堡街区设置本地化。使用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\' );

1 个回复
最合适的回答,由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哈希。。

相关推荐

Plugin Localization

我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette