Para poder ejecutar sitios WordPress en modo multilingüe es necesario personalizar tanto los contenidos como el Tema. En esta entrada describiré qué hemos hecho para personalizar completamente nuestro Tema para wpml.org.

El proceso completo para la personalización del Tema incluye:

  1. Identificar y marcar aquellos textos que deban ser traducidos.
  2. Recoger todos los textos para traducir.
  3. Traducir los textos.
  4. Utilizar la traducción cuando se muestra el Tema en diferentes idiomas.

Dado que WordPress utiliza la función GetText para su propia personalización, es natural que también utilicemos la misma solución para personalizar el Tema.

Convertir los textos del Tema en entidades traducibles

Normalmente, los Temas de WordPress tienen textos incluidos. Por ejemplo, tomemos comments.php. El formulario para dejar comentarios nuevos solicita al visitante ingresar su nombre, dirección de correo electrónico y sitio web e incluye un botón para enviar dicha información.

Traducción y el comando "echo"

He aquí una versión muy simple de un campo solicitando el nombre de pila:

<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" />
Name <?php if ($req) echo ('(required)'); ?>

La cadenas ‘Name‘ y ‘required‘ (que es opcional) necesitan ser traducidas. Para solicitar a la función GetText la traducción, las incluiremos en la llamada a la función GetText echo: _e().

