41

WordPress multiidioma

Existen muchos plugins que hacen que nuestro WordPress sea multiidioma. He probado algunos y el que más me ha gustado ha sido qTranslate, que no sólo te permite tener tus páginas y posts en varios idiomas, sino también el administrador de WordPress. Para instalarlo haremos lo mismo que hacemos con todos los plugins: descargamos qTranslate, lo descomprimimos en /wp-content/plugins/ y lo activamos desde el administrador.

Configuración

Antes de empezar a traducir nuestro blog, configuraremos los idiomas que vamos a utilizar. Esto es tan sencillo como habilitar los idiomas en la lista de idiomas disponibles dentro de la Configuración de qTranslate (menú Opciones -> Idiomas).

Configuración de idiomas en qTranslate

Configuración de idiomas en qTranslate

Cuando habilitamos un nuevo idioma, qTranslate se encarga de todo lo necesario para que WordPress reconozca ese idioma, es decir, copiará los archivo .mo necesarios en la carpeta /wp-includes/languages/ sin que tengamos que hacer nada más. Si el idioma que necesitamos no sale en la lista, también podremos añadirlo desde la pantalla de configuración.

Por último, en Configuraciones avanzadas, podremos modificar la URL para mostrar los diferentes idiomas de 3 formas diferentes:

  • modo consulta (tudominio.com/?lang=es)
  • modo pre-ruta (tudominio.com/es/)
  • modo subdominio (es.tudominio.com)

Elige la que más se adapte a tus necesidades (alguna de ellas puede necesitar mod_rewrite activado).

Escribir una entrada en varios idiomas

Cuando escribamos una nueva entrada o página, veremos que la interfaz ha cambiado. Nos aparecerá un recuadro donde escribir el título para cada idioma, y una serie de pestañas encima del cuadro de texto donde escribiremos el contenido en los diferentes idiomas.

Escribir una entrada en varios idiomas

Escribir una entrada en varios idiomas

Selector de idiomas

Selector de idiomas

Selector de idiomas

Una vez tengamos una entrada escrita en varios idiomas, sólo nos queda darle al usuario la opción de visualizarla en esos idiomas. Para ello qTranstate nos facilita un widget selector de idiomas. Podemos añadir ese widget donde queramos, y configurarlo para que muestre solo texto, solo la imagen, texto e imagen o un desplegable con los idiomas. Este selector es completamente editable por CSS.

Si no usamos widgets, o queremos situar el selector fuera del sidebar, podremos usar la función qtrans_generateLanguageSelectCode($tipo), siendo $tipo una de las opciones de visualización aceptada («text» para solo texto, «image» para solo imagen, «both» para texto e imagen o «dropdown» para el desplegable). Por defecto, se muestra solo texto. Ejemplo:

<?php echo qtrans_generateLanguageSelectCode('both'); ?>

También en el administrador, nos aparecerán unos nuevos menús para ver el administrador en los idiomas que hayamos habilitado.

Traducir otras partes

qTranslate no sólo nos permite traducir el contenido de nuestras entradas o páginas, también podremos traducir otras partes de WordPress como el header o el footer. Para ello abrimos el archivo correspondiente y escribimos, por ejemplo (para el buscador):

<?php _e("<!--:en-->Search<!--:--><!--:es-->Buscar<!--:-->"); ?>

Y así con todos los idiomas que tengamos habilitados.

Si tenemos habilitado un idioma, pero qTranslate no encuentra su traducción (no la hemos puesto al añadir la entrada/página, o no la hemos traducido manualmente), se utilizará el idioma por defecto (configurable en el administrador).

Más información en el FAQ de qTranslate.

