การขยาย
การขยายการแปล Bricks elements เพิ่มเติม

การแปล Bricks elements เพิ่มเติม

Gato AI Translations for Polylang สามารถแปลหน้าและเทมเพลต Bricks แบบ element-based ได้

ปลั๊กอินมาพร้อมกับการรองรับ elements ทั้งหมดที่ Bricks มีให้ สำหรับ Bricks elements แบบกำหนดเองหรือจากบุคคลที่สาม คุณสามารถขยายการรองรับการแปลผ่าน PHP hooks ได้

การแปล strings

หากต้องการประกาศ properties ที่แปลได้เพิ่มเติมบน Bricks element ให้ใช้ filter gatompl:bricks_element_type_translatable_properties

filter จะรับ map แบบ [elementName => properties] โดย entry ของ properties สามารถมี:

  • ชื่อ control แบบ flat — เช่น 'separatorText'
  • Dot-paths — เช่น 'home.text' (แปลงเป็น settings.home.text)
  • Repeater fields — ประกาศเป็น sub-array [repeaterName => [...subFields]]

สิ่งเหล่านี้สามารถผสมกันได้อย่างอิสระ และการซ้อนกันสามารถทำได้ทุกระดับความลึก

ตัวอย่างเช่น hook นี้ทำให้:

  • flat control separatorText และ dot-path home.text แปลได้บน element breadcrumbs
  • repeater sub-field title แปลได้ภายใน repeater items ของ element 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
);

filter เดียวกันนี้ใช้ได้ทั้งกับ simple controls และ repeater fields — ไม่มี hook แยกต่างหากสำหรับ repeaters

การแปล entity references

property สามารถเก็บ entity ID (โพสต์ taxonomy term รายการสื่อ หรือเมนู) ที่ควร remap ไปยัง entity ในภาษาเป้าหมายที่สอดคล้องกันในเวลาแปล ใช้ filter ที่ตรงกัน:

ประเภทการอ้างอิงFilter
Custom posts และ mediagatompl:bricks_element_type_custompost_and_media_reference_properties
Taxonomy termsgatompl: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

รูปแบบเหมือนกับ translatable-properties filter — ชื่อแบบ flat, dot-paths หรือ sub-arrays สำหรับ repeaters

// 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;
    }
);

การค้นหาชื่อ element และชื่อ property

รัน GraphQL query Translate custom posts และตรวจสอบ field bricksData ในการตอบกลับ แต่ละ element จะแสดง name และ settings tree — นั่นคือที่ที่คุณจะพบชื่อ properties (รวมถึง dot-paths แบบซ้อนกันและ repeater fields) ที่ต้องส่งให้ hooks ข้างต้น

การตรวจสอบ bricksData ใน Translate custom posts GraphQL response
การตรวจสอบ bricksData ใน Translate custom posts GraphQL response

ดูคู่มือการดึงข้อมูล page builder เพื่อแปลสำหรับวิธีรัน query นั้น

แหล่งค้นหาตัวอย่าง

การรวมระบบของปลั๊กอินเองเป็นข้อมูลอ้างอิงที่มีประโยชน์ ดูไฟล์นี้ภายในปลั๊กอินที่คุณติดตั้ง:

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