Gutenberg
El soporte para Gutenberg está integrado, para traducir todos los bloques de tu contenido de Gutenberg.
Gato AI Translations for Polylang extrae las cadenas de los bloques del contenido de Gutenberg y traduce únicamente esas cadenas, garantizando que el contenido no se rompa de ningún modo.
De forma nativa, los siguientes tipos de bloques son compatibles automáticamente:
- Bloques del núcleo de WordPress
- Bloques solo en PHP
- Bloques de Advanced Custom Fields (ACF)
- Todos los bloques que incluyen un
wpml-config.xml - Bloques de terceros:
- Kadence Blocks
- Greenshift blocks
- GenerateBlocks blocks
- Yoast SEO blocks
Bloques del núcleo de WordPress compatibles
Los siguientes bloques del núcleo de WordPress son compatibles de forma nativa:
core/audiocore/block(es decir, patrones sincronizados)core/buttoncore/covercore/embedcore/headingcore/htmlcore/imagecore/listcore/list-itemcore/media-textcore/paragraphcore/preformattedcore/pullquotecore/quotecore/tablecore/versecore/video
Bloques solo en PHP
A partir de WordPress 7.0, los bloques pueden registrarse como solo en PHP (sin paquete de JavaScript). Gato AI Translations for Polylang los trata como cualquier otro bloque: son compatibles de forma nativa, sin configuración adicional.
Todos los atributos de tipo string (que no sean enumeraciones u otros tipos escalares) se registran automáticamente para su traducción.
Si un campo específico no debe traducirse, puedes excluirlo mediante el hook gatompl:gutenberg_block_type_translatable_attribute_regexes estableciéndolo en false (o aplicándole unset):
add_filter(
'gatompl:gutenberg_block_type_translatable_attribute_regexes',
static function (array $regexes): array {
// Either of these works:
unset($regexes['my-plugin/alert']['header']);
$regexes['my-plugin/alert']['implications'] = false;
return $regexes;
}
);Bloques de Advanced Custom Fields (ACF)
Los bloques registrados a través de Advanced Custom Fields también son compatibles de forma nativa. Hay 3 formas de registrar un campo de ACF para su traducción:
1. Automáticamente para todos los campos (vía la página de Settings)
Ve a la página de Settings, en Plugin Integration Configuration > Advanced Custom Fields, y habilita la opción Translate ACF blocks automatically?:

Cuando está habilitada, cada campo de tipo string traducible en cada bloque de ACF se envía a traducir. Si un campo específico no debe traducirse, exclúyelo mediante el hook estándar de ACF acf/load_field, estableciendo gatompl en 'skip':
// Disable translation for a single field by key
add_filter(
'acf/load_field/key=product_card_sku',
static function (array|false $field): array|false {
if (is_array($field)) {
$field['gatompl'] = 'skip';
}
return $field;
}
);
// Or disable several fields at once
add_filter(
'acf/load_field',
static function (array|false $field): array|false {
if (
is_array($field) && in_array($field['key'] ?? null, [
'product_card_feature_title',
'product_card_specs_dimensions',
'product_card_section_text_heading',
])
) {
$field['gatompl'] = 'skip';
}
return $field;
}
);2. Campo por campo (vía la configuración del grupo de campos de ACF)
Al definir tu grupo de campos con acf_add_local_field_group(), añade 'gatompl' => 'translate' directamente a cada campo que quieras traducir:
acf_add_local_field_group([
'key' => 'group_testimonial',
'title' => 'Testimonial Block',
'fields' => [
[
'key' => 'testimonial_text',
'label' => 'Testimonial',
'name' => 'testimonial',
'type' => 'textarea',
'gatompl' => 'translate',
],
[
'key' => 'testimonial_role',
'label' => 'Role',
'name' => 'role',
'type' => 'text',
// Option-array form — equivalent to `'gatompl' => 'translate'`,
// but leaves room for future plugin-side options on the same field
'gatompl' => [
'translation_configuration' => 'translate',
],
],
[
'key' => 'testimonial_featured_post',
'label' => 'Featured post',
'name' => 'featured_post',
'type' => 'post_object',
'post_type' => ['post'],
'return_format' => 'object',
'gatompl' => 'translate', // The referenced post ID is remapped to the target-language post
],
],
'location' => [
[
[
'param' => 'block',
'operator' => '==',
'value' => 'acf/testimonial',
],
],
],
]);Esto funciona también para los campos post_object, relationship, taxonomy, image, gallery y repeater: el plugin seguirá las rutas anidadas de repeaters a cualquier profundidad, y volverá a mapear las referencias a entidades (entradas, términos, medios) a sus equivalentes en el idioma de destino.
3. Campo por campo (vía el hook acf/load_field)
Si no puedes editar el registro del grupo de campos, incluye los campos mediante los mismos hooks de ACF utilizados para excluirlos:
add_filter(
'acf/load_field/key=testimonial_text',
static function (array|false $field): array|false {
if (is_array($field)) {
$field['gatompl'] = 'translate';
}
return $field;
}
);Registrar un bloque de ACF
Para referencia, aquí tienes un registro mínimo de bloque que se complementa con el grupo de campos anterior (usando acf_register_block_type de ACF PRO):
add_action('acf/init', function (): void {
if (!function_exists('acf_register_block_type')) {
return;
}
acf_register_block_type([
'name' => 'testimonial',
'title' => 'Testimonial',
'description' => 'A testimonial block.',
'render_template' => plugin_dir_path(__FILE__) . 'acf-blocks/testimonial/template.php',
'category' => 'widgets',
'icon' => 'format-quote',
'keywords' => ['testimonial', 'quote'],
'mode' => 'preview',
]);
});WPML Config
Gato AI Translations for Polylang lee automáticamente el wpml-config.xml incluido en cualquier plugin y lo utiliza para determinar qué atributos de bloque son traducibles.
Avisos de Attempt Recovery
Algunos bloques pueden mostrar un aviso Attempt Recovery en el editor tras la traducción:

