Una posibilidad para la traducción de textos de las aplicaciones es el uso de bases de datos. Hay aplicaciones que lo hacen así, una que me viene a la mente es SAP, aunque no se si aún lo hacen. Con los ejemplos ya mostrados, creo que no es necesario que lo cubra. Basta una o más tablas con campos que correspondan al texto original, el código de idioma y la traducción. Vale la pena notar que el programa xgettext puede ser usado para extraer los textos de los fuentes para luego, mediante un script propio, dependiendo de la estructura de tablas adoptada, se cargue la base de datos.

Otra cuestión es la existencia de textos como datos dentro de una tabla. Lo primero que viene a la mente es agregar un código de idioma a las tablas que contienen estos textos, pero esto no es tan simple, muchas veces, internacionalizar la base de datos requerirá rediseñarla.

Por ejemplo, supongamos que tenemos una tabla de artículos muy trivial:

id_art Descr Precio Cantidad
1 Tornillo 1.00 100
2 Tuerca 2.00 200
3 Arandela 0.50 120

Deseamos hacer que el campo Descr se pueda localizar. Agregar un campo de idioma no se posible dado que por cada nuevo idioma que agregáramos estaríamos también repitiendo los campos Precio y de Cantidad, lo cual no es aceptable.

Deberemos dividir las tablas según se muestra, una que contenga la información que es independiente del idioma y otra que tenga los textos en los distintos idiomas, según se muestra.

id_art Precio Cantidad
1 1.00 100
2 2.00 200
3 0.50 120
id_art idioma descr
1 es Tornillo
2 es Tuerca
3 es Arandela

Estas tablas estarían asociadas por el código de artículo, id_art.

Este replanteo de las tablas puede requerir actualizar muchos de los programas que acceden a estas tablas, sin embargo, el uso de `vistas´ nos puede ayudar. Si las nuevas tablas reciben nuevos nombres, entonces nos es posible hacer una vista que nos provea la información como estos programas la esperaban ver, de tal manera de que nada deje de funcionar, aunque lo hará un poco más lento mientras se reescriben los programas.

  
CREATE VIEW articulos AS
  SELECT
    articulos_neutra.id_art AS id_art,
    descr AS Descr,
    Precio,
    Cantidad
  FROM articulos_neutra JOIN articulos_textos
  ON articulos_neutra.id_art = articulos_textos.id_art
  WHERE articulos_textos.idioma = 'es'
  

Una vez borrada la tabla original, esta vista la puede reemplazar. Adviértase que el código de idioma en esta vista está fijo en el código que corresponde a los textos originales de la tabla pues aquellos programas que desconozcan la nueva estructura, tampoco estarán internacionalizados y no sabrán que hay más idiomas disponibles, por lo que no esperarán más que el original.

Viene de: Internacionalización y localización: usando PHP-gettext

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

Fin de la serie