Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo traducir un tema de WordPress

Imago voragine.net
[actualizado el ]

Para conseguir un tema de WordPress traducible tenemos que etiquetar adecuadamente las cadenas a traducir en el código, crear un archivo con todas estas cadenas y sus equivalentes en el idioma deseado, y configurar nuestro tema con las funciones adecuadas para que utilize los archivos de traducción.

Etiquetando las cadenas a traducir en el código

Para ello utilizamos la notación __('cadena a traducir','nombre_tema') y _e('cadena a traducir','nombre_tema'). La primera sencillamente nota que es una cadena a traducir, la segunda además hace echo de la cadena. En ambos casos el primer parámetro es la cadena; el segundo indica cual es el contexto de la traducción, normalmente se utiliza el nombre del tema. La cadena a traducir puede contener etiquetas HTML y para evitar errores de codificación, es mejor usar códigos HTML para los caracteres especiales, como las tildes.

Si una cadena contiene variables debemos usar parámetros de sustitución (placeholders) para insertar información de manera dinámica. Para indicar la correspondencia entre variables y parámetros de sustitución, usaremos las funciones de PHP printf o sprintf. La primera es equivalente a _e y la segunda a __.

Creando un archivo con las cadenas de traducción

El paquete gettext y el sistema de archivos .po y .mo permite crear archivos con todas las cadenas a traducir automáticamente. La mejor opción es instalarse el programa PoEdit, una interfaz para gettext que facilita mucho el proceso. El archivo .po contendrá todas las cadenas y sus traducciones; cuando salvemos el archivo se generará automáticamente otro archivo con la compilación del archivo .po. Este otro archivo .mo es el que usará la web para traducir.

Conviene tener en cuenta las reglas de nomenclatura de estos archivos, ya que nombrarlo inadecuadamente puede hacer que WordPress no tenga en cuenta las traducciones. El nombre debe estar formado por el código del idioma y el código del país. Por ejemplo, de_DE.mo para el alemán.

Configuración del tema para que sea traducible

Para indicar a WordPress que nuestro tema es traducible tenemos que incluir una función en el archivo functions.php, crear la subcarpeta languages/ dentro de la del tema, y alojar allí el archivo .mo. También conviene alojar el archivo .po aunque no es necesario para que la traducción funcione.

La función se encargará de cargar las cadenas de traducción del archivo correcto, mediante load_theme_textdomain().

Después creamos la carpeta languages/ y subimos a ella el archivo con las traducciones.

Más información

5 comentarios

    • Por JT

    ¡Gracias por la guía! :)

    • Por Dani •

    Hola. Gracias por el post, creo que es el que más sencillo explica cómo traducir el tema. Pero llevo pegándome toda la tarde con mi wp y no hay manera.
    Creo que he seguido todos los pasos y no consigo que aparezca traducido. Estoy utilizando el tema Agreggate y la línea de código que he insertado es

    load_theme_textdomain(‘Aggregate’,get_template_directory().’/lang/es_ES.mo’);

    ¿Crees que puede haber algo mal? ¿Esa línea de código tiene que ir en algún orden determinado?

    Para más información, no he cambiado todos y cada uno de los ítems del archivo .po con el PoEdit, sino sólo unos cuantos. ¿Eso puede influir?

    Soy casi un recién llegado a WP un poco avanzado, así que muchas gracias por tu ayuda. Un saludo.

    1. Hola Dani,

      en algún otro tutorial he leído que si no llamas a la carpeta languages la cosa no funciona. Así que ese puede ser tu problema. Cambia el nombre de la carpeta de lang a languages a ver si funciona.

      Si es esto, confírmamelo para añadir la nota en el tutorial.

      Un saludo

    • Por summ3r •

    ¡Hola! ¡Buen artículo! Si estan interesados en localizar web software, PC software, móvil software o cualqier otro tipo de software, reccomendo con calor este rápido y intuitivo instrumento de localización: http://poeditor.com/.

    1. Gracias por la recomendación, summ3r. En efecto, tiene buena pinta.

Dejar un comentario

*
*

 

Un trackback