Extender
ExtenderTraducir widgets de Elementor adicionales

Traducir widgets de Elementor adicionales

Gato AI Translations for Polylang puede traducir páginas de Elementor basadas en widgets.

El plugin trae soporte para todos los widgets de Elementor y Elementor PRO. Para widgets personalizados o de terceros, puedes ampliar el soporte de traducción mediante hooks de PHP.

Traducir cadenas

Para declarar propiedades traducibles adicionales en un widget de Elementor, utiliza el filtro gatompl:elementor_widget_type_translatable_properties.

El filtro recibe un mapa [widgetName => properties]. La entrada properties puede contener:

  • Nombres de controles planos: p. ej., 'author_name'
  • Rutas con puntos: p. ej., 'author_avatar.alt' (que se traduce como settings.author_avatar.alt)
  • Campos de repetidor: declarados como un subarray [repeaterName => [...subFields]]

Estos se mezclan libremente, y el anidamiento puede llegar a cualquier profundidad.

Por ejemplo, este hook hace que:

  • El control plano author_name y la ruta author_avatar.alt sean traducibles en el widget blockquote
  • El subcampo name del repetidor sea traducible dentro del repetidor slides del 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;
    }
);

El mismo filtro funciona tanto para controles simples como para campos de repetidor: no hay un hook independiente para los repetidores.

Traducir referencias a entidades

Una propiedad puede almacenar un ID de entidad (una entrada, término de taxonomía, elemento multimedia o menú) que debe reasignarse a la entidad correspondiente en el idioma de destino en el momento de la traducción. Utiliza el filtro adecuado:

Tipo de referenciaFiltro
Custom posts y multimediagatompl:elementor_widget_type_custompost_and_media_reference_properties
Términos de taxonomíagatompl:elementor_widget_type_taxonomy_term_reference_properties
Menús por IDgatompl:elementor_widget_type_menu_reference_by_id_properties
Menús por sluggatompl:elementor_widget_type_menu_reference_by_slug_properties

La forma es la misma que la del filtro de propiedades traducibles: nombres planos, rutas con puntos o subarrays para repetidores.

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

Descubrir nombres de widgets y de propiedades

Ejecuta la consulta GraphQL Translate custom posts e inspecciona el campo elementorData en la respuesta. Cada widget expone su widgetType y su árbol de settings: ahí encontrarás los nombres de propiedad (incluidas las rutas anidadas con puntos y los campos de repetidor) que necesitas pasar a los hooks anteriores.

Inspeccionando elementorData en la respuesta GraphQL de Translate custom posts
Inspeccionando elementorData en la respuesta GraphQL de Translate custom posts

Consulta la guía Obtener datos del page builder a traducir para saber cómo ejecutar esa consulta.

Dónde encontrar ejemplos

Las propias integraciones del plugin son una referencia útil. Explora este fichero dentro del plugin que has instalado:

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