<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" />
<?php _e('Name', 'wpml_theme'); ?> <?php if ($req) _e('(required)', '
wpml_theme'); ?>

¿Puede advertir la diferencia?

Traducción sin el comando "echo"

Cuando no necesite utilizar la función echo para mostrar la cadena (por ejemplo, cuando constituya el argumento de una función), deberá utilizar la llamada __(). Esta es similar a _e(), pero no muestra la traducción. Por ejemplo, al mostrar el número del comentario utilizamos:

Original:

<?php comments_number('No hay respuesta', 'Una respuesta', '% respuestas');?>

Luego de utilizar la llamada a GetText:

<?php comments_number(__( 'No hay respuesta', '
wpml_theme'), __('Una respuesta', 'wpml_theme'), __('% respuestas', 'wpml_theme'));?>

El segundo argumento de cada llamada corresponde al dominio del texto. Esto permite que los textos sean traducidos en el contexto correspondiente. Aún cuando el plugin o el mismo WordPress incluya la misma cadena en contextos diferentes, GetText proveerá la traducción correcta dado que le hemos proporcionado nuestro propio dominio del texto (wpml_theme).

Traducción con parámetros

Algunas veces, los textos tienen parámetros. Por ejemplo, un texto que indica quién escribió una entrada:

by <?php echo(ucwords(the_author('', false)) ); ?>

No podemos traducir la palabra ‘by’ aisladamente. La traducción será para frases completas. El traductor debe traducir ‘by SOMEONE’ (por alguien) y nosotros completaremos quién es él más tarde. Para ello, utilizaremos un parámetro.

<?php printf(__('by %s', '
wpml_theme'), ucwords(the_author('', false))); ?>

Ahora, el traductor traducirá ‘by %s’ como una frase entera. Utilizamos la función __() para traducir la cadena y la instrucción printf de PHP para insertar el nombre del autor de vuelta en la cadena.

Agrupar los textos para traducir

Una vez que tengamos todos los textos del Tema insertos en las llamadas a la función GetText, es tiempo de agruparlos en un solo archivo, el cual traduciremos con posterioridad.

Permítame introducir el programa poedit. Es una utilidad que puede crear y traducir archivos .po (Portable Objects, Objetos Portables) y convertirlos al formato .mo (Machine Object, Objetos del Motor), los cuales pueden ser importados y utilizados por WordPress para traducir el Tema.

poedit puede revisar muchos tipos diferentes de archivos, incluyendo C, CPP, PHP y otros. Pero, en lugar de utilizar poedit, haremos algo un poco diferente, mucho más fácil.

Para personalizar nuestro propio Tema, hemos utilizado nuestro propio convertidor de archivos PHP-a-.po. Es una herramienta de distribución libre que le permite subir un archivo ZIP conteniendo los Temas. El convertidor generará instantáneamente un archivo .po para que lo descargue. Ese es el archivo que necesita para comenzar la traducción.

Traducir los textos

Ahora que dispone de un archivo .po (o .pot – Portable Object Template, Plantilla de Objectos Portables), es tiempo de hacerlo traducir. Cada archivo .po contiene cadenas con su traducción correspondiente a un solo idioma, por lo que necesitará tantos archivos .po como idiomas estén definidos en el Tema. Luego, a partir de cada archivo .po, podrá generar el archivo .mo correspondiente (que WordPress necesita).

Si trabaja con traductores, simplemente envíe los archivos .po. Cada traductor deberá traducirlos y devolverlos.

Nosotros ya hemos realizado las traducciones a cada idioma. Una vez más, ello fue logrado gracias a nuestros propio servicio de traducción.

He aquí cómo funciona:

  1. Genere una cuenta en ICanLocalize (es gratis).
  2. Genere un proyecto de textos fuentes (aún sigue siendo gratis).
  3. Suba el archivo .po y elija los idiomas destino a los cuales hará traducir los textos.
  4. El sistema cuenta la cantidad de palabras en el archivo y le solicita realizar el depósito. El depósito se calcula de acuerdo a la fórmula "US$ 0.09 x palabras x cantidad de idiomas". Por ejemplo, traducir nuestro propio Tema a español y alemán costaría US$ 30 (en total).
  5. Los Traductores realizan la traducción.
  6. Descargue todos los archivos .po traducidos (un archivo .po por idioma), prontos para ser utilizados por WordPress.

Utilizar las traducciones en WordPress

Ahora que dispone de los archivos .po, uno por idioma, necesita generar los archivos .mo correspondientes para que WordPress pueda utilizarlos.

Edite cada archivo .po con poedit y simplemente ejecute el comando Save. poedit generará un archivo .mo por cada archivo .po guardado. Es una operación automática.

Los nombres de los archivos .mo son importantes. Todos los archivos .mo se guardarán en la carpeta del Tema y sus nombres indicarán el idioma de la traducción. Puede elegir cualquier designación pero debería mantener las convenciones estándar del servicio. Normalmente es idioma_PAÍS (solo dos letras por parámetro). Por ejemplo, para proporcionar la traducción alemana, debería designarlo como de_DE.mo.

Para mayor referencia, puede consultar la lista de nombres utilizados por WordPress en el Proyecto WordPress i18n. Recuerde que algunas traducciones deben ser recogidas directamente desde WordPress, por lo que mantener la nomenclatura es crucial.

Dónde instalar los archivos .mo

Un juego de dos archivos .mo son necesarios para obtener una traducción completa de su Tema:

  • Los archivos .mo de su Tema.
  • Los archivos .mo de WordPress.

Hasta ahora hemos discutido sobre los archivos .mo de su Tema. Es necesario que los instale en el mismo directorio que su Tema.

Para obtener los archivos .mo de WordPress, siga las instrucciones siguientes:

  1. Visite el Proyecto WordPress i18n.
  2. Elija el idioma que necesite.
  3. En ese mismo directorio, vaya a tags/WP_VERSION/messages.
  4. Ahí encontrará ambos archivos .mo y .po. Descargue los archivos .mo y guárdelos en el directorio de idiomas de WordPress. Generalmente es wp-includes/languages. Si no existiera, deberá crearlo.

Elegir el nombre estándar para cada idioma

Finalmente, deberá indicar a WPML cuál es el nombre estándar elegido para cada idioma.

Personalización del Tema de WPML
Personalización del Tema de WPML
  1. Inicie una sesión en WordPress.
  2. Acceda a la sección de administración de WPML.
  3. Vaya hasta la opción ‘Personalización del diseño‘ y ábrala.
  4. Para cada idioma, ingrese el nombre estándar (como de_DE para alemán).

Cuando dé la orden de guardar, WPML verificará que el archivo .mo exista tanto en el directorio del Tema como en el del idioma de WordPress. Si alguno de ellos faltare, recibirá una advertencia aunque igualmente podrá salvar el trabajo.

Ahora, visite su sitio web desde distintos idiomas y verá que se despliega correctamente. No solo las entradas y las páginas estarán personalizadas sino todo lo demás en el Tema.

Resumen

Este ha sido un artículo largo y es bueno ver que ha leído todo el material hasta acá.

Aunque parezca un proceso complicado, generar Temas multilingües es en realidad sencillo. Es una buena práctica generar todos los Temas con el concepto de traducción incluido. No solamente constituye una característica poderosa de publicidad sino un ahorro real de tiempo para sus clientes. Y lo apreciarán mejor cuando comiencen a traducir sus propios sitios web.

El valor agregado de un Tema premium puede incrementarse enormemente si ya viene traducido a diversos idiomas, y con un archivo .pot, permitiendo que la traducción a otros idiomas sea una acción sencilla. Casi todos los textos son compartidos entre diferentes Temas, por lo que esto constituye una pequeña y única inversión en tiempo que puede ser reutilizada una y otra vez en el futuro.

Una respuesta para “Personalización del Tema en WordPress”

  1. Gracias por el tutorial, me ha sido de gran ayuda, había leído otros sobre el mismo tema, pero con el tuyo me ha quedado todo claro.

    Saludos y sigue así.