Con el lanzamiento de WordPress 6.7, se ha detectado un problema significativo relacionado con la traducción de temas que no están alojados en el repositorio oficial de WordPress.org. Este error provoca que los textos de los temas no sean traducidos correctamente al idioma configurado en el sitio, como el español. La raíz del problema parece estar vinculada a cómo WordPress maneja las traducciones y los dominios de texto en esta nueva versión.
Causa del Problema
En versiones recientes, WordPress ha realizado cambios en el manejo del registro de dominios de texto y la carga de archivos de traducción. Esto afecta especialmente a temas personalizados o de terceros, como Bricks Builder, que no se distribuyen desde el repositorio oficial y cuyos archivos de traducción pueden no cargarse correctamente por defecto.
Solución: Código para el Archivo functions.php
del Tema Hijo
Una solución efectiva para este problema consiste en incluir un código personalizado en el archivo functions.php
del tema hijo. Este código fuerza el registro y la carga del dominio de texto del tema y asegura que los archivos de traducción se utilicen correctamente. A continuación, se muestra el código de ejemplo, para el tema TRAVELER con idioma en Español y con explicaciones:
add_action(
'init',
function() {
global $l10n, $wp_textdomain_registry;
// Define el dominio del tema y el idioma actual.
$domain = 'traveler'; // Cambiar 'traveler' por el nombre del dominio de texto del tema.
$locale = get_locale();
// Registra el dominio de texto con la ruta de los archivos de traducción.
$wp_textdomain_registry->set( $domain, $locale, get_template_directory() . '/language' );
// Elimina el dominio de texto si ya está cargado.
if ( isset( $l10n[ $domain ] ) ) {
unset( $l10n[ $domain ] );
}
// Carga el dominio de texto desde la ruta especificada.
load_theme_textdomain( $domain, get_template_directory() . '/language' );
}
);
Personalización para Otros Temas
El código puede adaptarse a cualquier tema realizando los siguientes cambios:
- Variable
$domain
: Cambia'traveler'
por el nombre del dominio de texto del tema, que suele coincidir con el nombre del tema. - Ruta de Archivos de Traducción: Ajusta las rutas para que apunten a la carpeta donde se encuentran los archivos de traducción
.mo
y.po
. Por defecto, la carpeta es/language
dentro del directorio del tema.
Implementación
- Accede al archivo
functions.php
del tema hijo. - Copia y pega el código anterior, personalizándolo según las necesidades del tema.
- Guarda los cambios y limpia la caché del sitio si es necesario.
Ventajas de Esta Solución
- Compatible con cualquier tema, no solo con Traveler (Ejemplo del código).
- No requiere modificar directamente los archivos del núcleo de WordPress.
- Asegura que las traducciones funcionen incluso con actualizaciones futuras del tema o WordPress.
Conclusión
Aunque este problema puede ser frustrante para los desarrolladores y usuarios de WordPress 6.7, el uso del código propuesto ofrece una solución rápida y eficaz. Además, este enfoque es escalable y puede aplicarse a una amplia variedad de temas.
A fecha de hoy(16-11-2024), WordPress no ha confirmado oficialmente una solución específica para el problema de traducción en temas no alojados en WordPress.org introducido con la versión 6.7. Sin embargo, se han identificado problemas relacionados con la carga de traducciones en esta versión, como la activación temprana de funciones de localización.
Es probable que WordPress aborde este problema en una actualización futura, ya que los reportes están siendo discutidos en foros y plataformas como GitHub. Por el momento, los desarrolladores están aplicando soluciones temporales como la modificación del archivo
functions.php
del tema hijo para corregir la ruta y el dominio de las traducciones. (Fuente)
Te recomiendo seguir el blog oficial de desarrollo de WordPress y las notas de cada versión para obtener actualizaciones sobre posibles correcciones en versiones posteriores.