38 comentarios

  1. Hola,
    si por ejemplo tenemos imágenes que se muestra un mensaje y en este caso, una imagen en castellano y la otra en inglés, como la mostramos? es decir, que variable podemos utilizar para llamar la imagen dependiendo del idioma?, gracias por el post!

    Un saludo.

  2. Ponle a las imágenes el mismo nombre y al final le añades el idioma (o algo que las diferencie). Por ejemplo, las imágenes podrían llamarse foto-es.jpg y foto-en.jpg (en español y en inglés). Cuando las muestres, escribes algo como:

    <img src="foto-<?php _e("<!--:en-->en<!--:--><!--:es-->es<!--:-->"); ?>.jpg" />

    Otra solución es que directamente pongas el nombre de la imagen para cada idioma. Así:

    <img src="<?php _e("<!--:en-->foto1.jpg<!--:--><!--:es-->foto2.jpg<!--:-->"); ?>" />

    Para el inglés se mostraría foto1.jpg y para el español foto2.jpg.

  3. Lo voy a probar, muchas gracias!

  4. Muy bueno el plugin, pero lo suyo por el tema de seo, es que tenga la opción de poder escoger por dominios, por ejemplo inglés el .com y en castellano el .es.

    He leido en el foro que en la versión 3.0 se podrá hacer, pero por ahora solo encontrado un parche, pero no he conseguido que funcione. Se tienen que modificar y añadir unas lineas en el archivo qtranslate_configuration.php pero esta muy mal explicado el código y me peta.

    Un saludo.

    • Gracias por el comentario, buen punto de vista. La verdad es que yo siempre he usado la opción de la pre-ruta (tudominio.com/es/) aunque no sea tan óptimo como usar el tld del idioma. ¿Has probado a hacer redirecciones con htaccess? No se si funcionará porque como digo no lo he probado, es sólo una idea:

      # Español
      RewriteCond %{HTTP_HOST} ^tudominio\.es [NC]
      RewriteRule (.*) http://tudominio.es/$1 [L]
      # Inglés
      RewriteCond %{HTTP_HOST} ^tudominio\.com [NC]
      RewriteRule (.*) http://tudominio.es/en/$1 [L]
      # Alemán
      RewriteCond %{HTTP_HOST} ^tudominio\.de [NC]
      RewriteRule (.*) http://tudominio.es/de/$1 [L]

      ¿Qué te parece? ¿Podría funcionar?

  5. Gracias por tu respuesta, la pre-ruta es una opción, pero si por ejemplo en un proyecto tienes varios dominios para cada idioma, por ejemplo el .com para el idioma inglés, el .es para el idioma castellano, etc , lo mejor es usarlos sin pre-ruta.

    El plugin por defecto te deja la opción de pre-ruta pero NO con dominios distintos, al final con un parche y modificando varios archivos lo he conseguido, ahora en el dominio .com muestro el idioma inglés y en el dominio .es el idioma español.

    Muchas gracias por tu ayuda!

  6. Gracias por la info, me ha venido de perlas.

    Un abrazo,

  7. El plugin está bien si no te importa SEO. Solo hay una url, en el idioma principal. Por ejemplo http://www.tusitio.com/que-hacemos, en español y la misma url para inglés. No genera una url para cada idioma.

  8. Hola,

    Igual que haceis esto:
    <img src="<?php _e("foto1.jpgfoto2.jpg«); ?>» />

    Como lo hariais si son url, por ejemplo en el pie de pagina, pones aviso legal y privacidad, y quiero que aparezca en español o en ingles, segun tenga el idioma activado.

    • Es igual que con el ejemplo de la foto. El texto del enlace lo configuras con los idiomas que tengas en tu sitio. Por ejemplo:

      <?php _e("<!--:en-->Privacy policy<!--:--><!--:es-->Política de privacidad<!--:-->"); ?>

      Luego, la url a la que apunta el enlace dependerá de si estás usando el modo consulta, pre-ruta o subdominio. Pongamos que estás usando el modo pre-ruta y quieres que tu enlace apunte a http://www.tusitio.com/en/politica-de-privacidad que está en inglés.

      <a href="http://www.tusitio.com<?php _e("<!--:en--">/en/<!--:--><!--:es-->/<!--:-->"); ?>politica-de-privacidad">....</a>

      De esta forma, cuando el idioma elegido sea el inglés, el plugin añade «/en/». Si el idioma es español, solo añade «/» a la url (si el español es el idioma por defecto, claro).

  9. Hola, ¿sabéis si es posible con este plugin que se traduzcan también los menús y cualquier otro elemento, es decir al cambiar el idioma te cambien menús, contenidos, widgets, etc.?

    Gracias

  10. Hola, donde y como edito el estilo(.css) del widget??

    • Este plugin no tiene un archivo css propio, así que los estilos se los tienes que dar en el css del template que uses. Qtranslate añade sus propias clases. Por ejemplo, en el selector de idiomas añade la clase «qtrans_language_chooser» al ul que contiene los distintos idiomas.

  11. Hola

    quiero introducir el idioma ruso que no viene preconfigurad. He enctrado el fichero ru.mo, pero no he conseguido que me lo detecte.

    Alguin me podria ayudar y explicarme.
    Gracias

  12. Tengo un problema con esta web (elfuturoessuyo.com), como verás todo está traducido, pero a la hora de ingresar, todos los links del buddypress vuelven a la ruta en español. Me he preguntado si se solucionará utilizando el modo subdominio, pero no he encontrado como dejarlo bien configurado.
    De antemano te agradezco la ayuda.

  13. Muchas gracias por la informacion, soy nuevo y quiero poner en varios idiomas mi pagina, tengo un problema que nose como poner, donde poner la parte:

    Locale:

    PHP and WordPress Locale for the language. (Example: en_US)
    You will need to install the .mo file for this language.

    y si tengo que instalar .mo como loga, espero que me pueda ayudar.

  14. Hola, estoy usando este plugin para traducir una web que estoy montando. Y me veo con el problema de que en el Widget (por ejemplo de suscribir) quiero que aparezca el titulo en diferentes idiomas.

    Al poner el codigo

    Titulo:
    <?php _e("SubscriuteSuscribete«); ?>

    Texto:
    <?php _e("
    Pots subscriuret a nosaltres posant el teu email.
    Puedes suscribirte a nostoros poniendo el mail.
    «); ?>

    Boton:
    <?php _e("SubscriuteSuscribete«); ?>

    Me sale algo asi

    Catalàn
    http://i.imgur.com/6CX2O.png
    Castellano
    http://i.imgur.com/yDaGM.png

    Y en el boton como puedes ver, tambien va falto de texto (aunque se lo tengo puesto). Esto esta puesto desde la pagina de widgets de el wordpress.

    Una ultima pregunta, me gusta bastante el plugin que tienes para Recientes, Populares y Comentarios podrias decirme cual es?

    Gracias!

  15. Veo que ha modificado lo que te he puesto en el comentario ( se ha tragado el HTML ) te dejo un link a un .txt con el codigo que tengo puesto.

    http://linkto.net/?2103511774f423db7387310.80381410

  16. Ok! Muchas gracias y ya por ultimo que plugin es el de compartir este que tienes al final del post (yo uso el de jetpack, pero no me convece…)

  17. Hola,
    En cuanto he definido español como el idioma principal desde el modulo qTranslate se me ha puesto todo el menú de administración en inglés, los formularios de comentarios también, y en el otro idioma (el catalán) las fechas no salen en catalán sino en ingles, me gustaría poner los formularios para enviar comentarios por lo menos en castellano y si puede ser en catalán, que supongo que si se puede con uno con el otro también, el caso es que buscando en los archivos de lenguas no encuentro donde modificar por que en ningún lado pone Leave a Replay para que se pueda cambiar

  18. Hola.
    He instalado el plugin y he estado traduciendo las entradas que tengo hechas de inglés a español. Las publico y veo en el front end los resultados a la hora de querer ver el contenido de cierto articulo del inglés al español.

    El problema ocurre cuando quiero ir a hacerle cambios a mi entrada en el administrador. El articulo por default lo hice en inglés, y en español es mi segundo idioma que configuré en el qtranslate. Bueno, al querer abrir la pestaña en español ya no me muestra el contenido, simplemente checho la pestaña HTML para asegurarme y se ha borrado completamente o solo me deja un segmento del contenido que capturé.
    Tengo que volver a escribirlo nuevamente para que surjan los cambios y eso es un poco cansado.
    ¿A alguien mas le pasá o es que solo mi caso es unico?
    Aquí el sitio donde lo estoy montando:
    http://www.pvfishingandsailing.com
    Saludos

  19. Al colocar en el header.php

    no funciona el jplayer y aparece el error Destination host forbidden.

    Quiero las banderas de los idiomas en la esquina superior izquierda de mi web como lograrlo sin que me salga este problema?

    Gracias

  20. Hola,

    Me gustaría saber cómo tener diferentes url para diferentes idiomas.
    No queda bien que la url sea ;
    example.es/despachos y en catalan sea example.es/ca/despachos aquí quiero poner «despatxos»

    gracias de antemano

  21. Quiero agregar las banderas de idioma, pero no resulta cuando coloco «solo imagen» y cuando coloco «imagen y texto» sale solo el texto…Habrá alguna razón para esto…?
    Cuando selecciono «solo Texto» se refleja bien…pero en ningún caso salen las banderas de los idiomas seleccionados

  22. Alejandra Garcia

    Hola, soy nueva trabajando con qtranslate y la idea es poner la selección de idiomas «Español» «Catalan»con las banderitas en la barra de menu. Esto lo he hecho con el codigo , sale el nombre y las banderitas pero las banderas salen mas arriba que es texto. La verdad ya no se q mas hacer he mirado css pero nada no se arregla. Si alguien me puede ayudar con esto.

    Gracias

  23. Saludos, quería saber si existe alguna opción igual para wordpress.com, gracias

  24. Hola, queria saber si se pueden poner diferentes url en cada página para cada idioma porque tengo una parte que cuando hago click en un link en la página en inglés me va a la página en castellano y necesito que vaya a la de inglés.

    Gracias!!!

  25. Pues me viene de perlas para un posible proyecto web en 5 idiomas. Muchas Thanks

  26. Muchas gracias por compartir la información, me va a venir genial.

  27. hola, yo me enfrento al siguiente problema y no sé cómo solucionarlo.
    desarrollé una web en español e inglés con qtraslate, todo perfecto, pero ahora necesito meter un tercer idioma y que no me salga la banderita del tercer idioma hasta que termine la introducción de todos los textos.
    las tengo metidas en el header.php así:

    lo ideal sería encontrar el código que llame sólo al ES y al EN, y sustituirlo por ese que llama a todos los idiomas activados, pero no lo encuentro.
    el problema que no puedo permitir que estando online la web, el usuario pinche en el tercer idioma y no esté terminado.

    alguna solución??? gracias por adelantado.
    alguna solución???

    • Ivant,

      Tengo tu mismo problema, he visto que has publicado la consulta en diferentes foros, has encontrado ya la solución?

      Parece extraño que no haya más gente en esta siutación, yo tengo 2 idiomas (para mi los indispensables desde el inicio) y ahora me planteo poner un 3er idioma i mas tarde seguramente un 4o. Pero on-line es muy complicado hacer esto sin una solución que permita ir traduciendo los contenidos y publicarlos al final.
      Bien espero que hayas encontrado la solución y puedas echarme una mano 😉
      O alguien que lea esto y tenga la solución
      Gracias.

    • Lo que podeis hacer es:
      Teniendo el plugin activo con los 3 idiomas quitar momentaneamente el widget de donde lo tengais, y poner manualmente el enlace a los 2 idiomas completos (español e ingles creo que comentastes). Esto sería un widget de texto metiendo por html un enlace, una banderita o las dos, no quedaría igual que el propio widget, pero para salir del paso vendria bien.
      Los enlaces los pones según tengas la configuracion de prerutas o subdominios, en mi caso por ejemplo sería:
      Español: http://www.greenfuelsbio.com
      Inglés: http://www.greenfuelsbio.com/en/
      Saludos y espero que el apaño os sirva.

  28. Para traducciones profesionales de sitios web wordpress recomiendo https://poeditor.com, una herramienta en línea muy útil que tiene una interfaz de memoria de traducción, traducción automática de colaboración y un plugin para WordPress útil.

  29. Hola, tengo esto traducido en el footer pero ahora quiero enlazarlo a cada idioma, como lo puedo hacer?

    <?php _e("JobsEmpleowerkgelegenheidsysselsättningBeschäftigungemploiempregooccupazioneзанятости«); ?>

    Gracias

Comentar

*

*

Para añadir código formateado, escribe el código entre <pre lang="php" line="1"> y </pre>

Si quieres un avatar personalizado, créate uno en gravatar.com con tu dirección de correo. Cada vez que comentes con ese correo, aparecerá tu avatar personalizado.