Internacionalización de temas y plugins en Wordpress | Adrenalina

Internacionalización de temas y plugins en WordPress

Publicado Por | 19 septiembre , 2013 | SEO Técnico | One Comment
internazionalizacion de wordpress

Qué es la internacionalización?

Cuando hablamos de internacionalización nos referimos a facilitar la adaptación a diferentes idiomas y regiones sin cambios complejos de código.

Por otro lado, la localización es la adaptación a una región o idioma específico, es decir, el proceso de traducción.

Cuando creamos temas y/o plugins para wordpress siempre deberíamos tener en mente la internacionalización, ya que solo nos aporta ventajas a cambio de un esfuerzo minúsculo, a la larga siempre nos facilitará la reutilización de código y nos quitará de posteriores dolores de cabeza.

Temas

Para internacionalizar un tema deberemos decirle a wordpress donde puede encontrar las traducciones, en este caso las pondremos en la carpeta /languages de nuestro tema que acostumbra a ser el lugar más utilizado.
Haremos la modificaciones en el functions.php y lo engancharemos al HOOK ‘after_setup_theme’.

add_action('after_setup_theme', 'my_theme_text_domain');
function my_theme_text_domain(){
load_theme_textdomain('mytheme', get_template_directory() . '/languages');
}

Plugins

La internacionalización de un plugin es muy parecida a la de los temas, pondremos las traducciones en la carpeta que eligamos del plugin (/languages también es la más utilizada aqui) y añadiremos al archivo principal del plugin la siguiente función y el hook para engancharla a ‘init’.

function my_plugin_text_domain()
{
load_plugin_textdomain('myplugin', false, basename( dirname( __FILE__ ) ) . '/languages' );
}
add_action('init', 'my_plugin_text_domain');

Las funciones de traducción

Las funciones más utilizadas són __() y _e() donde la primera sólo busca la traducción y la segunda hace también un echo del resultado.
Así:

 _e(‘Hola’,’tema’);

mostraría “Hola” o su traducción, mientras que para utilizar la función the_content() the wordpress usariamos:

the_content(__(‘Hola’,’tema’));

Para desambiguaciones usariamos funciones equivalentes a __() y _e() como _x() y _ex() respectivamentes, que permiten introducir comentarios para el traductor.

_ex(‘mercurio’,’el planeta’,’dominio’);
_ex(‘mercurio’,’el metal’,’dominio’);
_ex(‘mercurio’,’el dios griego’,’dominio’);

Los archivos de traducción

Hay tres tipos de archivos en framework de traducción de gettext. Estos archivos son usados y generados por aplicaciones de traducción:

– Archivos POT (Portable Object Template)
El primer paso en el proceso de localización consiste en que un programa busca en la carpeta que nosotros le marcamos cada mensaje dentro de las funciones __(), _e() u otras (ojo!, estas funciones son configurables y a veces no vienen predefinidas). La lista de strings traducibles se pone en el archivo POT y será la base de la traducción.
– Archivos PO (Portable Object)
El segundo paso en el proceso de localización consiste en que el traductor traduce todos los mensajes del archivo al idioma deseado, de manera que en el archivo PO se guarda el string original y el string traducido.
– Archivos MO (Machine Object)
Por último, el archivo po se traduce a lenguaje máquina, de manera que las traducciones se obtengan mucho más rápido en tiempo de ejecución.

En nuestra carpeta /languages pondremos los archivos PO y MO, aunque los archivos PO no són realmente necesarios nos servirán para arreglar o modificar traducciones a posteriori.

Para generar estos archivos existen multitud de programas como por ejemplo el Poedit o el Pootle.

Consejos

no uses variables php en las funciones de traducción, ya que los programas como el poedit que leen tu código para extraer los strings a traducir sólo son parseadores y no ejecutan el código, no pueden saber el valor de $string

        $texto=__($string, ‘dominio’); //esto es incorrecto

traduce frases y no palabras, ya que cada idioma tiene peculiaridades respecto a la estructura de creación de frases, es decir, 2 palabras pueden tener un orden en un idioma per en otro ir al revés o perder todo el sentido.

utiliza la desambiguación, cuantas veces nos habremos encontrado con que fuera de contexto una palabra o frase quiere decir totalmente otra cosa, utiliza la desambiguación para facilitar la correcta traducción.

no uses código html en el string a traducir, no es necesario complicar la vida del traductor si podemos sacar el codigo html del string.

Autor: Lluis Torns

Estudiamos y analizamos su negocio en profundidad, definimos objetivos y planteamos la estrategia de marketing más adecuada centrándonos en conseguir cada uno de los objetivos propuestos. Solicita Presupuesto Ahora

Uso de cookies

En este sitio web utilizamos cookies propias y de terceros para mejorar nuestros servicios, para que usted tenga la mejor experiencia de usuario y analizar su visita. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.