Soporte » Diseño – Temas y plantillas » No se traducen algunos textos de tema hijo

  • Estoy usando un tema hijo de la plantilla Ultra. Este tema tiene una carpeta «languages» con los archivos mo y po pero sólo de la traducción al alemán. Así que creé en mi tema hijo una carpeta «languages» para poner los archivos es_ES de la instalación oficial de WordPress en español pero no funcionó.

    Casi todo sale traducido salvo la pequeña cadena de las entradas como el «Leave a comment» que hay «2 comments».

    La plantilla padre tiene un archivo template-tags.php (dejo una captura) donde se nombran precisamente los que no se me traducen. Pensaba que era porque estaba escrito con doble guión bajo __( ) y no con _e( ) pero resulta que he buscado y parece que según el caso, en las funciones como es el caso se usa el doble guión bajo.

    En ese archivo template-tags es el único sitio donde se esmentan las palabras que me faltan por traducir, esta es la parte del código:

    if ( comments_open() && siteorigin_setting('blog_post_comment_count') ) {
    		echo '<span class="comments-link">';
      		comments_popup_link( __( 'Leave a comment', 'ultra' ), __( '1 Comment', 'ultra' ), __( '% Comments', 'ultra' ) );
      		echo '</span>';
    	}

    He encontado esto:

    $traduccion = __("Hola Mundo","miplugin");
    // Ahora podemos mostrar $traduccion con echo:
    echo $traduccion;
    // También podíamos haber hecho esto directamente con el mismo resultado:
    echo __("Hola Mundo","miplugin");
    // O usar la funcion _e
    _e("Hola Mundo","miplugin");

    Pero no se como aplicarlo en el código de la plantilla que he comentado antes.

    Espero puedan ayudarme. Gracias de antemano.

    Dejo unas capturas para ilustrar lo que comento:

    http://subefotos.com/ver/?f18fad5a713a524ca95944046532d207o.png

    http://subefotos.com/ver/?707ea65a257b61eaf3265bb21c9a2533o.png

    http://subefotos.com/ver/?f86da59396cb968ac7a9b494871a029bo.png

