拡張
拡張追加の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クエリを実行し、レスポンスの bricksData フィールドを確認してください。各要素は namesettings ツリーを公開しています。そこに、上記のフックに渡す必要があるプロパティ名(ネストされたドットパスやリピーターフィールドを含む)が見つかります。

Translate custom posts GraphQLレスポンスでbricksDataを確認する
Translate custom posts GraphQLレスポンスでbricksDataを確認する

クエリの実行方法については、翻訳するページビルダーデータの取得ガイドをご参照ください。

使用例の参照先

プラグイン自体の統合は有用なリファレンスです。インストールしたプラグイン内の以下のファイルをご確認ください。

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