Traducir las plantillas, temas o plugins de WordPress es una tarea habitual que tenemos que ejecutar cuando desarrollamos un nuevo sitio web para un cliente. En esta entrada explicaré cómo hacerlo.
Los idiomas en WordPress
Una de las razones por las que me gusta trabajar con WordPress es que sus idiomas se actualizan con frecuencia, según van saliendo nuevas versiones, y el “core” lo siempre lo encontramos traducido al español con mejor o peor fortuna. Esto facilita el acceso a la plataforma a muchos de mis clientes que se manejan peor en otros idiomas.
Sin embargo, cuando integras una plantilla en tu instalación de WordPress te sueles encontrar con que todas o parte de las cadenas de texto están en inglés (algunas veces, incluso, en idiomas menos frecuentes). Así, donde esperabas encontrar un botón con el texto “Leer más”, te encuentras un “Read more”. Lo mismo suele ocurrir cuando instalas algún plugin, tanto a nivel de la administración o en la vista del usuario.
Otras veces, incluso cuando encuentras que los textos están en español, percibes que la traducción no se ajusta a la jerga o terminología del sector en el que se desenvuelve tu cliente y necesitas adaptarla. Por ejemplo, a mí me gusta más poner “Continuar leyendo” que “Leer más”, que suele ser la traducción más frecuente. Me parece menos imperativo y más seductor.
Vamos a ver como se gestionan los idiomas en WordPress y como crear o modificar las traducciones existentes de las plantillas y plugins.
Del PHP al MO, pasando por el POT y el PO
Las directrices de WordPress para la localización indican que las cadenas de texto se deben incorporar al código con la siguiente sintaxis:
<?php echo __( 'The page you are looking for was not found!', 'read' ); ?>
o
<?php _e( 'The page you are looking for was not found!', 'read' ); ?>
Para los no programadores diremos que las expresiones de PHP, el lenguaje con el que está construido WordPress, se encierran entre las etiquetas <?php y ¿>.
echo __(…) y _e(…) son expresiones equivalentes e indican que la traducción de la cadena que va entre paréntesis debe mostrarse en pantalla.
A continuación encontramos dos elementos, ambos recogidos entre comillas simples y separados por una coma. El primero de ellos representa la cadena de texto que se mostrará en distintos idiomas (‘The page you are looking for was not found!’). Generalmente, esta cadena de texto aparecerá en inglés o en el idioma del desarrollador de la plantilla.
El segundo elemento (‘read’) es el dominio del texto, es decir, el ámbito en donde la traducción es de aplicación, siendo ese ámbito, un tema o un plugin determinado, y ayuda a diferenciarlo de las traducciones de otros temas o plugins.
WordPress utiliza las librerías GNU gettext para sus traducciones. A través de estas librerías es posible, de todos los ficheros que constituyen la plantilla, extraer las cadenas de texto que son traducibles y que quedan incorporadas a un fichero POT (Portable Objects Template) que servirá, a su vez, de plantilla para las traducciones en distintos idiomas.
A partir del fichero POT se construirá el fichero PO (Portable Objects) que ya es específico del idioma en el que se va a realizar la traducción y que deberá contener una referencia al idioma al que se refiere la traducción y el país donde es de aplicación siguiendo las normas ISO 639 (códigos de lenguajes) e ISO 3166 (códigos de países), por ejemplo, es_ES.po correspondería a una traducción al español (es) para su uso en España (ES).
El fichero PO contiene las plantillas de las cadenas que se extrajeron del código de la plantilla de WordPress y sus equivalencias traducidas al idioma deseado.
Sin embargo, WordPress no es capaz de trabajar directamente con archivos PO y estos deben ser transformados en archivos MO (Machine Objects), que son compilaciones binarias de los archivos PO.
En definitiva, para cada idioma debemos disponer de un archivo PO y otro MO. Si no disponemos de ellos, tendremos que echar mano del archivo POT para generarlos (si viene con la plantilla, que no siempre es así). Estos archivos los encontraremos en la carpeta
/wp-content/themes/mitema/languages/
en el caso de plantillas o temas, y
/wp-content/plugins/miplugin/languages/
en el caso de plugins.
Las herramientas
Para manejar estos archivos disponemos de diferentes herramientas, ya sean para descarga, en línea o como un plugin de WordPress.
Poedit
Es la más popular de las herramientas para descargar. Existe una versión PRO, de pago, pero la gratuita es más que suficiente para la mayoría de los usuarios. Tiene un interfaz muy sencillo y se aprende a manejarla en pocos minutos. Hay versiones para Windows, MacOS y Linux.
[button color=»green» size=»small» type=»d3″ icon=»eye» target=»_blank» url=»https://poedit.net»]Visitar[/button]
Virtaal
Disponible para Windows, MacOS y Linux, es una aplicación de escritorio gratuita orientada a traductores profesionales.
[button color=»green» size=»small» type=»d3″ icon=»eye» target=»_blank» url=»http://virtaal.translatehouse.org/index.html»]Visitar[/button]
Online PO file editor
Un sencillo editor on line que cubre las opciones más necesarias en cualquier traducción. Desarrollado por Loco, Existe una versión en formato de plugin para WordPress.
[button color=»green» size=»small» type=»d3″ icon=»eye» target=»_blank» url=»https://localise.biz/free/poeditor»]Visitar[/button]
Loco Translate
Es un plugin para WordPress desarrollado por la misma compañía que el anterior y con sus mismas características.
[button color=»green» size=»small» type=»d3″ icon=»eye» target=»_blank» url=»https://es.wordpress.org/plugins/loco-translate/»]Visitar[/button]
¿Qué herramienta elegir?
Pues, depende. Si manejamos habitualmente traducciones, Poedit es la solución más idónea y potente, sobre todo cuando el autor del tema no incluye el archivo POT, o está desactualizado, y hay que crearlo desde los ficheros que componen el tema (lo cual puede llegar a ser frecuente). En este enlace tenemos cómo hacerlo.
Si tenemos que traducir un único tema, Loco Translate sería la solución. En este caso, instalaríamos el tema y, una vez terminada la traducción, lo desactivaríamos o desinstalaríamos.
El último recurso
Totalmente desaconsejable, pero si nos vemos en un apuro y no podemos utilizar alguna de las herramientas anteriores, siempre nos podemos ir al código fuente de la pantilla y cambiar las cadenas en el PHP (pero, previamente, hay que encontrarlas). El problema es que en la próxima actualización de la plantilla, se perderán esos cambios.