扩展
扩展翻译额外的 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.textbreadcrumbs 元素上可翻译
  • 使 team-members 元素的 items 重复器内的重复器子字段 title 可翻译
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
);

同一过滤器同时适用于简单控件和重复器字段——没有专门针对重复器的单独钩子。

翻译实体引用

属性可以存储实体 ID(文章、分类术语、媒体项或菜单),在翻译时需要将其重新映射到目标语言的对应实体。请使用对应的过滤器:

引用类型过滤器
自定义文章和媒体gatompl:bricks_element_type_custompost_and_media_reference_properties
分类术语gatompl:bricks_element_type_taxonomy_term_reference_properties
按 ID 引用菜单gatompl:bricks_element_type_menu_reference_by_id_properties
按别名引用菜单gatompl: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;
    }
);

如何查找元素名称和属性名称

运行 Translate custom posts GraphQL query,并检查响应中的 bricksData 字段。每个元素都会公开其 namesettings 树——在那里您可以找到需要传递给上述钩子的属性名称(包括嵌套点路径和重复器字段)。

在 Translate custom posts GraphQL 响应中检查 bricksData
在 Translate custom posts GraphQL 响应中检查 bricksData

有关如何运行该 query 的说明,请参阅获取页面构建器数据以进行翻译指南。

在哪里查找示例

插件自身的集成是有用的参考。请查看您安装的插件中的以下文件:

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