[Resuelto] la traducción de cadenas no funciona correctamente
Este hilo está resuelto. Aquí tienes una descripción del problema y la solución.
Problema: Si estás utilizando el plugin Super Store Finder y has seguido las instrucciones de traducción de cadenas con WPML, pero encuentras que las categorías de proyectos y algunos contenidos siguen apareciendo en español en la versión en inglés de tu sitio, a pesar de haber traducido todas las cadenas. Solución: Podemos ofrecerte un truco temporal que consiste en agregar un código específico al archivo funciones.php de tu tema. Este código te permitirá definir manualmente las traducciones para cada cadena de texto dentro de un array y aplicarlas según el idioma actual. Aquí te mostramos cómo hacerlo:
Este código debe personalizarse con las traducciones que necesitas. Sin embargo, es importante mencionar que esto es solo un truco y no una solución definitiva. El autor del plugin necesita modificar la estructura del complemento para asegurar que los códigos se ejecuten correctamente. Hemos contactado al autor del plugin y creado una errata que puedes consultar aquí: Errata de Super Store Finder. Si esta solución no resuelve tu problema o si la información proporcionada se ha vuelto obsoleta, te recomendamos abrir un nuevo ticket de soporte. También te sugerimos revisar los problemas conocidos en https://wpml.org/known-issues/, verificar la versión de la solución permanente y confirmar que tienes instaladas las últimas versiones de los temas y plugins.
Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.
Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.
Antecedentes del problema:
Buenos días, en la web de azvi utilizo un plugin de mapas para mostrar los proyectos. Este plugin es Super store finder. Y en este artículo enlace oculto explica como traducir cadenas en WPML para que el mapa se traduzca del español al inglés. Aunque he seguido todo al pie de la letra, he traducido desde wpml todas las cadenas, el resultado es que en la versión en inglés de la página, enlace oculto el mapa que aparece casi al final de dicha página, muestra algunos campos traducidos, pero las categorías de proyectos siguen viéndose en español, en vez de en inglés, al igual que cuando haces clik en algún proyecto, los títulos de los stores y su contenido siguen apareciendo en español.
Síntomas:
Solo algunas cadenas se han traducido al inglés, pero la mayoría, tanto categorías como contenidos de cada proyecto y su enlace siguen en español.
Preguntas:
¿Por qué algunas cadenas no se traducen al inglés a pesar de haber seguido todos los pasos?
¿Cómo puedo asegurarme de que todas las categorías y contenidos de los proyectos se traduzcan correctamente?
Buenos días, recibí esta mañana el acceso al entorno de pruebas, instale plugin de mapas, configuré el plugin e importe en el mapa los proyectos.
Actualmente en entorno de pruebas no carga la id de google maps, será porque hay que configurar en search console de google los permisos para este entorno de pruebas.
Pero no pasa nada, porque no es necesario para ver si se produce el problema de traducción de cadenas.
Creé una página de mapa y está asignada como página principal. Este es enlace a la página en inglés
enlace oculto
procedí a traducir cadenas desde wpml, y vuelve a dar el mismo error, algunas cadenas las traduce sin problemas, pero si despligegas proyects, traduje la categoría agua a water y sigue apareciendo agua, por lo que da el mismo problemas.
Aunque no cargue el mapa también estoy seguro que pasa lo mismo con los contenidos de cada proyecto, tampoco se traducen aunque se cambien cadenas.
Buenos días, sigo sin recibir contestación. Agradecería que me pudieseis contestar, ya que la web que da error en la traducción es la de un cliente de la agencia, y estamos a la espera de resolver esta incidencia.
He visto que cuando voy a WPML --> String translation y activo la opción " Look for strings while pages are rendered" me aparecen nuevas cadenas para traducir de las categorías pero estas solo aparecen traducidas cuando esa opción está activada.
Lo he pasado al equipo de compatibilidad para que investigue el problema.
He obtenido respuesta del equipo de compatibilidad.
Han creado un truco que se puede usar solo para mostrar las cadenas traducidas en el front-end.
Se puede agregar al archivo funciones.php:
function custom_translate_single_string($ctrsing, $domain, $name) {
// Define the array of projects and translations
$projects = [
'Alta velocidad' => [
'en' => 'High Speed',
'pt-br' => 'Alta Velocidade'
],
'Ferrocarril convencional' => [
'en' => 'Train',
'pt-br' => 'Trem Convencional'
],
'Carreteras' => [
'en' => 'Roads',
'pt-br' => 'Estradas'
],
'Aeropuertos' => [
'en' => 'Airports',
'pt-br' => 'Aeroportos'
],
'Obras urbanas' => [
'en' => 'Urban Works',
'pt-br' => 'Obras Urbanas'
],
'Edificación' => [
'en' => 'Building',
'pt-br' => 'Edificação'
],
'Parque de maquinaria' => [
'en' => 'Machinery Park',
'pt-br' => 'Parque de Máquinas'
],
'Mantenimiento' => [
'en' => 'Maintenance',
'pt-br' => 'Manutenção'
],
'Túneles' => [
'en' => 'Tunnels',
'pt-br' => 'Túneis'
],
'Transporte urbano' => [
'en' => 'Urban Transport',
'pt-br' => 'Transporte Urbano'
],
'Conservación carreteras' => [
'en' => 'Road Maintenance',
'pt-br' => 'Manutenção de Estradas'
],
'Medioambientales' => [
'en' => 'Environmental',
'pt-br' => 'Ambiental'
],
'Puentes y viaductos' => [
'en' => 'Bridges and Viaducts',
'pt-br' => 'Pontes e Viadutos'
],
'Agua' => [
'en' => 'Water',
'pt-br' => 'Água'
],
'Puertos ES' => [
'en' => 'Ports',
'pt-br' => 'Portos'
]
];
// Get the current language from WPML
$current_language = apply_filters('wpml_current_language', null);
// Check if $ctrsing exists in the projects array
if (isset($projects[$ctrsing])) {
// Check if the current language translation exists
if (isset($projects[$ctrsing][$current_language])) {
// Return the translated string for the current language
return $projects[$ctrsing][$current_language];
}
}
// Return the original string if no translation is found
return $ctrsing;
}
// Hook the function to wpml_translate_single_string and set it to run last
add_filter('wpml_translate_single_string', 'custom_translate_single_string', 100, 3);
Básicamente, deberás codificar las traducciones dentro de $projects, dentro de la clave del idioma correspondiente.
Se ha agreado el idioma pt-br allí solo como referencia, en caso de que tengás más idiomas.
Pero ten en cuenta que esto es solo un truco y no una solución.
Para solucionar el problema, el autor debe modificar la estructura del complemento para que los códigos se ejecuten en los hooks correctos, asegurando así el orden de ejecución correcto.