Wordpress

Como tener un WordPress Theme multilenguaje con POedit

Respuesta rápida

Para tener un WP Theme en varios idiomas es necesario el programa POedit. A su vez, es necesario declarar la funcion load_theme_textdomain($id, $carpeta_idiomas) y cambiar todas las palabras y frases estáticas dentro del WP Theme por __($frase, $id) o _e($frase, $id).

Respuesta completa

Requisitos:

Tener un Theme de WordPress -a partir de ahora WP- multilenguaje, obviamente, permite a tu theme estar en varios idiomas.

Es importante aclarar que un WP Theme multilenguaje no es lo mismo que tener una página multilenguaje.

PERO, para tener una página multilenguaje es necesario tener un WP Theme multilenguaje y un plugin multilenguaje. No conozco ningún plugin multilenguaje gratuito que me guste, así que no voy a mojarme en recomendar alguno.

¿Cuántos idiomas puede tener un WP Theme?

Se pueden tener todos los idiomas que se quieran.

¿Cómo elijo el idioma de mi WP Theme?

En la carpeta raíz de WP se encuentra el archivo ‘wp-config.php’ y dentro se define el idioma de WP.

¿Y si mi WP Theme no tiene un idioma?

Pues utilizará el que tengas por defecto. Por eso, es aconsejable que el idioma por defecto sea el inglés, y luego usaremos el POedit para traducirlo al español.

¿Cómo puedo traducir mi WP Theme a un idioma que no conozco?

Siempre puedes encontrar apoyo en la comunidad de WP, o pagando a alguien para que lo haga.

Solo tienes que pasarle el archivo .po y el podrá traducir las frases del WP Theme a partir del idioma por defecto.

Más abajo se ve como editar el archivo .po

Estructura de ficheros

Los archivos a editar pueden ser bastantes, ya que habrá que actualizar todos los templates que muestren texto, como por ejemplo, “Error 404. Not found” – “Error 404. No se ha encontrado nada”.

Personalmente, hago traducciones muy libres.

Para inicializar la funcionalidad usaré la estructura de functions.php extensions, pero las traducciones se encuentran fuera del framework.

Nuestro alisios-functions-init.php llamará a languages/init.php

Nuestros languages/init.phplanguages/functions.php habilitarán el funcionamiento de las traducciones.

I18n es el diminutivo de Internationalization porque hay 18 letras entre la i) y la (n.

La función load_theme_textdomain() recoge los parámetros.

El primero es el $id, el cual haremos referencia en cada texto que encontremos.

El segundo es el directorio donde nuestro WP deberá buscar las traducciones.

Ahora hay que modificar los templates para permitir las traducciones.

Los textos tienen distintas maneras de permitir la traducción. Por ejemplo:

Todas son igual de válidas.

Para mi Theme Alisios he tenido que modificar los templates 404.php, archive.php, loop-empty.php, search.php y searchform.php.

Como ejemplo, voy a mostrar los templates 404.php y archive.php:

Ya tenemos el código preparado. Ahora, ¡A traducir!

¿Cómo se utiliza el POedit?

En realidad es sencillo, una vez sabes como hacerlo. (Que frase más tocahuevos)

Abrimos el POedit.

POedit - Abrir Nuevo

Nos dirigimos a Archivo > Nuevo (Ctrl + N).

POedit - Seleccionar idioma

Seleccionamos el idioma de la traducción.

POedit - Ir a propiedades

Vamos a Catágolo > Propiedades.

POedit - Editar Propiedades

Editamos las propiedades poniendo nuestra información.

POedit - Palabras claves

Las palabras claves son aquellas que usaremos para traducir (__, _e, _n).

POedit - Directorio Fuente bloqueado

El directorio fuente estará bloqueado hasta que guardemos y ubiquemos el archivo. Lo guardaremos en alisios/languages.

POedit - Editar directorio raíz

Un solo punto .) significa que la carpeta raíz donde buscará las palabras claves es la actual.
Dos puntos ..) significa que la carpeta raíz donde buscará las palabras claves es la carpeta padre.
Hace búsqueda recursiva.

POedit - Hacer click en actualizar

Con la vista de contenido vacía solo hay que darle a actualizar y buscará las palabras claves en todos los archivos del directorio raíz.

POedit - Muestra nuevos y obsoletos

Las frases nuevas están pendientes de traducirse.
Las obsoletas son aquellas que dejan de existir. De éstas no te preocupes

POedit - A traducir

Ahora solo queda traducir todo y darle a Guardar

Cuando se añadan nuevos textos, o se modifiquen los que ya están, tan solo hay que darle a actualizar y POedit hará la búsqueda y la ayuda en las traducciones.

¿Qué es eso de archivo POT?

Se puede entender como archivo POT que es un archivo .po estático, es decir, no se hace búsqueda ni hay directorio raíz ni nadená, sencillamente tiene las ristras para traducir.

Los archivos .pot se pueden encontrar en formato powerpoint. Eso es debido a la extensión, si se habré con el Notepad++ o el bloc de notas verás que tiene el mismo formato que el .po

¡Ya está!

Ver Alisios v0.3

  • ronal

    No entiendo muy bien la parte de la estructura pues no dices que ficheros modifcar para lograrlo, donde empieza

    Estructura de ficheros

    • Hola Ronal,

      La verdad es que me volví un poco loco a la hora de estructurar el código. Te lo simplifico.

      Añadir en function.php la siguiente línea y la siguiente función:
      add_action( ‘after_setup_theme’, ‘my_load_i18n’ );

      function my_loadl18n() {

      load_theme_textdomain( ‘alisios’, get_template_directory() . ‘/languages’ )
      }

      En el theme debes tener la carpeta ‘languages’. A partir de aquí puedes continuar el post a partir de “Los textos tienen distintas maneras de permitir la traducción”

      Gracias por el feedback =)

      • ronal

        Si la verdad que lo hice como tu dices y ya me funciono muy bien.
        gracias por el aportazo, es un buen post y ya pude internacionalizar mi tema