Как перевести название и описание блока Гутенберг?

Вопрос или проблема

Я занимаюсь локализацией пользовательского блока Gutenberg, предоставленного пользовательским плагином, который не будет опубликован на wordpress.org. Переведенные строки в области блока отображаются как ожидалось, единственные строки, которые не переведены, это название блока и его описание. Как я могу их перевести? Я знаю, что это возможно, потому что это работает для основных блоков.

Скриншот панели блока Gutenberg

Что я сделал

plugin.php

/**
 * Зарегистрировать пользовательские блоки
 */
add_action('init', function () {
    register_block_type(__DIR__ . '/build/my-custom-block'); // Новый способ, теперь без wp_register_script()
    load_plugin_textdomain('my-block-plugin', false, basename(__DIR__) . '/languages'); // Это вообще необходимо?
    $script_handle = generate_block_asset_handle('my-block-plugin/my-custom-block', 'editorScript'); // = "my-block-plugin-my-custom-block-editor-script"
    wp_set_script_translations($script_handle, 'my-block-plugin', __DIR__ . '/languages');
});

languages/de_DE.po

…

#: build/my-custom-block/block.json
msgctxt "block title"
msgid "My Custom Block"
msgstr "Mein individueller Block"

#: build/my-custom-block/block.json
msgctxt "block description"
msgid "This is the block description."
msgstr "Das ist die Block-Beschreibung."

Однако эти две строки не появляются в languages/my-block-plugin-de_DE-asdasdasdasdasdasd.json. Остальные строки там есть. Это правильно?

Вот команды, которые я использую для создания языковых файлов

  • .pot: $ wp i18n make-pot . languages/my-block-plugin.pot --exclude=node_modules,src
  • .mo: $ wp i18n make-mo languages/
  • .json: $ wp i18n make-json languages/ --no-purge

Любая помощь приветствуется!

Ответ или решение

Чтобы перевести имя и описание блока Gutenberg, важно следовать определенной процедуре локализации в WordPress. На основе вашей проблемы, давайте подробно рассмотрим процесс перевода и возможные ошибки.

Шаги по переводу имени и описания блока Gutenberg

1. Проверьте структуру файла block.json

В вашем блоке my-custom-block файл block.json должен содержать строки для имени и описания блока. Убедитесь, что эти строки заданы явно:

{
    "name": "my-block-plugin/my-custom-block",
    "title": "My Custom Block",
    "description": "This is the block description.",
    // другие параметры блока...
}

2. Используйте правильный переводческий контекст

Для перевода вам необходимо обеспечить правильный контекст перевода. Убедитесь, что в файле .po задается правильный контекст msgctxt, как вы показали:

#: build/my-custom-block/block.json
msgctxt "block title"
msgid "My Custom Block"
msgstr "Mein individueller Block"

#: build/my-custom-block/block.json
msgctxt "block description"
msgid "This is the block description."
msgstr "Das ist die Block-Beschreibung."

3. Проверьте процесс генерации и подключения переводческих файлов

Ваш процесс создания и подключения переводческих файлов должен быть выполнен корректно:

  • Для генерации .pot файла используйте:
    $ wp i18n make-pot . languages/my-block-plugin.pot --exclude=node_modules,src
  • Создайте .mo файлы с помощью:
    $ wp i18n make-mo languages/
  • А также создайте .json перевод:
    $ wp i18n make-json languages/ --no-purge

Проблема заключается в том, что строки имени и описания блока должны находиться в .json файлах. Убедитесь, что они корректно генерируются на этом этапе.

4. Проверьте загрузку текстового домена и переводов

Убедитесь, что функции load_plugin_textdomain и wp_set_script_translations настроены правильно в вашем plugin.php:

add_action('init', function () {
    register_block_type(__DIR__ . '/build/my-custom-block');
    load_plugin_textdomain('my-block-plugin', false, basename(__DIR__) . '/languages');

    $script_handle = generate_block_asset_handle('my-block-plugin/my-custom-block', 'editorScript');
    wp_set_script_translations($script_handle, 'my-block-plugin', __DIR__ . '/languages');
});

Возможные причины проблем

  • Некорректная генерация .json файла: Отсутствие переведенных строк в languages/my-block-plugin-de_DE.json может быть связано с неправильной генерацией файла. Проверьте команду wp i18n make-json.

  • Ошибки в block.json: Убедитесь, что имя и описание блока правильно прописаны и соответствуют переводимой строке.

Заключение

Перевод имен и описаний пользовательских блоков в Gutenberg требует четкого понимания и следования процессу локализации в WordPress. Обратите внимание на правильность генерации переводов и их подключение, что обеспечит корректное отображение локализованных строк в вашем блоке.

Оцените материал
Добавить комментарий

Капча загружается...