Étendre
ÉtendreTraduire des widgets Elementor supplémentaires

Traduire des widgets Elementor supplémentaires

Gato AI Translations for Polylang peut traduire les pages Elementor basées sur des widgets.

Le plugin est livré avec une prise en charge de tous les widgets Elementor et Elementor PRO. Pour les widgets personnalisés ou tiers, vous pouvez étendre la prise en charge de la traduction via des hooks PHP.

Traduire des chaînes

Pour déclarer des propriétés traduisibles supplémentaires sur un widget Elementor, utilisez le filtre gatompl:elementor_widget_type_translatable_properties.

Le filtre reçoit une map [widgetName => properties]. L'entrée properties peut contenir :

  • Noms de contrôles plats — par ex. 'author_name'
  • Chemins avec points — par ex. 'author_avatar.alt' (correspond à settings.author_avatar.alt)
  • Champs de répéteur — déclarés sous la forme d'un sous-tableau [repeaterName => [...subFields]]

Ces éléments se mélangent librement, et l'imbrication peut aller à n'importe quelle profondeur.

Par exemple, ce hook rend :

  • Le contrôle plat author_name et le chemin author_avatar.alt traduisibles sur le widget blockquote
  • Le sous-champ name du répéteur traduisible dans le répéteur slides du widget reviews
add_filter(
    'gatompl:elementor_widget_type_translatable_properties',
    static function (array $translatableProperties): array {
        $translatableProperties['blockquote'][] = 'author_name';
        $translatableProperties['blockquote'][] = 'author_avatar.alt';
        $translatableProperties['reviews']['slides'][] = 'name';
        return $translatableProperties;
    }
);

Le même filtre fonctionne à la fois pour les contrôles simples et les champs de répéteur — il n'y a pas de hook séparé pour les répéteurs.

Traduire les références d'entités

Une propriété peut stocker un ID d'entité (un article, un terme de taxonomie, un élément média ou un menu) qui doit être remappé vers l'entité correspondante dans la langue cible au moment de la traduction. Utilisez le filtre correspondant :

Type de référenceFiltre
Custom posts et médiasgatompl:elementor_widget_type_custompost_and_media_reference_properties
Termes de taxonomiegatompl:elementor_widget_type_taxonomy_term_reference_properties
Menus par IDgatompl:elementor_widget_type_menu_reference_by_id_properties
Menus par sluggatompl:elementor_widget_type_menu_reference_by_slug_properties

La forme est la même que celle du filtre des propriétés traduisibles — noms plats, chemins avec points ou sous-tableaux pour les répéteurs.

// Custom post / media reference
add_filter(
    'gatompl:elementor_widget_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:elementor_widget_type_taxonomy_term_reference_properties',
    static function (array $properties): array {
        $properties['related-category'][] = 'category_id';
        return $properties;
    }
);
 
// Menu reference by ID
add_filter(
    'gatompl:elementor_widget_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:elementor_widget_type_menu_reference_by_slug_properties',
    static function (array $properties): array {
        $properties['menu-picker'][] = 'menu_slug';
        return $properties;
    }
);

Découvrir les noms de widgets et de propriétés

Exécutez la query GraphQL Translate custom posts et inspectez le champ elementorData dans la réponse. Chaque widget expose son widgetType et son arbre de settings — c'est là que vous trouverez les noms de propriétés (y compris les chemins imbriqués avec points et les champs de répéteur) que vous devez passer aux hooks ci-dessus.

Inspection d'elementorData dans la réponse GraphQL de Translate custom posts
Inspection d'elementorData dans la réponse GraphQL de Translate custom posts

Consultez le guide Obtenir les données du page builder à traduire pour savoir comment exécuter cette query.

Où trouver des exemples

Les propres intégrations du plugin sont une référence utile. Explorez ce fichier dans le plugin que vous avez installé :

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