Como crear tus propias traducciones de WordPress

Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someonePrint this page

El motor interno de WordPress, y la mayoría de extensiones y plantillas que podemos añadirle, pueden usarse en nuestro idioma gracias al sistema gettext. Este sistema, permite la traducción de aplicaciones mediante unos archivos externos, de manera que no tenemos que traducir directamente sobre el código fuente de la aplicación. Lo que sin duda es una garantía de que podemos estar seguros de que no vamos a modificar por error alguna parte del código fuente que no deba ser modificada.

Este artículo es una introducción para aquellos que no han tenido contacto con este sistema y están interesados en crear sus propias traducciones, bien para uso personal, o para distribuirlas.

Antes de nada, tenemos que asegurarnos de que tenemos configurado nuestro WordPress para usar las traducciones del idioma que nos interesa, para ello hay que mirar en el archivo wp-config.php y buscar esta línea:

define ('WPLANG', '');

Que dejaremos así:

define ('WPLANG', 'es_ES');

(en el caso de que vayamos a usar traducciones es_ES)

Usaremos para los ejemplos la plantilla K2, podéis descargar la última versión aquí.

Una vez descargado y descomprimido el archivo zip de K2, podemos encontrar fácilmente un archivo llamado k2.pot

Este archivo es el que ha resultado de extraer todas las cadenas que pueden traducirse del código fuente de la plantilla, y servirá como punto de partida y referencia.

Lo primero que tenemos que hacer es realizar una copia de este archivo a la que le daremos nombre conforme al formato “k2-ii_PP.po”.

Donde ii es el código iso correspondiente al idioma y PP es el código iso correspondiente al país.

Por ejemplo, para la traducción de K2 al español de España sería “k2-es_ES.po“, o para Argentina sería “k2-es_AR.po“. Este formato es estándar para todas las traducciones que vayamos a realizar con este sistema de traducción. Aunque algunos autores no siguen este estándar, muy pocos pero los hay, conviene revisar la documentación de la extensión o plantilla que vayamos a traducir para estar seguros del formato a usar.

Será el archivo con extensión .po el que usaremos para realizar nuestra traducción. El archivo está en formato de texto plano, por lo que si quisiéramos podríamos editarlo con cualquier editor de texto, pero para hacerlo más cómodamente usaremos el editor de catálogos (así se les llama a estos archivos) POEdit que es el más conocido y está disponible para Windows, Linux y Mac.

POEdit con K2Una vez instalado POEdit, abriremos nuestro archivo .po (k2-es_ES.po en mi caso), y tendremos una interfaz muy sencilla (como en la imagen) donde podremos ver en todo momento en dos columnas el texto original a traducir y el texto traducido, que en este momento debería estar vacío. Y debajo de estas columnas dos cajas de texto, una para el texto original (que no podemos modificar) y otra la traducción, donde escribiremos el texto traducido.

Opciones catálogoAntes de empezar la traducción (aunque se puede hacer en cualquier momento) podemos ir al menú catálogo y editar las opciones donde podemos especificar, como veis en la captura adjunta, el nombre y versión de la aplicación que vamos a traducir, nuestro nombre, nuestro correo electrónico, el idioma al que vamos a traducir, el país del idioma, y por último el juego de carácteres a usar (que deberá coincidir con el que tengamos configurado en las opciones de WP). Hay otros campos, pero estos son opcionales y normalmente sólo necesarios cuando ya vienen marcados de forma predeterminada.

Y en cualquier caso la traducción normalmente funcionará incluso aunque no hayamos rellenado los campos mencionados.

Compilar archivo .moAsí que ya “sólo” nos queda traducir todas las cadenas de texto a nuestro idioma, una vez traducido el archivo, al guardar cambios POEdit nos creará automáticamente un archivo con el mismo nombre pero con extensión .mo, para ello nos aseguraremos de que en las preferencias del programa tenemos marcada la casilla correspondiente (como se ve en la imagen).

Este es el archivo, en formato binario, que K2 usará para mostrarse en nuestro idioma, y debe estar dentro de la carpeta de K2, en otras plantillas o extensiones puede estar en otra ubicación, dependerá de las instrucciones que se nos indiquen en la documentación correspondiente (aunque por norma general los archivo .mo suelen ir en la misma ruta donde se encuentre la plantilla o extensión de WP).

Es una práctica muy recomendable ir guardando cambios conforme avancemos en la traducción, y además podemos usar el archivo .mo de la traducción parcial para ir probando que tal queda en pantalla (lo que no esté traducido aparecerá en el idioma original).

