Traducir página web con php-gettext

Como vimos hace un tiempo traducir themes de WordPress era una tarea bastante sencilla, principalmente porque todas las funciones necesarias ya las incorporaba el núcleo de WP, solo necesitábamos llamar la función load_theme_textdomain(); para cargar el fichero de idiomas y encapsular el texto con las funciones __() y _e().

Pero qué sucede si lo que queremos traducir son ficheros .php que nada tienen que ver con WP, de una web que nos hemos hecho por ejemplo?

Cómo hacemos para poder usar las funciones __() y _e() y los ficheros .mo que contienen las traducciones para cada idioma, es mas, cómo sabemos cual de los ficheros debemos de cargar para mostrarle la traducción correcta al visitante?

Pues lo cierto es que también es algo sencillo de hacer, para ello hay varias soluciones. La primera que me encontré fue usando la funcion de php llamada gettext(), sin embargo es bastante engorrosa de usar por ello busque otra alternativa, y esta fue PHP-gettext, un paquete que usan muchas aplicaciones, incluido WP, y que es muy sencillo de usar.

Lo primero que vamos a necesitar es bajarnos dicho paquete desde la web enlazada. Necesitaremos los ficheros streams.php  y gettext.php.

Para realizar las pruebas nos crearemos un proyecto de pruebas, este proyecto tiene la siguiente estructura:

Los ficheros es_ES.mo y es_ES.po los creamos como en la entrada de traducción de themes de WordPress, es decir con la aplicación Poedit.

En el fichero index.php, que contiene nuestra página web a traducir, le vamos a añadir lo siguiente:

 Por ultimo solo nos quedara usar las funciones __()  y _e() para traducir el texto.

Como vemos es algo realmente sencillo de hacer y nos permitirá que cada visitante vea la página en su idioma 🙂

Actualización 2014/10/31

Adjunto un ejemplo para traducir una página de login, el idioma de los textos sera o bien en español o en ingles dependiendo del idioma en el que este configurado el navegador de internet, cambiando de idioma se cambiara también el de la página al recargarla.

 

Escriba aquí su comentario