Posts Tagged “gettext”

Como ya mencioné en el artículo sobre qué hacer cuando el archivo .mo de traducción del tema de WordPress no funciona, para traducir un tema de WordPress en primer lugar es necesario aplicar las funciones __() y _e() a todas las frases y expresiones que se quieran traducir contenidas en los archivos del tema. La función __() devuelve la expresión traducida, mientras que la función _e() devuelve la expresión traducida y además la muestra por pantalla (echo), siempre que se disponga del archivo de traducción adecuado con extensión .mo. La mayoría de los temas vienen con las funciones __() y _e() aplicadas, aunque hay algunas expresiones en las que deberemos añadirlas nosotros a mano. Como se explica en el artículo mencionado, en las funciones __() y _e() también es necesario indicar el normbre del tema, de la forma:

_e('This post was written by ','nombre_tema');

y especificar que cargue el el archivo de localización .mo del tema añadiendo la línea

<?php load_theme_textdomain('nombre_tema'); ?>

en algún archivo que se cargue siempre (como header.php).

Una vez tengamos todas las expresiones que queremos traducir con las funciones __() y _e() aplicadas, hay que utilizar la herramienta gettext, que rastrea todos los archivos del tema y extrae todas las expresiones que encuentra que utilicen las funciones __() y _e(). Las expresiones las almacena en un archivo de texto con extensión .po. Existen muchas versiones de herramientas gettext, por ejemplo el popular programa PoEdit trae entre sus archivos el ejecutable xgettext.exe.

Para utilizar el programa xgettext, los pasos básicos a seguir son:

1.- Introducir en un archivo de texto una lista de los archivos a rastrear. Se puede hacer desde la carpeta donde tengamos el tema con “dir > archivos.txt” desde la línea de comandos y después editar el archivo para quedarnos sólo con la lista de archivos PHP.
2.- Ejecutar desde la línea de comandos “PATH c:\archivos de programa\poedit\bin” (o la ruta del ejecutable xgettext.exe) para que lo tengamos disponible desde la carpeta del tema.
3.- Ejecutar xgettext de la siguiente forma (todo en una línea):

xgettext.exe --keyword=__ --keyword=_e --language=PHP
--files-from=archivos.txt --from-code=UTF-8 -d es_ES

lo cual generará un archivo es_ES.po con todas las expresiones que haya encontrado en las funciones __() y _e(). Si queremos añadir nuevas expresiones para traducir a un catálogo .po ya existente, hay que utilizar -j:

xgettext.exe --keyword=__ --keyword=_e --language=PHP
--files-from=0.txt -j --from-code=UTF-8 -d es_ES

Una vez tengamos el archivo .po generado lo podemos traducir con la ayuda del programa PoEdit, que también genera el archivo .mo final.

Más info: Localización con WordPress

Etiquetas: , , , , , , , , ,

Comments 1 Comentario »