Hasta aquí la parte básica, si te interesa saber un poquito más y todavía no te has dormido ;) puedes seguir leyendo…

Bien, supongamos que ya hemos terminado nuestra traducción de K2 y nos encontramos con que a los 2 días sacar una nueva versión de la plantilla… ¡genial!, pero… resulta que ahora vemos en inglés textos que ya habíamos traducido en la versión anterior, ¿qué ha ocurrido?.

Aquí es donde tenemos que agradecer la existencia de aplicaciones como POEdit, si curioseamos un poco en el archivo .po (o en el .pot, para el caso sería lo mismo), veremos que el formato de las cadenas a traducir es así:

#: 404.php:11
msgid "Error 404 - Not Found"
msgstr ""

La primera línea, nos está indicando en qué parte del código fuente de K2 se encuentra la cadena de texto (segunda línea) que vamos a traducir. En el ejemplo que estamos viendo nos dice que se encuentra en la línea 11 del archivo 404.php

Esta información es vital, ya que si la cadena de texto cambia de ubicación (de línea o de archivo) o el texto no es el mismo, ya no servirá la traducción que hemos realizado para esa cadena.

Luego, ¿por qué vemos en inglés ese texto que ya teníamos traducido?, efectivamente… porque en la nueva versión el texto ha sufrido algún tipo de cambio (ubicación o contenido). Y por lo tanto el archivo compilado .mo está desfasado con respecto a la plantilla. Y ante dicha situación se muestra el texto original del código fuente en lugar del texto traducido desfasado.

Actualizar archivo .poSi tenemos el archivo .pot original actualizado (también sirve un .po renombrándolo) tiene fácil solución gracias a POEdit.

Basta con abrir nuestro .po traducido, e ir al menú catálogo y seleccionar la opción de actualizar desde archivo POT.

Con esta operación POEdit buscará por nosotros todos los cambios que se han producido en la nueva versión del .pot y también las nuevas cadenas que pueda haber. Y al final del proceso nos mostrará una ventana informándonos del total de cambios y/o cadenas nuevas.

Tras cerrar esta ventana informativa y volver a nuestra ventana de edición habitual, veremos que habrán aparecido con fondo verde las nuevas cadenas (como cuando abrimos un .po sin traducir) y con fondo amarillento las cadenas con cambios.

Es importante revisar el texto de cada una cuidadosamente, ya que en muchas ocasiones será el mismo y no necesitaremos volver a traducirlo, pero en otras ocasiones puede haber cambios que quizás no apreciemos a primera vista, o el texto ha podido cambiar totalmente y ya no servir para el mismo propósito que anteriormente.

De esta manera, con esta función que nos brinda POEdit nos ahorramos tener que volver a traducir desde cero todo el archivo .po de la nueva versión.

También es conveniente que tengáis en cuenta que podéis encontraros llamadas a variables entre los textos a traducir, por ejemplo una cadena para traducir así:

Continue reading ‘%s’

Es muy importante que respetéis la parte de ‘%s’ ya que esto será sustituido, en este caso, por el nombre de la entrada que corresponda en ese momento (esta es la típica línea que se muestra para continuar leyendo una entrada que no se muestra entera en el índice del blog).

También nos podemos encontrar variables del tipo %d o %1$s, todas ellas las podemos cambiar de ubicación en el texto si la traducción así lo requiere para que la frase quede correctamente en nuestro idioma, pero es importante no eliminar ningún símbolo, ya que eso podría provocar errores no deseados.

Bueno y creo que voy a dar por terminado el artículo que me ha salido mucho más largo de lo que en un principio pensaba… en todo caso terminar diciendo que para que todo esto funcione en nuestro WordPress, el PHP de nuestro servidor tiene que estar compilado con el módulo gettext, que es lo habitual pero me he topado con algún servidor web donde no era así.

Y si aún así, y después de repasarlo todo no te funcionan las traducciones, quizás te sirva esta solución a problemas con las traducciones de WordPress.

Este artículo participa en la sección de Bloguers invitados de Blogmundi.com

