Internacionalización de Plugins y Temas en WordPress

El proceso de Internacionalización de un Plugin o Tema nos permite que este pueda ser traducido a otros idiomas. En este HowTo para aprenderás paso a paso como internacionalizar tus propios Plugins y Temas de WordPress.

Para que un Plugin o Tema pueda ser internacionalizado primero tendremos que prepararlos. No importa el idioma que utilicemos inicialmente ya que cualquier usuario podrá traducirlo sin problemas.

Este proceso tan sólo nos llevará unas líneas de código.

Habilitando Traducciones

WordPress nos ofrece una gran variedad de funciones para habilitar las traducciones de textos, pero nos vamos a centrar en las más utilizadas:

  • __( «texto que deseas traducir», clave_internacionalización )
  • _e( «texto que deseas traducir», clave_internacionalización )
  • _x( «texto que deseas traducir», clave_internacionalización )

La primera toma la cadena a traducir y devuelve la traducción en caso de que esta exista. Suele ser utilizada en funciones ya que con anterioridad se necesita procesar la traducción.

La segunda, consulta si la cadena existe y la imprime directamente en pantalla.

La tercera nos va a prevenir contra colisiones de textos o palabras coincidentes.

Ambas necesitan que le indiquemos una clave que será la que tengamos definida en nuestro Plugin o Tema como Text Domain. Veamos un ejemplo de aplicación en un Plugin:

Traducir textos directamente

Es este ejemplo vamos a traducir directamente código HTML para ser impreso en pantalla.

Para traducir este código HTML tendremos que realizar lo siguiente:

Traducción a través funciones

En el siguiente ejemplo estamos incluyendo una nueva página al menú a un Plugin de WordPress por lo que no estamos traduciendo directamente el texto, sino que antes este debe ser procesado. Para ello usaremos la función __():

Es importante tener claro el uso de __() ya en caso de utilizar la función _e() el texto no será traducido.

Escapando traducciones

Hay varias funciones que nos permiten escapar valores a la hora de realizar traducciones.

  • esc_html__() escapa código html para que este pueda ser mostrado
  • esc_attr__() recibe la traducción y la escapa para su uso seguro en un atributo.
  • esc_attr_e() visualiza la cadena traducida que ha sido escapada en un atributo.
  • esc_html_e() visualiza la cadena traducida que ha sido escapada para uso seguro en HTML.

Traduciendo JavaScript

En ocasiones incluimos cadenas de texto en nuestros códigos JavaScript y no sabemos como actuar para poder realizar su traducción.

Para ello WordPress pone a nuestra disposición la función wp_localice_script( manejador, nombre, datos). Esta recibe 3 parámetros:

  • El manejador es el identificador que tiene asignado el script.
  • El nombre de la variable que contiene los datos y debe ser único.
  • Un array de datos.

Veamos un ejemplo de uso:

Implementación de Traducciones

Una vez hemos preparado todos los textos, el siguiente paso será decirle a WordPres dónde se van a ubicar las traducciones de nuestro tema o plugin.

Para poder cargar el Text-Domain de nuestro plugin o tema se usan 2 funciones, una de ellas para temas y otra para plugins:

  • load_theme_textdomain( ‘text-domain’ , ‘directorio’ )
    Debe ser llamada usando el hook after_setup_theme que es llamado durante cada carga de página después de que el tema ha sido inicializado.
  • load_child_theme_textdomain( ‘text-domain’ , ‘directorio’ )
    Igual que el anterior pero para traducir temas hijos.
  • load_plugin_textdomain( ‘text-domain’ , ‘directorio’ )
    Debe ser llamado usando el hook plugins_loaded que es ejecutado una vez los plugins han sido cargados.

Veamos como proceder con la internacionalización de un Plugin, donde vamos a indicar que el directorio de idiomas esta en languages/. Recuerda que el directorio lo tendrás que crear manualmente:

Lo que hemos hecho …

Hagamos un breve resumen de los pasos que hemos realizado:

  1. Hemos incluido la palabra clave Text Domain y su valor correspondiente en nuestro Tema o Plugin.
  2. Hemos procedido a implementar traducciones en todos los textos de nuestros ficheros del Tema o Plugin.
  3. Y por último hemos incluido la función encargada de la internacionalización de nuestro plugin o tema indicando cuando debe ser cargadas y en qué directorio debe ir a buscar los idiomas.

Finalizando

Por cada idioma dentro de nuestro directorio languages/ tendremos dos 2 ficheros (uno con extensión .mo y otro .po):

  • El fichero con extensión .po es legible y se puede leer pero es de un tamaño mayor.
  • El fichero con extensión .mo es de menor tamaño e ilegible para el ser humano ya que se ha  convertido en binario para ser interpretado por WordPress.

Una vez nuestro tema esté listo para ser traducido ya no tenemos porqué ser nosotros los que realicemos la tarea de traducción sino que el destinatario o la comunidad podrían realizar dicha tarea.

Personalmente suelo utilizar el plugin loco Translate ya que permite realizar una traducción a otro idioma.

Tan solo tendremos que seleccionar el Plugin o Tema que deseamos traducir desde el menú de loco translate y a continuación pulsamos en crear una nueva plantilla.  Este nos crea en el directorio languages/ un fichero de plantilla cuyo nombre está asociado a vuestro Text Domain (artegrafico-miPlugin.pot)

A continuación creamos un nuevo idioma e indicamos la ubicación de este dentro de nuestro Plugin o Tema. Pulsamos en «comenzar a traducir» y ya podemos empezar a incluir las traducciones de todas las cadenas que incorporamos anteriormente.

Se nos crearán los ficheros de traducción que hemos visto con anterioridad:

La localización de las funciones de WordPress están en el directorio wp-includes/110n.php

Etiquetado

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.