Internacionalización en PHP (y II). Los ficheros de traducciones.

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

En el artículo anterior hemos aprendido a crear archivos de PHP que pueden renderizar en la página literales en diversos idiomas. Hemos visto cómo hacerlo de una manera cómoda y eficiente: incluímos en la página los literales en nuestro idioma nativo y estos son usados como claves para buscar las correspondientes traducciones en el idioma que deseemos. Si la traducción no es encontrada, se muestra el literal en el idioma en que se ha escrito. Este sistema funciona bien, y es eficiente y cómodo.

Las traducciones se crean y editan en unos archivos especiales con extensión .po. Estos son, a su vez, compilados en unos archivos con extensión .mo. Es en estos últimos donde nuestro código PHP busca las oportunas traducciones.

La edición de traducciones en .po y su compilación a .mo se lleva a cabo con un programa llamado Poedit, cuyo uso vamos a describir aquí. Poedit es gratuito, y se puede descargar de https://poedit.net/. Además, si lo deseas, puedes comprar una licencia Pro (su coste es realmente bajo, de poco más de 20 euros en el momento de escribir estas líneas) y tendrás soporte profesional del fabricante, y otras características de interés. Aquí, sin embargo, vamos a conocer la versión gratuita.

INICIANDO Y CONFIGURANDO POEDIT

Vamos a ver el funcionamiento de Poedit en Windows. En otros sitemas operativos es similar, pero la instalación y uso es más cómodo para los usuarios de Windows.

Sabemos que el sitio, una vez creado y listo para pruebas, sólo funcionará si está en un servidor Linux. Sin embargo, para la creación de los archivos de traducción es más cómodo usar Windows. Lo que haremos es copiar el sitio de prueba que nos descargamos completo en el articulo anterior en la carpeta localhost de nuestro Windows (C:/xampp/htdocs, si usas xampp). Lo copiaremos completo, con la carpeta raíz (pruebas_idiomas) incluida. Una vez hecho esto, borraremos los archivos .po y .mo que contiene el sitio, manteniendo intacta la estructura de directorios. El motivo de borrarlos es porque los vamos a crear nuevos desde el principio, para que conozcas el proceso.

Una vez descargado e instalado (la instalación es muy simple, a base de acepto y siguiente) abrimos poedit y nos encontramos con una ventana con cuatro opciones y una barra de menús en la parte superior, así:

Ninguna de las cuatro opciones destacadas en el centro se adecuan a la creación de un nuevo archivo de traducciones para nuestro sitio en PHP, por lo que nos vamos al menú de la parte superior y escogemos Archivo >> Nuevo. Vemos que la pantalla ha cambiado. Además, aparece una ventana modal para que seleccionemos el idioma de las traducciones que vamos a crear. En este ejemplo vamos a crear las traducciones para inglés del Reino Unido. Seleccionamos esa opción en la larguísima lista desplegable de la ventanita modal y pulsamos Aceptar.

Con esto se ha creado lo que se llama un catálogo, que no es, ni más ni menos, que un archivo de traducciones. Todavía no lo tenemos en el disco, en ningún sitio. De momento, nuestro catálogo sólo vive en memoria.

Nos vamos al menú superior y seleccionamos la opción Catálogo>>Propiedades. Se nos abre una ventana como la que ves a continuación:

En la casilla Nombre del proyecto y versión: vamos a escribir, por ejemplo, Prueba de idiomas.

En Formas plurales: seleccionamos la opción Usar una expresión personalizada y, en la casilla que aparece debajo dejamos la fórmula que nos ofrece por defecto.

En Conjunto de caracteres: dejamos la opción que aparece por defecto (UTF-8 (recomendado)). En la siguiente casilla, Conjunto de caracteres del código fuente: (que, cómo ves, aparece en blanco), seleccionamos la misma opción. Esto es de vital importancia para que todo se lleve a cabo correctamente.

De momento, pulsamos el botón Aceptar, aunque luego tendremos que volver por aquí, porque, para seguir estableciendo las propiedades del catálogo es necesario hacer un guardado previo del archivo. En el menú Archivo, seleccionamos Guardar cómo... y se nos abrirá una ventana de navegación como en cualquier aplicación, para elegir la ruta y nombre del archivo. La extensión será .po. Buscamos en localhost la ruta pruebas_idiomas/locale/en_GB/LC_MESSAGES (directorio que ahora tenemos vacío) y guardamos el archivo cómo idiomas.po. Recuerda que idiomas es el nombre que establecimos para los archivos de traducciones con la función textdomain() en el artículo anterior.

