11 de junio de 2003

Aplicaciones MultiIdioma en VFP

En repetidas ocasiones, he comprobado que la realización de aplicaciones que puedan ejecutarse en diferentes idiomas ha sido uno de los puntos en los que más desarrolladores han expresado sus dudas.

En este artículo pretendo explicar una forma sencilla, pero que a su vez resulta muy potente para realizar aplicaciones Multi-Lenguaje en Visual Fox Pro.

La base de este desarrollo, será la creación de una tabla en donde se almacenen todos los textos que se mostrarán posteriormente en pantalla. Su formato será el siguiente:

ETIQUETAS Idioma01 C(200) Idioma02 C(200) (ambos campos con índice)

Como podemos imaginar, debemos de crear un campo por cada uno de los lenguajes a utilizar en nuestra aplicación.

Luego, simplemente añadiremos en esta tabla los textos que se correspondan a los distintos idiomas.

Ejemplo: Idioma01 Idioma02
Hola Hello

Para utilizarlo correctamente, debemos de cargar en el inicio de nuestra aplicación, una variable que indicará cual es el idioma activo (por ejemplo leyéndolo desde un fichero de configuración) y seleccionar el índice correcto.

Posteriormente, en nuestra clase base de aquellos controles que muestren texto, debemos de realizar algo parecido a lo siguiente:

Ejemplo para una label:

1) Creamos una variable global G_Idioma == "01".
2) Creamos una clase labelbase.
3) En el evento INIT, incluimos el siguiente código:
With This
   If !Empty(.Caption)
      This.Caption = Traducir(.Caption)
   endiF
Endwith
4) Creamos la funcion Traducir
Function Traducir
   Lparameters pTexto
   Local cTexto, cCampo

   cTexto = PADR(Alltrim(pTexto), 200)
   cCampo = "Idioma" + G_Idioma

   If SeeK(cTexto, "Etiquetas", cCampo)
      cTraducido = Alltrim(Eval("Etiquetas." + cCampo))
          Else 
              Append Blank In Etiquetas
  Replace I01 With pTexto In Etiquetas

  cTraducido = pTexto
   EndIf
Return cTraducido
Con la función Traducir podemos realizar la traducción de absolutamente todos los textos de la aplicación. Por supuesto, hay determinadas condiciones para que esto funcione: que la longitud del texto no supere el tamaño del campo, que tengamos un idioma de referencia (en el ejemplo es 01), etc.

Angel Casas

No hay comentarios. :

Publicar un comentario