Icono del sitio Imacreste

Preparar WordPress para su traducción

Cuando creamos un tema, un plugin o un widgets de WordPress, debemos pensar que en ocasiones lo usarán en instalaciones que requieran tener varios idiomas, y por eso es importante preparar nuestros desarrollos pensando en que sean fáciles de traducir.

Funciones WordPress de traducción

Para ello, Wordpress cuenta con las siguientes funciones:

$cadena=__('texto a traducir','mi-plugin');

Es un doble guión bajo, que permite 2 parámetros.  El primero es el texto a traducir y el segundo es el nombre clave para saber de donde extraer la traducción. De esta forma, ya podremos usar el sistema de traducciones de WordPress. De forma resumida consiste en un fichero, por idioma, en donde se coloca el texto del primer parámetro y su traducción para el idioma del fichero.

//Ejemplo de un fichero de traducción, mi-plugin-es_ES.mo
msgid "Previous post:"
msgstr "Entrada anterior:"

Este ejemplo no muestra el resultado por pantalla, así que es necesario almacenarlo en una variable.

_e('texto a traducir','mi-plugin');

Funciona igual que el anterior pero en este caso muestra el valor en pantalla.

Printf(_e('tengo %1$s años y me llamo %2$d','mi-plugin'), $número, $texto);

Sí en el texto a traducir tenemos variables debemos usarlo de esta forma. Así sea cual sea el idioma podremos traducirlo sin problemas, ten en cuenta que en los idiomas es posible que cambien el orden de las palabras y variables. Pero en la traducción, de esta forma, podremos hacer referencia a las variables en cualquier lugar u orden.

Printf(_n('Tienes %1$d comentario','Tienes %1$d comentarios',$count,'mi-plugin'), $count);

Esta es una versión pensada por si en función de un valor ($count) hay que mostrar texto en plural o singular.

_x('texto','explicación','mi-plugin');

En esta última opción podemos explicar la cadena, se usa cuando puede a ver dos cadenas iguales pero que se traduzcan de forma diferente. Es posible que en un idioma se diga de la misma forma 2 cosas diferentes pero en otros se usen términos diferentes y se necesita entender su significado en cada caso.

Identificar las traducciones

Finalmente es necesario enlazar el código establecido en las cadenas de traducción (mi-plugin en el ejemplo) con el tema o plugin.

//Cargamos la plantilla para el plugin o theme
Add_action('init','traducir_plugin');
Function traducir_plugin(){
Load_plugin_textdomain('mi-plugin',false,plugin_basename(dirname(___FILE_).'/lang/es/'));
}

Con esta función indicamos el nombre que usaremos en las cadenas (en este ejemplo: mi-plugin) y en el tercer parámetro indicamos la URL (en este caso dentro de la carpeta plugins) donde estarán las traducciones.

Más información en el codex: https://codex.wordpress.org/I18n_for_WordPress_Developers

Salir de la versión móvil