Newsgroup: it.comp.www.asp
Titolo: Lingue straniere in portale

Ho realizzato un portale dinamico che permette all'utente di gestire
completamente i contenuti, i link, i testi, i dcumenti, il menu, ecc..
Adesso mi trovo a dover inserire la possibilità di riempire pagine in altre
lingue, e mi serve un consiglio.
E' meglio usare una variabile di Sessione, che si attiva al clic sul nome
della lingua e quindi in ogni pagina vengono caricati i contenuti in quella
lingua, (in pratica il sito è costituito da una sola pagina che si popola a
seconda dell'id passato dal link premuto sul menu, quindi potrei passare la
lingua)
oppure creare una copia della pagina principale per ogni lingua, e alla
scelta della lingua in effetti si apre un'altra pagina che avrà riferimenti
a diversi campi delle tabelle del DB
Vorrei capire se nel DB conviene creare una nuova tabella menu_FRA (per
esempio) e quando l'utente clicca su Francese, il contenuto viene perscato
dalla tabella menu"&linguascelta&" oppure aggiungere un campo al menu
esistente e popolare il menu con la clausola  WHERE lingua='FRA'
Oppure un'altra soluzione?

 Oppure un'altra soluzione?
Puoi memorizzare le lingue in una qualsiasi fonte di dati: database, XML,
file di testo... ma prestazionalmente richiedere i dati interessati per ogni
pagina è deleterio per le prestazioni della tua applicazione.
Personalmente ti consiglio di memorizzare in array il contenuto di tutte le
lingue e inserirle in una variabile application all'avvio dell'applicazione.
Per far questo ti è sufficiente caricare i vari array nell'evento "Sub
Application_OnStart" all'interno del global.asa.
In questo modo da una singola pagina ti è sufficiente sapere che lingua per
quella pagina è stata richiesta per inserire nel codice html la traduzione
interessata presa direttamente dalle variabili application.
Per quanti riguarda la lingua scelta dall'utente puoi memorizzare la scelta
fatta dall'utente o nelle Session come hai già pensato o, meglio, in un
cookie oppure inserire la lingua desiderata in ogni link delle pagine della
tua applicazione. Ogni scelta ha i suoi pro e i suoi contro...
Ciao
-- 
AZ [Microsoft - .NET MVP]
Mia Home page: 
http://ciclismo.sitiasp.it
Asp.Net community: 
http://www.aspitalia.com
Il mio blog: 
http://blogs.aspitalia.com/az

Adesso funziona che tutto il sito č fatto da una sola pagina ASP.
A seconda dell'id passato dal menu, tutti i contenuti del DB che hanno come
riferimento quel dato id popolano la pagina.
Cosě facendo, ho fatto in modo che l'utente possa aggiungere nuove voci al
menu, e nuove pagine, scegliendo e modificando facilmente o contenuti.
Io pensavo semplicemente di pescare i contenuti che hanno come riferimento
quella pagina, ma in francese, ad esempio. (quindi un campo lingua = 'FRA'
Solo che per tradurre tutto, anche i menu, e le cose statiche (pič di
pagina, ecc,) č un bel lavoro. unsacco di if che controllano la lingua
diversa, e pescano i contenuti in base alla lingua.
Non avevo pensato di sfruttare il GLOBAL.ASA anche perchč non č detto che il
servere abbia le FPExtensions, giusto?
Perň quello che uso sě
Mi spieghi meglio la storia dell'array? Cosa ci dovrei mettere dentro? Tutto
cosa?

 dentro? Tutto cosa?
In ASP è presente l'oggetto Dictionary. Essa permette di memorizzare dei
dati per chiave, adatto per traduzioni:
key value
casa house
... ...
In rete ho trovato questo tutorial a riguardo:
http://www.learnasp.com/learn/dictionary.asp
Nel tuo caso puoi creare tante dictionary quante sono le lingue, per
esempio:
<%
set inglese=server.CreateObject("Scripting.Dictionary")
inglese.Add "casa", "house"
inglese.add "cane" , "dog"
inglese.add "gatto", "cat"
...
set francese=server.CreateObject("Scripting.Dictionary")
francese.Add "casa", "maison"
francese.add "cane" , "..."
francese.add "gatto", "..."
...
%>
Il caricamento dei vari dictionary lo puoi fare nel global.asax e inserirli
in variabili application che sono visibili in tutta l'applicazione.
Per esempio, per memorizzare i dictionary precedenti puoi fare nel
global.asax:
application("fra")=francese
application("ing")=inglese
Quindi, in ogni pagina, sapendo che lingua vuoi visualizzare:
set lingua=application("fra")
response.write(lingua("casa"))
...
Questo è solo un esempio, ti consiglio di approfondire l'argomento visto che
ti può consentire ottime prestazioni e buona gestibilità del tutto.


Mi sembra in effetti ch cosě facendo posso gestire tutti i testi.
Ma quando ci sono dei form, per esempio, la parola cerca del pulsante, deve
anch'essa essere nei dizionari, e via dicendo tutto quello che non č preso
dal DB devo prevedere che sia messo dei dizionari.
In effetti a pelle sembrerebbe che sia meglio creare una pagina apposta (il
DB per ora č esattamente come dicevi tu, con tutti i campi e con tutte le
traduzioni).
Creando una pagina per ogni lingua, potrei personalizzare tutte le parti non
memorizzate nel DB.
Mi chiedo come fanno i portaloni tipo Ebay, che hanno tutto tradotto.