Multilanguage site con PHP y Smarty (Parte 3) libreria gettext

imagen con banderas de distintos paises

Volvemos con el tutorial para traducir un sitio usando PHP y Smarty. Hasta ahora hemos repasado unas cuantas definiciones y visto las posibles opciones para la traducción. Tras esto llegamos a una conclusión. Usaremos la librería gettext para traducir un sitio web.

En esta entrega veremos como funciona la librería gettex. Veremos el tipo de archivos que utiliza y la estructura de los mismo necesaria para usarla correctamente.

Comencemos !!!

Gettext

gettext es la biblioteca GNU de internacionalización (i18n). Comúnmente se usa para escribir programas con interfaz en varios idiomas.

Pare ello utiliza tres tipos de archivos. Estos archivos tienen extensiones POT, PO y MO. Los archivos con extensiones POT y PO son simples archivos de texto. Los primeros tienen información sobre las cadenas de caracteres a traducir y los segundos contienen la traducción. Por último, los archivo MO con archivos binarios. Estos archivos son los que realmente lee el sistema operativo para mostrar las traducciones.

Por lo tanto el flujo de trabajo para utilizar es librería es:

  • “Sacar” las cadenas de texto a traducir. Archivo POT.
  • Traducir estas cadenas. Archivo PO.
  • Crear el archivo MO a partir del POT.

Esto puede parecer muy trabajoso y complicado. Pero, por fortuna es posible parsear el documento a traducir y usar programas especializados para realizar todo este trabajo fácilmente.

Gettext en PHP

PHP incorpora una API para poder usar las funciones gettext de manera “nativa” por así decirlo.

Según el manual oficial PHP.“Las funciones de gettext implementan una API de Soporte de Lenguaje Nativo (NLS de las siglas en inglés Native Language Support) la cual se puede utilizar para internacionalizar las aplicaciones de PHP.”

Creo que no voy a molestarme en explicar como funciona la librería en PHP puesto que existen muchos blog y vídeos donde te lo explican bastante bien. Basicamente hay que crear una estructura de carpetas que es donde “busca” las traducciones y seguir el proceso explicado anteriormente.

Podeis ver como utilizar la libreria en PHP en los siguientes enlaces.

Traducciones con gettext 

PHP internalization with gettext tutorial

Por supuesto también puede consultar la documentación oficial de PHP

Problemas con gettext.

En general esta solución funciona muy bien. Y con esto ya podríamos usar el plugin smarty gettext .Sin embargo existe un problema. Y es que si el sistema operativo en donde estamos implantando la aplicación no soporta el idioma esta librería no funcionará.

Para eso vamos a utilizar la librería php-gettext que permite saltarse esa limitación. Puedes ver este ejemplo para ver como la librería permite la traducción incluso si el idioma no esta soportado.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *