Расширение
РасширениеПеревод дополнительных элементов Bricks

Перевод дополнительных элементов Bricks

Gato AI Translations for Polylang может переводить страницы и шаблоны Bricks, основанные на элементах.

Плагин поставляется с поддержкой всех элементов, предоставляемых Bricks. Для пользовательских или сторонних элементов Bricks вы можете расширить поддержку перевода с помощью PHP-хуков.

Перевод строк

Чтобы объявить дополнительные переводимые свойства для элемента Bricks, используйте фильтр gatompl:bricks_element_type_translatable_properties.

Фильтр получает карту [elementName => properties]. Запись properties может содержать:

  • Плоские имена элементов управления — например, 'separatorText'
  • Пути с точками — например, 'home.text' (соответствует settings.home.text)
  • Поля повторителя — объявляются как подмассив [repeaterName => [...subFields]]

Их можно свободно комбинировать, а вложенность может быть любой глубины.

Например, этот хук делает:

  • Плоский элемент управления separatorText и путь с точками home.text переводимыми в элементе breadcrumbs
  • Подполе title повторителя переводимым внутри повторителя items элемента team-members
add_filter(
    'gatompl:bricks_element_type_translatable_properties',
    static function (array $translatableProperties): array {
        $translatableProperties['breadcrumbs'][] = 'separatorText';
        $translatableProperties['breadcrumbs'][] = 'home.text';
        $translatableProperties['team-members']['items'][] = 'title';
        return $translatableProperties;
    },
    10,
    1
);

Один и тот же фильтр работает как для простых элементов управления, так и для полей повторителя — отдельного хука для повторителей не существует.

Перевод ссылок на сущности

Свойство может хранить идентификатор сущности (запись, термин таксономии, медиафайл или меню), который должен быть переназначен на соответствующую сущность целевого языка во время перевода. Используйте соответствующий фильтр:

Тип ссылкиФильтр
Custom posts и медиафайлыgatompl:bricks_element_type_custompost_and_media_reference_properties
Термины таксономииgatompl:bricks_element_type_taxonomy_term_reference_properties
Меню по IDgatompl:bricks_element_type_menu_reference_by_id_properties
Меню по sluggatompl:bricks_element_type_menu_reference_by_slug_properties

Структура такая же, как у фильтра переводимых свойств — плоские имена, пути с точками или подмассивы для повторителей.

// Custom post / media reference
add_filter(
    'gatompl:bricks_element_type_custompost_and_media_reference_properties',
    static function (array $properties): array {
        $properties['featured-post'][] = 'post_id';
        $properties['gallery']['items'][] = 'image_id';
        return $properties;
    }
);
 
// Taxonomy term reference
add_filter(
    'gatompl:bricks_element_type_taxonomy_term_reference_properties',
    static function (array $properties): array {
        $properties['related-category'][] = 'category_id';
        return $properties;
    }
);
 
// Menu reference by ID
add_filter(
    'gatompl:bricks_element_type_menu_reference_by_id_properties',
    static function (array $properties): array {
        $properties['menu-picker'][] = 'menu_id';
        return $properties;
    }
);
 
// Menu reference by slug
add_filter(
    'gatompl:bricks_element_type_menu_reference_by_slug_properties',
    static function (array $properties): array {
        $properties['menu-picker'][] = 'menu_slug';
        return $properties;
    }
);

Поиск имён элементов и свойств

Выполните GraphQL-запрос Translate custom posts и проверьте поле bricksData в ответе. Каждый элемент раскрывает своё name и дерево settings — именно там вы найдёте имена свойств (включая вложенные пути с точками и поля повторителя), которые нужно передать в вышеуказанные хуки.

Проверка bricksData в ответе GraphQL запроса Translate custom posts
Проверка bricksData в ответе GraphQL запроса Translate custom posts

Смотрите руководство Получение данных конструктора страниц для перевода, чтобы узнать, как выполнить этот запрос.

Где найти примеры

Собственные интеграции плагина являются полезным справочником. Изучите этот файл внутри установленного плагина:

  • wp-content/plugins/gato-ai-translations-for-polylang/src/ConditionalOnContext/LicenseIsActive/ConditionalOnModule/Bricks/Constants/ElementTypes.php