Una forma simple de separar las traducciones del archivo ejecutable es definir archivos de traducción que contengan constantes con los textos a traducir. El ejemplo muestra la página generada y los archivos fuente que la componen.

En la parte superior se muestran algunos textos y se ofrecen tres botones con tres opciones de idiomas, un botón para aceptar el cambio y luego una frase arbitraria para mostrar una traducción compuesta.

Inmediatamente debajo, se puede ver el fuente que genera la página. El enlace establece inicialmente el idioma en castellano. La última de las opciones muestra qué ocurre cuando no hay traducción disponible. No es que el caso de que no haya archivo para una de las traducciones que se ofrecen se vaya a presentar con frecuencia, pero es posible que en un archivo de traducciones falte un texto. Esto suele ocurrir cuando la aplicación se va modificando y se agregan textos. El desarrollador difícilmente sepa todos los idiomas ofrecidos. En ese caso, alguno de los archivos de traducciones quedará con alguna traducción de menos hasta que se consiga completarla. Como se ve, el PHP interpreta los nombres de las constantes como textos literales.

Como se ve en el fuente, en todos los casos en que se fuera a escribir un texto, se ha usado una constante en su lugar. Todas las constantes están en mayúsculas, como es habitual en las constantes y por influencias de la función gettext() cuyo alias es _(), he usado un guión como carácter inicial, lo cual es totalmente arbitrario.

En las primeras líneas, verifico si el URL ha contenido el argumento 'language' en cuyo caso lo leo y lo almaceno en una variable de sesión para continuar usándolo en el resto del sitio. Si el archivo cuyo nombre contendría el código de idioma existe, lo cargo, con lo que se definirán todas las constantes.

Más abajo aparece el archivo con las traducciones. Su estructura es extremadamente simple y cualquier traductor lo podrá traducir sin mayores problemas indicándole claramente qué debe tocar y qué no, cuidando simplemente de salvar las comillas simples que pudiera tener que incluir en el texto.

Si se hubieran usado cadenas de formato para la función printf(), tal como se sugiere en un anterior artículo, estas aparecerían como %1$s (en el caso más habitual) debe poder reconocerlos como comodines y saber que puede ubicarlos en cualquier orden dentro de la traducción.

Este artículo es continuación de Internacionalización y localización: recomendaciones

Continúa en: Internacionalización y Localización: variables

Indice: Internacionalización y Localización: índice