Berriart Berriart

Desarrollo web con software libre

Internazionalizar un plugin o theme de wordpress

Guardar este artículo en Delicious Compartir este artículo en Twitter Compartir este artículo en Facebook

Como sabéis wordpress utliza gettext para las traducciones a distintos idiomas. Para más información sobre este tema podéis ver la página de wordpress.org que lo explica, aunque esté en inglés, es muy instructiva: http://codex.wordpress.org/Translating_WordPress

La cuestión es, que cuando hacemos plugins o themes nos solemos olvidar de esta sencilla y buena manera de hacer las traducciones y escribimos los textos ‘a pelo’ en el propio código. Ésto hace que si alguién quiere traducirlo a su idioma tenga que repasar el código completo cambiando todos los textos. Es decir, la peor manera de traducir.

Por eso deberíamos crear nuestros plugins y themes usando el mismo método que se usa en wordpress, para que luego cualquiera pueda traducirlo usando el poEdit sin necesidad de revisar el código. Para ello deberemos incluir las siguientes líneas dentro de nuestro plugin o en el archivo ‘functions.php’ de nuestro theme:

/* This enables internationalization I18n */
add_action('init', 'plugin_or_theme_name_init_locale');
function plugin_or_theme_name_init_locale() {
	$locale = get_locale();
	$mofile = dirname(__FILE__) . "/locale/".$locale.".mo";
	load_textdomain('plugin_or_theme_name', $mofile);
}

En el pedazo de código anterior debemos cambiar lógicamente el texto ‘plugin_or_theme_name’ por el nombre de nuestro plugin o theme en todos los sitios que aparece. Después, a la hora de programar, todos los textos que vayan a ser vistos por el usuario final deberían ser escritos de la siguiente manera:

$text = __('The text that should be translated', 'plugin_or_theme_name'); //Para asignar el texto a la variable $text
_e('The text that should be translated', 'plugin_or_theme_name'); //Para hacer echo o printear en pantalla

Finalmente, debemos crear los archivos .po y .mo que guardaremos en una carpeta llamada locale que crearemos dentro de nuestro plugin o theme. Los archivos .po y .mo de cada idioma deberan llevar como nombre el código ISO del idioma en cuestión. Es decir los de español de españa deberían llamarse es_ES.mo y es_ES.po.

Si al instalar el theme o el plugin en un blog, este blog tiene cambiado su idioma a otro diferente del inglés y nosotros tenemos ese idioma en nuestro plugin o theme, automáticamente será éste el que se use. Sino apareceran los textos que escrinbamos dentro de la función que por lo general deberíamos hacer en inglés.

Deja un comentario