Erweitern
ErweiternZusätzliche Bricks-Elemente übersetzen

Zusätzliche Bricks-Elemente übersetzen

Gato AI Translations for Polylang kann elementbasierte Bricks-Seiten und -Vorlagen übersetzen.

Das Plugin enthält Unterstützung für alle von Bricks bereitgestellten Elemente. Für benutzerdefinierte oder Drittanbieter-Bricks-Elemente kannst du die Übersetzungsunterstützung über PHP-Hooks erweitern.

Strings übersetzen

Um zusätzliche übersetzbare Eigenschaften für ein Bricks-Element zu deklarieren, verwende den Filter gatompl:bricks_element_type_translatable_properties.

Der Filter erhält eine [elementName => properties]-Map. Der Eintrag properties kann enthalten:

  • Einfache Control-Namen — z. B. 'separatorText'
  • Dot-Paths — z. B. 'home.text' (entspricht settings.home.text)
  • Repeater-Felder — als Unter-Array deklariert [repeaterName => [...subFields]]

Diese lassen sich frei kombinieren, und die Verschachtelung kann beliebig tief gehen.

Zum Beispiel macht dieser Hook:

  • Das einfache Control separatorText und den Dot-Path home.text auf dem Element breadcrumbs übersetzbar
  • Das Repeater-Unterfeld title innerhalb des Repeaters items des Elements team-members übersetzbar
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
);

Derselbe Filter funktioniert sowohl für einfache Controls als auch für Repeater-Felder — es gibt keinen separaten Hook für Repeater.

Entitätsreferenzen übersetzen

Eine Eigenschaft kann eine Entitäts-ID (ein Beitrag, ein Taxonomie-Begriff, ein Medienelement oder ein Menü) speichern, die zum Zeitpunkt der Übersetzung der entsprechenden Entität in der Zielsprache zugeordnet werden soll. Verwende den passenden Filter:

ReferenzartFilter
Custom Posts und Mediengatompl:bricks_element_type_custompost_and_media_reference_properties
Taxonomie-Begriffegatompl:bricks_element_type_taxonomy_term_reference_properties
Menüs per IDgatompl:bricks_element_type_menu_reference_by_id_properties
Menüs per Sluggatompl:bricks_element_type_menu_reference_by_slug_properties

Die Struktur ist dieselbe wie beim Filter für übersetzbare Eigenschaften — einfache Namen, Dot-Paths oder Unter-Arrays für Repeater.

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

Elementnamen und Eigenschaftsnamen herausfinden

Führe die GraphQL-Query Translate custom posts aus und untersuche das Feld bricksData in der Antwort. Jedes Element gibt seinen name und seinen settings-Baum preis — dort findest du die Eigenschaftsnamen (einschließlich verschachtelter Dot-Paths und Repeater-Felder), die du an die obigen Hooks übergeben musst.

Untersuchung von bricksData in der GraphQL-Antwort von Translate custom posts
Untersuchung von bricksData in der GraphQL-Antwort von Translate custom posts

Lies die Anleitung Seitenersteller-Daten zum Übersetzen abrufen, um zu erfahren, wie du diese Query ausführst.

Wo du Beispiele findest

Die eigenen Integrationen des Plugins sind eine nützliche Referenz. Schaue dir diese Datei im installierten Plugin an:

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