Viendo 9 respuestas - de la 1 a la 9 (de un total de 9)
  • Moderador Fernando Tellado

    (@fernandot)

    El autor del tema tiene su propio foro de soporte, lo ideal es que le preguntes a él directamente 😉

    Puro Theme

    Iniciador del debate kuro

    (@kuro)

    Muchas gracias Fernando. Ya le pregunté pero desconoce el problema.

    Saludos

    Hola, te recomiendo que utilices el plugin Loco Translate, que te permite gestionar, añadiendo, editando o eliminado palabras de los archivos mo y pot sin tener que descargarlos ni tocarlos, directamente con un buscador.

    https://es.wordpress.org/plugins/loco-translate/screenshots/

    Intenta localizarlo con el plugin el archivo que has creado, y si no crea un archivo de traducción para tu theme hijo, pero crealo con el plugin Loco Translate, que tiene una opción para crearlo.

    Supongo que funcionará, porque hasta ahora a mi me ha dado muy buenos resultados ese plugin, pero si no te funciona, puedes utilizar plugins que tranducen cadenas de texto directamente, hay varios, o incluso modificar directamente el código Leave a Coment en el archivo (ya se que estas 2 últimas no son soluciones muy limpias, pero si no quedase mas remedio…).

    Luisma
    MarkeKing

    Iniciador del debate kuro

    (@kuro)

    Muchas gracias Luisma. No conocía ese plugin y antes de ti me lo recomendó precisamente el creador del theme que estoy usando. Uso poedit y encontré esta otra solución para añadir entradas al archivo .po directamente con el editor. Pero sigue sin funcionar ni en la carpeta languages del tema padre ni en la del child. Es todo un misterio porque con el _nx se ve que está preparado para su traducción:

    printf( _nx( 'One Comment', '%1$s Comments', get_comments_number(), 'comments title', 'ultra' ),

    Y el .po muestra correctamente las entradas que me faltan en frontend, en especial % comentarios.

    Respecto traducirlo a pelo no me sirve pues la página es de 4 idiomas.

    ¿alguna idea?

    Muchas gracias

    Pues si que es raro, si te soy sincero, apenas he trabajado con .pot y .mo, porque era muy tedioso y desde que descubrí ese plugin, no he tenido ningún problema.

    Si ya estas desesperado y necesitas solucionarlo y no se te ocurre algo mejor, se me ocurre una solución no muy elegante, pero que te funcionará aunque tengas la web en 4 idiomas.

    Supongo que en cada uno de los idiomas la url será distinta en algun aspecto (me imagino que por ejemplo las urls dependiendo del idioma seran del tipo es.misitio/url o en.misitio/url o misitio/es/url o algo así.

    Entonces en el propio archivo del problema, examina la url y condiciona el texto, algo asi:

    EN LUGAR DE:
    comments_popup_link( __( ‘Leave a comment’, ‘ultra’ ), __( ‘1 Comment’, ‘ultra’ ), __( ‘% Comments’, ‘ultra’ ) );

    PONDRÍA:
    if( ! (strpos($_SERVER[‘REQUEST_URI’], ‘es.’) === FALSE)){
    comments_popup_link( __( ‘Comenta ahora’, ‘ultra’ ), __( ‘1 comentario’, ‘ultra’ ), __( ‘% comentarios’, ‘ultra’ ) );
    }elseif( ! (strpos($_SERVER[‘REQUEST_URI’], ‘it.’) === FALSE)){
    comments_popup_link( __( ‘en italiano’, ‘ultra’ ), __( ‘1 comments’, ‘ultra’ ), __( ‘% comments’, ‘ultra’ ) );
    }else( ! (strpos($_SERVER[‘REQUEST_URI’], ‘en.’) === FALSE)){
    comments_popup_link( __( ‘Leave a comment’, ‘ultra’ ), __( ‘1 comments’, ‘ultra’ ), __( ‘% comments’, ‘ultra’ ) );
    }

    Se que no es elegante, pero si no queda mas remedio.

    También hay otra opcion aparentemente, veo que comments_popup_link() es un funcion, por lo que si buscas el archivo en el que se define, y tienes la suerte de que el autor la definio con el condicional if defined, es posible que puedas definir tu mismo esa función como tu quieras en tu functions.php y entonces puedas poner tu tus condiciones de idiomas, pero habria que que ver si merece la pena y como de compleja es la funciona.

    Saludos.

    Luisma
    MarkeKing

    Iniciador del debate kuro

    (@kuro)

    Excelentes aportes Luisma. A veces la elegancia hay que pasársela por donde ya sabes si no se encuentra otra solución y la que encuentras es funcional.

    No encuentro la línea de código que dices «En lugar de» ¿dónde la viste?

    Muchas gracias

    esa línea es la tercera del primer bloque de código que tu enviaste al explicar el problema.

    También se me ocurre que posiblemente el fallo puede estar en que esté en que las funciones de traduccion como __( ‘Leave a comment’, ‘ultra’ ) esté mal el nombre del diccionario «ultra», puede que haya que ponerse con mayúsculas para que coincida con los archivos pot y mo que hayas creado, o bien que por ejemplo Leave a comment tenga algún caracter distinto a como esté en el diccionario de los archivos.

    Revisa muy bien que coincidan esas cosas.

    También puedes hacer que estas funciones, en lugar de tirar del diccionario de «ultra» tiren de otro diccionario de otro plugin o plantilla y añadir el término traducido a dicho diccionario del plugin correspondiente, o incluso de WordPress, a ver si funciona. Por ejemplo igual puedes poner si tienes woocommerce esto: __( ‘Leave a comment’, ‘woocommerce’ ) o de otro plugin que sepas que siempre vas a utilizar. Me imagino que WordPress también tendrá diccionarios, en cuyo caso seria preferible tirar de los de wordpress, porque siempre estarán disponibles, aunque yo no entiendo mucho de esto, porque nunca me ha hecho falta con Loco Translate

    • Esta respuesta fue modificada hace 5 años, 1 mes por MarkeKing.es.
    Iniciador del debate kuro

    (@kuro)

    Hola Luisma. He borrado mi carpeta languages (la del child) y he probado con Loco Translate y he conseguido traducir pero la que me trae loco que es esta que dice que hay X comentarios justo antes de listarlos, aún estar traducida en el Loco no aparece traducida, así que entiendo que habrá algo mal en el theme padre a pesar de que su autor tampoco encuentra la solución y se que lo ha probado a conciencia porque me he escrito varios correos por temas varios y es tan atento y persistente como tu.

    Mañana cojo vacaciones hasta final de mes y no tengo ni billetes ni nada reservado así que lo dejo en standby y lo pillo de vuelta. Es lo que tiene ser autónomo, darlo todo por los clientes y dejarse uno mismo para el final.

    A ver si cuando esté de vuelta, entre el cambio de aires y tus pistas supongo que llegaré a algún sitio, sinó mira, como comento lo único que queda por traducir es ese X comentarios y alguna cosa más sin importancia.

    Saludos y feliz verano!

    Iniciador del debate kuro

    (@kuro)

    Olvidé preguntar dónde guarda Loco las traducciones porque dice que lo ha compilado y funciona pero en Languages del tema padre, ni del hijo están los archivos.

    Muchas gracias

Viendo 9 respuestas - de la 1 a la 9 (de un total de 9)
  • El debate ‘No se traducen algunos textos de tema hijo’ está cerrado a nuevas respuestas.