Icono del sitio Imacreste

Traducir tema o plugin de WordPress

Para traducir un tema o un plugin de WordPress se debe preparar el código fuente para que sea sencillo traducirlo a diferentes idiomas. A la hora de crear un tema o un plugin no es indispensable pero si importante para poder tener un público mayor.

Imagina que tenemos un plugin interesante, si no esta preparado para su traducción, sin conocimientos técnicos, estaremos desestimando una parte del mundo que podría estar interesante, y que con un poco más de trabajo podrían traducirlo ellos mismos.

Traducir cadenas

WordPress cuenta con numerosas funciones para la traducción de cadenas:

$variable=__('Esta es una prueba.','imacreste-tema');
echo $variable;
_e('Esta es una prueba.','imacreste-tema');

Traducir textos con variables

Si en el texto queremos incluir variables debemos usar la función de PHP: printf.

$nombre="imacreste";
$edad=21;
$nombre2="Bilbao";
printf(__('Me llamo %1$s, tengo %2$d años y soy de %3$s.','imacreste-tema'), $nombre, $edad, $nombre2);

Aunque es una función clásica de PHP su funcionamiento es muy sencillo:

Con esto podemos traducir una cadena a cualquier idioma ya que el orden de las variables dentro del texto son independientes.

Textos: Singular y plural

Normalmente cuando una variable es singular o plural hace variar el texto, para evitar tener que añadir programación extra contamos con otra función:

$contador=1; 
$nombre='imacreste';
printf(_n('%1$s: Tienes %2$d mensaje','%1$s: Tienes %2$d mensajeS',$contador,'imacreste-tema'),$nombre,$contador);

Si probamos este código con el 1, se mostrara el primer mensaje, si ponemos un numero mayor se vera el segundo mensaje.  El tercer parámetro es la variable que se mira si es plural o singular.

Como realizar las traducciones finales

Una vez tengamos nuestro plugin o tema bien preparado es necesario cargar nuestras traducciones en WordPress para que sea reconocido por el sistema y para que funcione correctamente el sistema de traducciones clásico.

function traducciones_plugin() {
 $dir= basename(dirname(__FILE__));
 load_plugin_textdomain( 'imacreste-tema', false, $dir.'/lang');
}
add_action('init', 'traducciones_plugin');

Con este código estamos indicando que los ficheros de traducciones para el tema/plugin => imacreste-tema se encuentran en la carpeta lang dentro de la dirección del plugin o tema.

Los ficheros de traducción, los que contienen los textos traducidos, deben tener el siguiente formato: imacreste-tema-ar_AR.po y  imacreste-tema-ar_AR.mo para la versión de castellano de Argentina, y imacreste-tema-es_ES.po y  imacreste-tema-es_ES.mo para la versión de castellano de España.

Para la creación de estos ficheros recomiendo usar la herramienta gratuita: poedit. Una vez descargado lo abrimos y tenemos 2 opciones:

  1. Coger un archivo po y crear uno nuevo, subiendo los textos. En este caso, abrimos el .po con un editor y cambiamos el mismo por lo que necesita nuestra plantilla.
  2. Crear uno nuevo de cero. Esta opción es un extra de la aplicación y tiene un coste de unos 25 €. Lo recomiendo.

Como siempre es necesario estar actualizado, en este caso consulta en el codex esta página.

Salir de la versión móvil