Scripts de gestión de lengua II

Presentamos los códigos y comentamos el funcionamiento y utilidad de los scripts lecturalengua.inc y cambiolengua.inc
El archivo lecturalengua.inc no es más que una función que permite la conexión a una base de datos seguida de la selección e impresión del valor de un campo de un determinado registro:

<%
'Funcion que selecciona la lengua en la que se imprime el texto
Function imprimir(mensaje)
   imprimir="Select "&Session("lengua")&" From lengua Where variable Like '"&mensaje&"'"
   set im = Conn.Execute(imprimir)
   Response.Write im(Session("lengua"))
   im.Close
End Function
%>


Para que usando la misma página podamos visualizar los textos en inglés o en español lo que hemos hecho es almacenar los posibles textos que aparecen en la aplicación en una base de datos en una tabla que hemos bautizado "lengua". Esta tabla consta de tres columnas: Una con los mensajes en castellano, otra con los mismos mensajes en inglés y otra con el nombre de la variable de tales mensajes.

Para que un determinado mensaje sea visualizado podríamos habernos limitado a hacer una llamada a la base cada vez que queramos ponerlo en pantalla pero, tratándose de un trabajo tan mecánico y que va a ser repetido tantas veces, resulta mucho más practico definir una función que realice la tarea de una manera automática.

Este es el cometido de lectura lengua.inc donde la función "imprimir" seleccionara el texto a imprimir basándose para ello en la lengua que ha sido previamente definida y en el nombre de la variable del mensaje. Una vez la sentencia de selección en SQL es creada y ejecutada, el paso siguiente será visualizarla en pantalla por medio de la instrucción Response.Write.

Cabe señalar que, para que un script de este tipo funcione, hace falta crear previamente la conexión con la BD. Esto ya ha sido hecho (lo veremos) en el archivo connon.inc incluido en la totalidad de las páginas que efectuan llamadas a la base de datos.

El ultimo archivo de tratamiento de lengua es cambiolengua.inc que nos permite cambiar de una lengua a otra a partir de simples enlaces hipertexto por los que pasamos la variable "nuevalengua" que será tratada posteriormente por testlengua.inc tal como ya hemos visto:

<strong><a href="home.asp?nuevalengua=es">Español</a>   
<a href="home.asp?nuevalengua=en">English</a>
</strong>


Como puede verse, el hecho de cambiar de lengua envía al usuario a la página de inicio. Esto podría ser modificado elaborando un poco más este archivo. Lo dejamos como ejercicio para vosotros. Por otra parte, ni que decir tiene, que los enlaces en una aplicación podrían ser sustituidos por banderitas.

Este kit de gestión de lenguas resulta muy útil cuando pensamos en crear una página multilingüe. Es verdad que para dos lenguas puede resultar algo pesado y podríamos pensar en otras formas menos torcidas de llevar a cabo esta tarea. No obstante, cuando las lenguas a traducir son más, esta alternativa es sin duda de gran utilidad y permite rápidas actualizaciones, correcciones e introducciones de nuevas lenguas con un esfuerzo mínimo. Hay que pensar también en el trabajo que se ahorra el traductor entre buscar textos en un código HTML o traducir directamente una base de datos.

Ir la librería

Autor

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Compartir

Comentarios

Jorge Luis Gonzalez Cervanes

12/9/2003
Al parecer existe un problema en la ejecucion de la libreria, ya que los mensajes en ingles no funcionan, sino solamente en la presetacion (home.asp)

Esto me esta pasando tanto en su sitio como en mi pc

Toni

12/3/2004
Hola a todos pues efectivamente pasa lo que dices Jorge y es por un pequeño y aparentemente absurdo detallito pero que si no se ve te sera imposible resolverlo, el "fallo" lo tenemos en el archivo testlengua en concreto en esta linea:
Response.Cookies("lengua").Expires=#1/1/2002# , que ocurre que a fecha de hoy la cooki ya ha expirado por lo que no expira automaticamente, lo unico que tienes que hacer es cambiar la fecha por una posterior por ejemplo
Response.Cookies("lengua").Expires=#1/1/2008#


Saludos a todos y mi enhorabuena por la pagina, ya que estoy empezando a aprender y me es de gran utilidad