De nuevo, en el menú superior, escogemos Catálogo>>Propiedades.... Cuando se abra la correspondiente ventana, seleccionamos la pestaña Rutas de fuentes, y veremos lo siguiente:

Esta pestaña nos permite indicar donde se encuentran los archivos de código PHP de los que vamos a traducir los textos. Por defecto se nos muestra, junto al rótulo Directorio raíz: la ruta donde hemos guardado el catálogo. Sin embargo, no es lo que queremos. Lo que nos hace falta es que aparezca el directorio principal del sitio. Para ello nos vamos debajo del área de texto rotulada como Rutas: (la de arriba, no la de abajo que aparece cómo Rutas excluidas:) y pulsamos el botón que tiene en la parte inferior (rodeado en rojo en la imagen). Se nos abre un mini menú con dos opciones. Seleccionamos Añadir carpetas... y se nos abre un menú de navegación. Seleccionamos la carpeta raíz de nuestro sitio (en el ejemplo, pruebas_idiomas) y, tras pulsar el botón Seleccionar carpeta, nos quedará la ventana cómo vemos a continuación:

Ahora vamos a la pestaña Palabras clave originales. Su aspecto inicial es el siguiente:

El botón que ves apuntado con una flecha roja se llama Elemento nuevo. Púlsalo y, en la casilla de texto que se abre, escribe _p:1,2 (si te acuerdas del artículo anterior, _p coincide con el nombre de la función que creamos en includes/config.php para elegir formas plurales de textos). Lo de 1,2 es parte de la sintaxis de Poedit, que puedes revisar en la documentación oficial del programa (en https://poedit.net/trac/wiki/Doc?fromVersion=1.8.11 para la versión que estamos usando actualmente).

Pulsa el botón Aceptar y se cerrará la ventana de propiedades, con todas las nuevas propiedades grabadas.

CARGANDO LOS TEXTOS

La ventana que vemos ahora tiene el aspecto de la siguiente imagen:

Pulsa en el botón grande de la parte inferior, rotulado como Extraer desde código fuente. Dato que hemos establecido la ruta raíz del sitio, Poedit buscará, en todos los PHP de ese directorio y de los subdirectorios que cuelgan de él, todos los textos que estén cómo argumento de la función gettext() o de su alias _(). Además, cómo hemos añadido el nombre de la función _p(), también buscará estos textos. Al pulsar este botón te encontrarás con que se te abre, de nuevo, la ventana de propedades. Pulsa el botón Aceptar y, tras unos segundos, verás una ventana cómo la siguiente:

Si seleccionas cada frase (por defecto te aparece resaltada la primera, en la parte inferior ves un área de texto donde aparece la frase original, y otra caja de texto para que escribas la traducción.

LAS TRADUCCIONES

Tras ir rellenando las traducciones, estas van quedando a la derecha de la ventana principal. Un caso particular es el de las frases que se han sacado de la función que distingue entre singular y plural. Observa el aspecto de Poedit cuando llegas a una de estas frases:

Cómo ves, en la parte donde debes escribir la traducción tiene dos pestañas: una para que escribas la traducción en singular y otra para el plural. Deberás cumplimentar las dos. También debes respetar la secuencia %d, porque es donde aparecerá el valor numérico que empleamos para indicar, en este ejemplo, el número de mensajes.

Una vez que hayas cumplimentado todas las traducciones (o una parte de ellas, ya que no es necesario hacerlas todas del tirón), pulsa el botón Guardar de la parte superior, o la opción Archivo>>Guardar del menú. Esto guarda el archivo .po de la traducción y el archivo compilado .mo.

ACTUALIZANDO TRADUCCIONES

Lo normal es que, con el tiempo, en tus scripts cambies algunos textos, elimines los que ya no necesitas y añadas otros nuevos. Eso deja la traducción que tienes obsoleta. Afortunadamente, los creadores de Poedit, en su infinita sabiduría, ya contaron con esto. Si tienes que actualizar el archivo de traducciones, simplemente vete a la localización del catálogo (el que tiene la extensión .po) y ábrelo con doble clic (se abrirá con Poedit).

Pulsa el botón Actualizar, en la fila de botones de la parte superior, o la opción Catálogo>>Actualizar desde fuentes del menú. Los textos que hayan sido eliminados en tus PHP desaparecen. Los textos nuevos, aparecen en negrita, sin traducción, para que los traduzcas. Después, vamos a Archivo>>Guardar, y ya está la traducción actualizada. Fácil y rápido: dos palabras que suenan muy bien en este contexto.

     

Deja un comentario

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