Creare un sito multilingua in Asp

Siti dinamici con ASP
Impara a creare siti dinamici professionali con ASP

Scritto da Luca Ruggiero nella sezione Asp

Introduzione

Molti Siti hanno necessità di rivolgersi ad una fascia di utenza molto ampia, addirittura di paesi differenti che quindi parlano lingue differenti. Predisporre un intero sito e tradurlo in più lingue è già un problema di per se, ma organizzarsi anche in modo tale da ottimizzare il lavoro e non creare pagine differenti in diverse lingue, è una necessità che non può essere sottovalutata. Non esistono oggetti o componenti che si occupano di gestire le lingue, ma ci sono diversi trucchi e soluzioni da adottare.

In questo Tip ne analizzeremo una, servendoci dell'oggetto Session di Asp.

Analisi del problema

La prima cosa da fare è consentire all'utente di scegliere il linguaggio da adottare: alcuni siti utilizzano uno script (lato client e/o server) che riconosce in automatico la lingua del sistema operativo, ed effettuano un reindirizzamento alla pagina principale nel linguaggio del sistema operativo. Personalmente come soluzione non mi piace, dato che se una persona non parla inglese, ma si trova per necessità a lavorare su un sistema Windows NT in inglese, non avrà mai il bene di leggere una pagina in italiano! Ragion per cui creeremo una pagina di scelta con dei link.

Il link punterà ad una pagina Asp che si limiterà a raccogliere la scelta dell'utente e ad effettuare il reindirizzamento alla pagina principale del sito nella lingua scelta. La pagina principale sarà predisposta in maniera tale da esporre i propri contenuti nella lingua scelta dall'utente.

Il nostro esempio si baserà quindi su 3 pagine:

  • index.html - pagina di scelta del linguaggio con dei semplici link
  • scegli.asp - elabora la scelta dell'utente e punta alla pagina principale
  • principale.asp - la reale Homepage del sito, predisposta in modo da accettare la scelta dell'utente ed a regolarsi di conseguenza.

La pagina di scelta: index.html

Si tratta di una semplice pagina Html con dei link. Vediamo il suo codice:
<html>
<body>

<h3 align="center">Choose the language</h3>

<p align="center">
    <a href="scegli.asp?lang=IT">Italiano</a>
    ::
    <a href="scegli.asp?lang=EN">English</a>
</p>

</body>
</html>
Il parametro lang utilizzato nei link, associato alla pagina a cui si punta, servirà ad effettuare la scelta del linguaggio. In questo esempio abbiamo scelto di visualizzare un sito solo in italiano ed in inglese, quindi i valori utilizzati saranno IT ed EN.

La pagina di elaborazione della scelta: scegli.asp

A questo punto dobbiamo elaborare la scelta dell'utente. Di seguito il codice sorgente:
<%@Language = JScript%>
<%
    var lang = new String(Request.QueryString("lang"));

    if (lang == "" || lang == "undefined")
    {
        Response.Redirect("index.html");
    }
    else
    {
        Session("linguaggio") = lang;
        Response.Redirect("principale.asp");
    }
%>
La variabile lang recupera la scelta dell'utente; in seguito controlliamo che non sia stato passato un valore errato e/o inesistente. A condizione soddisfatta, rimandiamo l'utente alla pagina principale, creando un istanza dell'oggetto Session, assegnandogli il nome linguaggio.

La reale Homepage: principale.asp

Eccoci arrivati alla reale Homepage del sito; il codice è molto semplice, si limita a verificare il valore della variabile Session("linguaggio") ed a presentare contenuti differenti a seconda:
<%@Language = JScript%>
<html>
<body>

<h3 align="center">
    <%if (Session("linguaggio") == "IT") {%>
        BENVENUTO
    <%} else if (Session("linguaggio") == "EN") {%>
        WELCOME
    <%} else { Response.Redirect("index.html") }%>
</h3>

</body>
</html>
Conclusioni

Una soluzione del genere è valida, ma al tempo stesso non molto pratica per siti di grosse dimensioni, o pagine particolarmente complesse. In una situazione del genere consiglio di utilizzare un database predisposto ad hoc.

I più cliccati della sezione Asp

:: Un semplice form mail in Asp (52.099)

:: Creazione di un Guestbook in Asp (50.976)

:: Creazione di un'area di accesso riservato in Asp (45.578)

:: Connessione ad un database MySql con Asp (25.230)

:: Connessione ad un database Microsoft SQL Server con Asp (24.401)

:: Asp e database (23.292)

:: Differenza tra i metodi get e post e recupero dei dati, attraverso Asp (22.665)

:: Una semplice area di accesso riservato senza DB in Asp (21.557)

:: Riscrivere le URL con Asp (19.949)

:: Creazione di un Sondaggio in Asp (19.224)

IN EVIDENZA
DOWNLOAD