Llevamos algún tiempo trasteando con WordPress y las traducciones de los plugins. Uno de los temas que siempre nos ha llamado la atención es que hay plugins, cuya descripción aparece traducida en PLUGINS / PLUGINS INSTALADOS, cuando en la mayoría de los casos esto no es así.
Uno de los mejores ejemplos es AKISMET, cuya descripción aparece traducida al castellano si tenemos configurado el WordPress en castellano:
Si miramos el código fuente está en inglés:
Esto parece sencillo, pero no lo es tanto y de hecho el mejor ejemplo es que casi ningún plugin traducido al castellano tiene traducida la descripción.
Hemos estado investigando y ya tenemos la solución para traducir cualquier campo del encabezado del plugin a cualquier idioma.
¿Cómo podemos traducir la descripción de un plugin de WordPress?
Añadiendo al final del encabezado del plugin la definición de la variable «Text Domain» y luego añadiendo una variable con el texto del encabezado en inglés, para que al generar el archivo de traducción .po/.mo encuentre el texto para traducir, porque no analiza el texto contenido en comentarios como el del encabezado de WordPress.
En el caso del Plugin Click To Tweet que modificamos un poco y tradujimos, el cambio es el siguiente:
Versión con nombre del plugin y descripción sin traducir
/* Plugin Name: Click To Tweet Enhanced Description: Add click to tweet boxes to your WordPress posts, easily. Version: 10.0 Author: Todaymade. Enhanced by Apasionados.es. Author URI: http://apasionados.es/ Plugin URI: http://coschedule.com/click-to-tweet */ add_action( 'admin_init', 'clicktotweet_load_language' ); function clicktotweet_load_language() { load_plugin_textdomain( 'clicktotweet', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); }
Versión con nombre del plugin y descripción traducidos
En la traducción del nombre y la descripción del plugin se incluye en el encabezado la definición de la variable Text Domain, que es la misma que se utiliza en toda la traducción de los textos.
Además se añade una variable en la cual copiamos el texto en inglés del «Plugin name» y de la «Description». De esta forma luego el editor de archivo .po/.mo puede detectar ese texto e incluirlo dentro del archivo de traducción. Si no lo definimos en esta variable (que solo se usa para la traducción), no tendremos esas cadenas de texto traducidas.
/* Plugin Name: Click To Tweet Enhanced Description: Add click to tweet boxes to your WordPress posts, easily. Version: 10.0 Author: Todaymade. Enhanced by Apasionados.es. Author URI: http://apasionados.es/ Plugin URI: http://coschedule.com/click-to-tweet Text Domain: clicktotweet */ $plugin_header_translate = array( __('Click To Tweet Enhanced', 'clicktotweet'), __('Add click to tweet boxes to your WordPress posts, easily.', 'clicktotweet') ); add_action( 'admin_init', 'clicktotweet_load_language' ); function clicktotweet_load_language() { load_plugin_textdomain( 'clicktotweet', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); }
Una vez hechos estos cambios, solamente hay que volver a generar el archivo con los textos de descripción y automáticamente nos aparecerán los dos textos incluidos en la variable: $plugin_header_translate. Tal y como os decíamos, esa variable solo se usa para que aparezcan los textos en los archivos de traducción, pero no en el plugin en si.
Si has publicado algún plugin de WordPress, esto seguro que te ha parecido interesante ;-).