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_nameet le cheminauthor_avatar.alttraduisibles sur le widgetblockquote - Le sous-champ
namedu répéteur traduisible dans le répéteurslidesdu widgetreviews
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érence | Filtre |
|---|---|
| Custom posts et médias | gatompl:elementor_widget_type_custompost_and_media_reference_properties |
| Termes de taxonomie | gatompl:elementor_widget_type_taxonomy_term_reference_properties |
| Menus par ID | gatompl:elementor_widget_type_menu_reference_by_id_properties |
| Menus par slug | gatompl: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.

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