Finalizamos la implementación de los comentarios con la traducción de wpDiscuz al castellano. Es una tarea que me sirve perfectamente como pretexto para hablar de como traducir plugins y temas de WordPress.
Gestión de idiomas en WordPress
WordPress se basa en GNU gettext para gestionar las traducciones de todos sus elementos. Esta herramienta encuentra todos los recursos traducibles y los coloca en archivos con extensión .pot (Portable Object Template). Básicamente tenemos un listado de los textos en el idioma original y que servirá como plantilla para realizar las traducciones.
Archivos de idioma
Los programas de traducción utilizan estas plantillas para generar dos nuevos archivos: uno con extensión .po (Portable Object) y otro .mo (Machine Object). La diferencia entre ambos es que el primero tiene las traducciones en un formato legible por personas y el segundo está destinado a ser leido por lás máquinas.
Cuando seleccionamos un idioma en Wodpress, en realidad estamos definiendo cual será la combinación .po/.mo que será utilizada por el sistema para traducir plugins y temas al idioma utilizado en nuestra web.
La ubicación habitual de estos archivos es:
- wp-content/languages: Traducciones del núcleo WordPress.
- wp-content/languages/plugins y wp-content/languages/themes: Es el sitio habitual para las traducciones de plugins y temas, respectivamente. Es recomendable guardar las nuestras aquí, así no serán machacadas al actualizar
- wp-content/themes/<Tema>/languages y wp-content/plugins/<Plugin>/languages: Aquí suelen estar las traducciones que ya vienen incluidas con un tema o plugin. Hay que tener en cuenta que al borrar el tema o plugin se borrarán también sus traducciones.
Estas son las ubicaciones oficiales, pero los desarrolladores tienen total libertad para escoger la ubicación que deseen. En otras palabras, siempre hay que revisar la documentación para evitar sopresas cuando nos lanzemos a la tarea de traducir plugins y temas en nuestra web.
Funciones y herramientas de traducción
¿Cómo se sabe que un texto debe ser traducido? WordPress nos ofrece diferentes funciones para indicar que un texto necesita traducción. Las más habituales son:
- __(), _e(): Necesitan el texto a traducir y opcionalmente un dominio (suele ser el nombre del tema o plugin) para aislarlo de otros fragmentos de código
- _n(): En este caso se indica el texto para el,singular , el texto del plural, el número correspondiente y opcionalmente el dominio
- _x(). _ex(), _nx(): Son versiones extendidas que nos permiten indicar el contexto en que se usa el texto.
Si no usamos las funciones de traducción, nuestro código no podrá ser traducido sin modificarlo, lo cual es una mala práctica de programación.
Existen variasherramientas que podemos utilizar para generar los archivos de traducción, entre ellas tenemos:
- Poedit - Es una aplicación gratuita, con funciones avanzadas premium, que nos permitirá trabajar con los archivos .po y .mo
- WPML - Su módulo de traducción de cadenas nos permite importar y exportar archivos .po/.mo y gestionar las traducciones desde el panel de administración
- Loco Translate - Funciona de forma similar a Poedit, pero gestionamos las traducciones dentro de WordPress
En este caso utilizaremos Poedit y WPML para traducir wpDiscuz nuestro idioma.
Traducir plugins - caso práctico wpDiscuz
wpDiscuz, todavía no tiene traducción oficial al español. Por tanto, tuve que realizarla con los medios a mi alcance: Poedit y WPML.No empecé desde cero, buscando en Google encontre una traducción de una version anterior que me sirvió como punto de partida.
Traduciendo con WPML
El módulo de traducción de cadenas de WPML detecta los textos del plugin y los pone a nuestra disposición en el panel de administración
Es el método más rápido para traducir plugins y temas. Los archivos de idioma se incorporan automáticamente si existen en las ubicaciones correspondientes. También es posible importarlos manualmente, como fue mi caso.
Una vez incorporadas las traducciones, el primer objetivo fue traducir los elementos visibles en el front-end. De esta forma los visitantes verán los textos y en contenido en el idioma correcto.
El procedimiento es sencillo: copiamos el texto en inglés (basta con una parte) y hacemos una búsqueda. Aparecerán todas las cadenas que contengan la frase buscada. Seleccionamos la apropiada y jacemos click en traducciones
Escribimos nuestra traducción o aceptamos la que nos propone WPML. Es importante marcar la casilla Traduccion terminada o Usar mi traducción segun el caso y hacemos clic en Guardar.
WPML tiene "memoria", es decir si ya hemos traducido el texto para otro plugin o tema, o la traducción existe en el archivo de idiomas nos la propone y no tenemos que hacer nada excepto si la modificamos a nuestro gusto.
La lista de cadenas a traducir, se actualiza dinámicamente cuando se visita una página.
Una vez terminado el front-end exportamos el archivo .po y continuamos con Poedit. Es posible realizar todo el proceso con WPML, pero me resulta más cómodo trabajar con la aplicación de escritorio.
Traducir plugins con Poedit
Al ejecutar Poedit vemos las diferentes opciones de trabajo. La opción de traducir plugins y temas es de pago, pero no la necesitamos si disponemos del archivo .po o .pot correspondiente, que será lo más habitual
En nuestro caso abrimos el archivo que acabamos de exportar, WPML sigue la convención <dominio>_<idioma>, por tanto buscaremos wpdiscuz-es.po. Para seguir las normas de WordPress cambiaremos su nombre por wpdiscuz-es_ES.po. Seleccionamos Editar una traducción. Si no disponemos de un archivo .po para nuestro idioma, la opción a elegir será la segunda.
Para asegurarnos que incluimos todos los textos necesarios, vamos al menú Catálogo => Actualizar desde archivo .POT y seleccionamos el correspondiente al tema o plugin que queremos traducir (en nuestro caso wpdiscuz.pot).
Una vez hecho estp comenzamos a traducir
A tener en cuenta
- Las traducciones pendientes de revisar aparecen resaltadas
- El procedimiento de trabajo es sencillo: seleccionamos un texto y escribimos su traducción
- Si aceptamos la sugerencia propuesta, lo marcamos como revisado y pasamos al siguiente
- Poedit también tiene memoria y nos muestra diferentes sugerencias de traducción. Estas sugerencias vienen de traducciones anteriores o de sistemas de traducción online. La versión gratuita está limitada a un máximo de 10 traducciones desde la web.
Así seguimos hasta terminar de traqducir todos los textos. Es hora de validar nuestras traducciones,
Hacemos click en validar y nos aparecerán marcadas las traducciones que neceisten ser revisadas. casi siempre por motivos de incorcondancia con la puntuación, mayúsculas y otros motivos. Hacemos la modificaciones pertinentes y listo.
Si tenemos WPML importamos el .po corregido en nuestro WordPress, y si no es así subimos los archivos de idioma a la carpeta correspondiente de nuestro servidor.
Conclusión
Hemos visto como traducir plugins y temas en WordPress empleando Poedit y WPML. Aunque ambas herramientas permiten realizar la totalidad del trabajo, su uso combinado nos facilita la tarea. Como caso práctico hemos traducido la versión actualizada de wpDiscuz al castellano.
¿Y tú que herramientas usas para traducir plugins y temas ven WordPress? Tus comentarios sin duda alguna enriquecerán este artículo. ¡Únete a la dicusión!