16 pensamientos en “Como crear tus propias traducciones de WordPress

  1. Pingback: Como crear tus propias traducciones de WordPress » BlogMundi

  2. HodracirK

    Sr felicitaciones por el blog y felicitaciones por el post en blogmundi, es un gran paso para el éxito.. Saludos hermano

  3. ju4nm4

    no entendi ni ñ, menos mal que no la usaste! haber si lo leo de vuelta y lo entiendo mejor :S porque necesitor traducir algo jejeje

  4. Hispania

    Y en aquellos plugins/themes que no traen el dichoso archivo .po ¿ como traducimos ? Me han dicho que podemos crear este archivo desde el propio Poedit pero no veo ninguna opción en el programa para hacerlo :-( ¿ Te importaría explicarlo o dirigirme a algún sitio donde poder crearlo ?

    Gracias

    1. Samuel

      En el tercer comentario de esta misma entrada, tienes un enlace a un artículo que explica como preparar un plugin para usar traducciones si no está preparado ya.

      Si el plugin sí que está preparado (leete el artículo que te digo), pero únicamente carece de archivo .po o .pot (que básicamente son lo mismo, pero el segundo además sirve para actualizar archivos .po ya traducidos), lo puedes generar siguiendo el punto 3 del artículo que te comento.

      De todos modos, también existe ahora el plugin Codestyling Localization, que te gestiona desde el propio WordPress todo el tema este de generar las traducciones. Yo no lo uso, no te puedo decir que tal va, pero tiene buena pinta y es compatible hasta la próxima versión 2.9 de WP.

  5. lukas

    Hola Saludos a todos

    Me he estado leyendo todo este contenido y creo que me podeis servir de ayuda

    Vereis mi pregunta es:

    Un texto normal que hay en cualquier PHP como por ejemplo: Mensualidades

    podriamos poner : para asi a la hora de utilizar un traductor sea todo correcto

    Pues mi pregunta es : como se y como coloco en el .po esas lineas para que me las detecte y las traduzca.

    Gracias y Saludos

  6. Alejandro Siso

    Gracias Samuel, EXCELENTE explicación, creo que inmejorable!!!, desde hace tiempo estaba buscando alguien que lo explicra tan bien como este articulo que me ha quedado clarisimo. Desde ahora cuenta con un lector mas de tu blog por aca por Venezuela. Saludos

  7. humala

    Estoy armando un template para wordpress y no encuentro la manera de agregar un nuevo texto para traducirlo posteriormente. Estoy usando poedit, tengo el POT de una plantilla, el detalle es que no encuentro por ningun lado como agregar una seccion mas para traducir, tendre que agregarlo por medio del notepad?

    1. Samuel

      1. Tienes que preparar el código de tu theme para que pueda ser traducido.
      2. Tendrás que generar un archivo .pot específico para tu theme, no sirve usar el de otro theme.

      En el tercer comentario de este artículo hay un enlace a un tutorial de como hacerlo. Y si no te aclaras busca en Google que encontrarás muchos más.

  8. Belén

    Hacía mucho tiempo que quería aprender a manejar los .pot, .po, .mo… Al menos saber lo que eran y para qué sirven. MUCHÍSIMAS GRACIAS porque lo he comprendido, lo he aprendido y me ha funcionado, así que a partir de ahora y con ayuda de este post, ya sé utilizar estas traducciones ;))) Muchas gracias

  9. Javiera

    Hola, hay alguna forma de traducir el sitio en 3 idiomas diferentes y que despues el usuario a través de “banderas” por ejemplo, pueda seleccionar el idioma que quiere ver el sitio y que este internamente llame al archivo .po para su traducción?

    Gracias.

  10. Gloria Serrano

    Hola Samuel, Gracias por tu post, está buenísimo y me sirvió perfectamente, pero ahora tengo una duda que espero me puedas orientar. ¿Qué debo hacer para agregar mas líneas de texto a mi archivo de poedit? es decir quiero introducir otras lineas o frases de texto en inglés del lado izquierdo y después traducirlas al español del lado derecho para posteriormente salvar mi archivo nuevamente y subirlo al servidor reemplazando el archivo anterior… Es posible hacer ésto asi de sencillo?

    1. Samuel Aguilera

      Gloria, no es así de sencillo no. Si has traducido el archivo .po y aún así hay textos que siguen saliendo en inglés en el plugin o theme que estás traduciendo, puede ser debido a: 1. Que el archivo .po no está actualizado, 2. Que en el código fuente del plugin/theme esos textos no están preparados para ser traducidos.

      Puedes probar con este plugin para traducir desde dentro del propio WordPress. Si el problema fuera el que te he explicado como punto 1, con el plugin seguramente podrías traducir lo que te queda. Si el problema es el del punto 2, tendrás que contactar con el autor del plugins/theme que estás traduciendo.

Deja un comentario

Tu dirección de email no será publicada. Campos obligatorios marcados con *