Disculpad la tardanza. He estado fuera y no he podido continuarlo. Aqui voy
Directivas sobre recepción y grabación de de datos de Idioma
Uno de los problemas a los que nos vamos a enfrentar cuando hagamos un sistema de idiomas es la forma en que vamos a recibir la información sobre el idioma y donde la vamos a guardar.
La recepción de cambio de Idioma
Generalmente cuando queramos cambiar de idioma lo haremos creando un enlace donde parametrizaremos el cambio en la dirección URL (GET):
<a ref.=”<%= request.ServerVariables("SCRIPT_NAME") %>?lang=en”>Inglés</a>
Esta es la forma más facil: creando un parámetro que defina el cambio. En este caso es el par lang=en. Y así lo haríamos con todos los idiomas disponibles.
Otra forma similar es usar un form para enviar la misma información pero a través del método POST:
<form method=”post” action=” request.ServerVariables("SCRIPT_NAME") %>”>
<input type=”hidden” name=”lang” value=”en” />
<input type=”submit” value=”Inglés” />
</form>
Método mucho mas enrevesado que el anterior a mi entender.
Ya tenemos la el método que utilizaremos para generar el cambio de idioma: a través de GET usando luego el request.QueryString para identificarlo.
La grabación del nuevo Idioma
El otro problema que tenemos es cómo vamos a mantener ese idioma durante la navegación del usuario por nuestras páginas. Tenemos varias alternativas:
1 – Usando el mismo método que usamos para cambiar el idioma: Parametrizamos todos los enlaces que haya en nuestro sitio web. Este es un método artesanal, seguro (no depende de cookies) y fiable: simplemente añadimos el par variable=Idioma a todos los enlaces. Es tedioso pero robusto.
2 – Usando cookies: Es rápido y muy facil de implementar. Usando response.cookies(variable) = Idioma para guardar la información y request.cookies(variable) para recuperarla. El único inconveniente que tiene es que dependemos de que el usuario tenga habilitado las cookies.
3 – Usando variables de sesión: Aunque usar variables de sesión parezca el mejor método tenemos el mismo problema que usando cookies: Si está deshabilitado el uso de cookies en el cliente, no podremos usar sesiones. Recordad que IIS guarda una cookie con el sessionID del usuario para poder asignarle entre una página y otra las variables y sus valores que le corresponda a cada usuario.
Tenemos 3 posibilidades. Cada cual puede elegir el método que prefiera o hacer una mezcla entre ellos (si vemos que el usuario no acepta cookies pues lo hacemos parametrizando, en caso contrario lo hacemos con sesiones, por ejemplo). Yo voy a optar por el método más sencillo: voy a guardarlo en una sesión.
Definiendo el idioma por defecto
Nos queda una cosa más: la primera vez que el usuario entra en nuestro sitio web, ¿cómo sabemos que idioma poner si el usuario todavía no nos lo ha dicho?. Existen dos posiblilidades:
1 – Que nos lo diga su navegador. Las variables del servidor nos pueden dar muchos datos del navegador del cliente: el nombre, la versión, su IP, su idioma… ¿su idioma? Si. Existe una variable de servidor que nos da su idioma (el que tiene instalado en su navegador). Esta variable es:
Http_Accept_Language
Esta variable nos va a devolver algo asi :
es-es,es;q=0.5
De todo asta información lo que realmente nos interesa son los dos primeros dígitos ya que nuestro sistema se basa en la codificación de paises en dos letras (
2-letter-iso-code). Para ello nos hacemos una pequeña función
Idioma = Trim(left(request.ServerVariables("HTTP_ACCEPT_LAN GUAGE"),2))
2 – Se lo decimos nosotros. Si nuestro eficiente sistema, a pesar de todo no reconoce nada de nada siempre nos queda usar una constante para asignarle el idioma:
Const DEFAULT_LANGUAGE = “es”
Y luego asignárselo a la variable que ha estado pasando la criba, al final de esta:
Idioma = request.QueryString(“lang”)
If Idioma = “” then Idioma = Session(“Idioma”)
If Idioma =”” then Idioma = Trim(left(request.ServerVariables("HTTP_ACCEPT_LAN GUAGE"),2))
If Idioma = “” then Idioma = DEFAULT_LANGUAGE