X

Cambiar textos de traducción en WordPress

En un artículo anterior vimos cómo internacionalizar un plugin, sin embargo muchas veces necesitamos hacer cambios a textos específicos sin generar un nuevo un archivo de traducción. En este artículo veremos dos maneras simples de cambiar los textos de traducción en WordPress.
 

Generalidades

Tomaremos como ejemplo el texto de traducción «Publicar comentario», que es un texto del núcleo de WordPress, lo cambiaremos por «Enviar comentario», obtendremos un resultado similar a lo que se muestra en la siguiente imagen:

 

1- Cambiar textos de traducción Usando un Plugin

Esta es la forma más simple, el plugin que usaremos será Loco Translate

Una vez instalado veremos que tiene diferentes opciones de menú para buscar textos de traducción, en nuestro caso, el texto de traducción corresponde al núcleo de WordPress.

 
Luego buscamos el texto que queremos traducir y realizamos la traducción tal como se muestra en la siguiente imagen:

 

2- Cambiar textos de traducción Usando código

Si quieres evitar el uso de un plugin adicional para cambiar algunos textos específicos, puedes hacerlo entonces a través de código, tal como se muestra a continuación:

Puedes usar este código en el archivo functions.php de tu child-theme

add_filter( 'gettext', 'dcms_change_traduction_text', 10, 3 );

function dcms_change_traduction_text( $translated, $original, $domain ) {
    if ( $translated == "Publicar comentario" ) {
        $translated = "Enviar comentario";
    }
    return $translated;
}

En el código anterior:

  • Usamos el filter hook gettext el cual hace referencia a la función dcms_change_traduction_text
  • La función dcms_change_traduction_text tiene tres parámetros, el primero de ellos nos sirve para hacer la verificación de la cadena de texto a traducir
  • Finalmente retornamos el valor del primer parámetro cambiado
  • Tener en cuenta que también es posible trabajar con funciones de traducción como __() o _e() y usar el parámetro domain

Existen variaciones del filtro gettext, por ejemplo para la traducción con contexto usarías el filter hook gettext_with_context

 

Conclusión

El sistema de traducción de WordPress usa archivos .po y .mo para las traducciones de textos, afortunadamente podemos cambiar los textos que vienen por defecto, tal como hemos visto podemos hacerlo usando un plugin o a directamente a través de código.

 

Categorías: Core
Etiquetas: mejoras

Ver comentarios (14)

  • Hola, tengo mi Wp todo en español incluso el theme esta bastante traducido, pero hay cosas como woocommers que me muestra en el carrito alguas cosas en ingles por ejemplo view cart y no encuentro donde está ese texto. como puedo encontrarlo? Gracias

  • Hola, cómo puedo cambiar varias cadenas de texto, y no una sola, en el ejemplo segundo indicas como cambiar un texto, pero no consigo cambiar varios. ¿Podrías indicarme un ejemplo de codigo para tres textos a cambiar?

    Gracias de antemano.

    • Hola, podrías usar if y elseif, por ejemplo:

          if ( $translated == "texto 1" ) {
              $translated = "texto cambiado 1";
          } elseif ( $translated == "texto 2" ) {
          	$translated = "texto cambiado 2";
          } elseif ( $translated == "texto 3" ) {
          	$translated = "texto cambiado 3";
          }
          return $translated;
      

      Saludos.

  • Hola, gracias por el video es de gran ayuda, pero tengo un problemilla, solo me deja cambiar una frase, me gustaría poder cambiar varias frases. En el comentario anterior dejas un código para varias pero no funciona correctamente. Sería posible que subierás un código para cambiar varias frases?
    Gracias de antemano, Un saludo

  • Estimado John:
    Con este fragmento he logrado cambiar el texto de un botón:

    add_filter('gettext', 'translate_text');
    add_filter('ngettext', 'translate_text');

    function translate_text($translated) {
    $translated = str_ireplace('FINALIZAR COMPRA', 'FINALIZAR CARGA', $translated);
    return $translated;
    }
    pero cuando agrego el mismo fragmento para el texto de otro botón no cambia nada.¿Por que será? En otras palabras Wordpress me acepta solo un cambio del texto para un solo botón.. También intenté con el fragmento para varios cambios de texto y tampoco funcionó. Agradezco tu asistencia. Gracias !!

    • Hola, dentro la función puedes poner varias condicionales y al final retornar el valor. Has intentado con Loco Translate?. Saludos.

  • Hola amigo agradecido por tus tutoriales, quiero saber como se haria esta traduccion por codigo si necesito cambiar la frase de español a una frase en ingles, lo que sucede es que el plugin no tiene pot de idioma, que campo faltaria para indicar que cambie la frase a ingles

    • Hola
      Algo que puedes evaluar es crear los archivos de idioma para tu plugin, lo puedes hacer igualmente con Loco Translate o con una aplicación como Poedit. Sin embargo si quieres cambiarlo directamente en el código, puedes abrir la carpeta de tu plugin con algún editor de código y buscar en todos los archivos de la carpeta el texto que quieres cambiar, lo ubicas y lo cambias.

  • Buenos días,
    He probado tu código y funciona bien para las labels, pero los textos de las etiquetas a no me los cambies, alguna idea?? Gracias de antemano.

  • Hola Jhon,
    Mil gracias por tus aportes. Quería preguntarte si hay alguna forma de cambiar lo que está escrito en un botón?
    Ya usé el otro código para cambiar un par de letras pero cuando intento en un botón, no funciona.
    Mil gracias

    • Hola, has probado con Loco Translate, es posible que igual el texto de botón se encuentre en un "contexto", o es posible también que el programador no haya usado funciones de traducción para el texto del botón. Con respecto a la traducción del contexto revisa este artículo relacionado: https://decodecms.com/cambiar-comillas-en-wordpress/