Blog personal de Helmer Galvis

Traduciendo sitios WordPress con qTranslate

Artículo publicado el domingo, diciembre 8, 2013. Guardado en la categoría: Wordpress

Realizar proyectos web en varios idiomas es algo con lo que muchos diseñadores y desarrolladores nos encontramos constantemente y en muchos casos se puede convertir en algo complicado, sobretodo si trabajamos con gestores de contenido que no están preaprados para dicha función como es el caso de WordPress. Es una función que no tiene tan madura frente a sus rivales directos como Joomla o Drupal.

Los plugins de wordpress son una maravilla y como no, no podían faltar los que nos permiten gestionar nuestro sitio perfectamente en varios idiomas. Tenemos soluciones de pago como WPML, que es excelente y el cual tiene un gran soporte tanto de la comunidad como de sus desarrolladores, además cuenta con traductores profesionales para que nuestras traducciones sean perfectas. También tenemos soluciones gratuitas como qTranslate pero que no goza de la aceptación como WPML al no ser tan amigable y fácil de usar. Pero cumple su función perfectamente.

¿Cómo funciona qTranslate?

Es tan sencillo como descargarlo de el sitio oficial, subirlo a nuestra carpeta de plugins y activarlo. Hay varios idiomas por defecto para configurar. Si algun idioma que necesitas no está en la lista tendrás que descargar el arhcivo .mo y meterlo en la carpeta “wp-content > languages”

Traducir los contenidos
qTranslate no es un traductor automático por lo que todo el contenido que generamos en nuestra web debe ser traducido manualmente. En las entradas normales o personalizada, páginas y categorías tenemos pestañas para cada uno de los idiomas que hemos configurado el plugin. Por ejemplo si has seleccionado Español e Inglés, tendrás en la edición del post una pestaña para Español y otra para inglés. Las pestañas están implementadas en las últimas versiones pero si no tienes una versión reciente la forma de separar los contenidos traducidos es usando los siguientes codigos, el texto va entre las llaves.
<!--:es-->Aqui va el texto en español.<!--:-->
<!--:en-->Aquí va el texto en inglés.<!--:-->

Para traducir los textos en widgets o zonas de edición de algún plugin como All in one SEO, diferenciamos las traducciones usando [:es] antes del texto. Por ejemplo: [:es]Esto es un texto de widget en español. [:en]Este es el mismo texto pero en inglés.

Si queremos traducir textos del theme directamente en los archivos PHP en el código debemos hacerlo de la siguiente manera:
<?php_e("<!--:es-->Aqui va el texto en español.<!--:--> <!--:en-->Aquí va el texto en inglés.<!--:-->");?>

Mostrar archivos dependiendo del idioma en los archivos PHP
Para mostrar un JS, CSS, archivo de imagen, etc. difernete dependiendo del idioma usaremos la siguiente condición:


<?php
if(qtrans_getLanguage() == "es") {
echo "<script src=\"" . get_bloginfo('stylesheet_directory') . "/js/javascript_es.js\" type=\"text/javascript\"></script>" ;
}
?>

<?php
if(qtrans_getLanguage() == "en") {
echo "<script src=\"" . get_bloginfo('stylesheet_directory') . "/js/javascript_en.js\" type=\"text/javascript\"></script>" ;
}
?>

Como podemos ver, casi nada se nos escapa a la hora de manejar traducciones y archivos dependiendo del idioma con qTranslate.

qTranslate, WordPress y SEO

Creo que los creadores del plugin no pensaron mucho en el SEO, y es normal, su plugin es para solucionar problemas de traducción y punto. Pero qTranslate se queda corto a la hora de editar el slug de las páginas, entradas, categorías, etc. Ya que usa el mismo para los diferentes idiomas, por ejemplo, si tenemos una página del tipo miweb.com/hola-mundo con qTranslate la traducción inglés sería algo así: miweb.com/en/hola-mundo. Por fortuna hay un plugin que se llama qTranslate Slug que viene a solventar ese problema de edición en los slugs de las url. Este sencillo pero potente plugin que se integra con qTranslate nos da la opción en la edición de post y paginas de editar el texto de la url para que tengamos como resultado algo así: miweb.com/en/hello-world.

Pero ahí no acaba la cosa, qTranslte incorpora la etiqueta “rel=”alternate” hreflang=”x” la cual indica a Google que esa página que está visitando está disponible en otros idiomas y su URL, por ejemplo si visitamos miweb.com/en/hola-mundo en el head de nuestra web se genera esta cabecera:

<link rel="alternate" hreflang="en" href="http://miweb.com/hello-world" />

El caso, es que qTranslate Slug no reescribe las urls de esta cabecera correctamente ya que lo hace en el idioma original, vamos como si no estuviéramos usando la edición de la url. La solución es sencilla, tenemos que editar unas pocas líneas del archivo qtranslate_hooks.php del core de qTranslate. Si, es una “hack” un poco rudimentario pero en las próximas actualizaciones de qTranslate y qTranslate Slug se solventará este “bug”.

Una vez hecho esto, tendremos nuestro proyecto multiidioma funcionando bajo WordPress y valido para SEO.

Conclusión
qTranslate es una alternativa gratuita muy buena frente a WPML que para mi es el mejor plugin de traducción en WordPress. Pero pienso que debemos probar otras alternativas y aprender a usarlas para hacer buenas valoraciones. A mi qTranslate me ha dejado más que satisfecho, pero sin duda es un plugin que no recomendaría si no tienes un perfil de desarrollador o diseñador web ya que puede ser confuso sacarle provecho al plugin, así que lo mejor es que optes por WPML si quieres rapidez o no complicarte.