Consulta ¿Por qué algunos bloques necesitan "Attempt Recovery" tras la traducción? para más detalles.
Desactivar la traducción de una propiedad específica
Para desactivar la traducción de una propiedad específica (o de todas las propiedades de un bloque) definida mediante wpml-config.xml, devuelve false desde el filtro gatompl:use_wpml_config_for_block_type:
add_filter(
'gatompl:use_wpml_config_for_block_type',
static function (bool $enabled, string $blockTypeName, string $ruleKind): bool {
// Stop reading wpml-config.xml rules for greenshift-blocks/button
if ($blockTypeName === 'greenshift-blocks/button') {
return false;
}
return $enabled;
},
10,
3
);Kadence Blocks
Todos los bloques del plugin Kadence Blocks son compatibles automáticamente (a través de su wpml-config.xml).
Los siguientes bloques pueden renderizarse correctamente en el frontend tras la traducción, pero mostrar un aviso Attempt Recovery al abrirse en el editor:
kadence/single-iconkadence/tabskadence/form
Hacer clic en Attempt Recovery reconstruye el HTML del bloque, pero es opcional — la salida del frontend ya es correcta (leer detalles).
Greenshift Blocks
Todos los bloques de Greenshift son compatibles automáticamente (a través de su wpml-config.xml).
Los bloques traducidos de Greenshift generalmente requieren hacer clic en Attempt Recovery en el editor sobre cada bloque para regenerar su HTML (leer detalles).
GenerateBlocks
Bloques de GenerateBlocks y GenerateBlocks PRO:
- Container
- Grid
- Text
- Button
- Headline
- Image
- Query
- Shape
- Site Header
- Accordion
- Tabs
- Navigation
Yoast SEO
Estos bloques solo son compatibles para cadenas simples. Las cadenas que contienen etiquetas HTML (incluyendo enlaces, imágenes, estilos HTML como strong o italic, saltos de línea, etc.) no son compatibles.
Lee la guía ¿Se pueden traducir todos los bloques de Gutenberg? para más información.
Bloques de Yoast SEO:
- Yoast How-to
- Yoast FAQ
Soporte para bloques adicionales
Puedes traducir bloques personalizados de tu aplicación, o bloques de plugins de terceros.
Consulta la guía Traducir bloques de Gutenberg adicionales para más información.
Traducción de patrones sincronizados
La página predeterminada Apariencia > Patrones de WordPress no permite traducir patrones sincronizados (también conocidos como bloques reutilizables), porque:
- Polylang no añade el widget para seleccionar el idioma (solo Polylang PRO lo hace)
- No ofrece Bulk Actions, por lo que no es posible traducir los patrones existentes
Por este motivo, Gato AI Translations for Polylang ofrece la página estándar Patterns CPT, bajo el elemento de menú Patterns (Gutenberg), habilitando estas funcionalidades.

Puedes traducir patrones desde esta pantalla (de forma similar a cualquier otro CPT):
- Traducir automáticamente los patrones nuevos al publicarse (desde la pantalla Add Pattern)
- Traducir manualmente los patrones existentes usando Bulk Actions

La pantalla también mostrará los patrones traducidos:

Desactivar la página personalizada de Patterns
Puedes desactivar la visualización de la página Patterns (Gutenberg) en el menú.
Para hacerlo, ve a Settings, en Plugin Integration Configuration > Gutenberg, y desmarca la casilla Enable the Custom Patterns page.
