Newsgroup: it.lavoro.professioni.webmaster
Titolo: sito multilingua: metodo migliore?

Ciao a tutti,
ho realizzato un paio di rudimentali siti multilingua in php e SSI.
La scelta della lingua avviene in home page e solo in home page.
Dalla home page si setta una variabile di sessione 'lingua' e poi si
naviga.
Ma vorrei spingermi un po' oltre e fare in modo che l'utente possa
cambiare la lingua in qualsiasi momento, cliccando su un semplice
link.
In home page uso la funzione "header(location:miofile.php)" dopo aver
impostato la lingua.
Ho provato a fare questa cosa su tutte le pagine ma ricevo errori
tiopo header gia' inviato etc...etc...
In che modo posso ovviare  a questo?
Voi che metodo mi consigliereste?
Vi ringrazio in anticipo per eventuali dritte.
ciao
tony

 Voi che metodo mi consigliereste?
Metti i testi in un file xml, uno per lingua in uso e leggi i datida
quello scelto dall'utente.
In questo modo separi completamente il testo dalla pagina stessa.

In questo modo separi completamente il testo dalla pagina stessa.
gia' fatto. uso dei SSI pescando le varie stringhe dai relativi files
della lingua it.php, uk.php, de.php ....etc...etc... 
il mio problema e' il cambio della lingua 'al volo'; cioe', cambiare
il valore della variabile di sessione lingua senza usare
"header(location...)".
si puo' fare?
ti ringrazio ancora.
Ciao
tony

a livello teorico no, se tu hai gia mandato la pagina non puoi piu'
cambiare l'output al client.
a meno che tu non apra un un frame nascosto o delle variabili sotto la
pagina. Devi fare con l'header e ti dice che e' gia' stato mandato
perche' prima dell'header non devi lasciare spazi di html o output php.
buona fortuna

"header(location...)".
un cookie?
-- 
abbraccio espedienti 365 giorni l'anno.
(generata da: 
http://www.phibbi.com/extra/gswe.php
)
il mio indirizzo email è valido ma filtrato: inserite 
la parola newsgroup nel subject per essere letti.

>si puo' fare?
una variabile get?


 si puo' fare?
usa il reload javascript.
Io uso un'icona che manda via ajax la lingua scelta a una pagina che setta 
la sessione. poi il reload ricarica la pagina in cui si č.

 Vi ringrazio in anticipo per eventuali dritte.
Metodo semplice e sbrigativo...crei una variabile di sessione per la lingua; 
tutti i testi li metti in un database che abbia delle tabelle tipo:
- testi[chiave_testo,chiave_lingua,testo]
- lingua[chiave_lingua,descrizione]
nelle pagine, al posto di scrivere il testo direttamente nell'html, con php 
deifnisci il testo da visualizzare (con chiave testo); i link alle diverse 
lingue vanno a modificare la variabile di sessione, che poi sarą la 
chiave_lingua con cui selezionare la lingua e relativo testo nel db.
saluti
LostMyE 

lingue vanno a modificare la variabile di sessione
il mio problema e' proprio questo. come modifico una variabile di
sessione con un link?
es.: 
clicco sulla bandiera italiana e la variabile di sessione si setta su
IT;
clicco sulla bandiera francese e la variabile di sessione si setta su
FR;
clicco sulla bandiera tedesca e la variabile di sessione si setta su
DE;
etc...etc...
Mi piacerebbe veedere qualche (semplice) riga di codice di qualche
esperto (io non sono programmatore, si capisce?).
Ciao e ancora grazie.
tony

 DE;
Ciao, io non sono espertissimo, ma ho realizzato una cosa molto simile a 
quella che dici tu. In pratica, in home page  ho una serie di bandierine, 
ognuna delle quali è linkata ad uno script php. Tramite il link, passo 
attraverso GET il parametro della lingua, es:
<a href="script.php?lang=IT>BANDIERA ITALIANA</a>
<a href="script.php?lang=EN>BANDIERA INGLESE</a>
Ho una variabile di sessione che si chiama language. Lo script è composto da 
poche righe e non fa altro che ricevere il parametro lang, cambiare questa 
variabile e ritornare alla home page. 

variabile e ritornare alla home page. 
ho fatto cosi' anche io.
ma che fare quando invece di fare il cambio lingua in home page ti
trovi a farlo su una pagina qualsiasi del sito?
come cambiare la variabile di sessione e ri-caricare la pagina da cui
hai lanciato il cambio lingua?
Mha?
ciao
tony

 hai lanciato il cambio lingua?
potresti inviare via get anche l'url della pagina da cui viene chiamato, in 
maniera che lo script reindirizza alla pagina di origine 

sweetman ha scritto:

utilizza un link servendoti delle var
$_SERVER['PHP_SELF'] e $_SERVER['QUERY_STRING']
aggiungendo lang=eng lang=ita etc.
ciao frasca

 hai lanciato il cambio lingua?
Se ho capito bene tu vuoi ottenere qualcosa tipo questo:
http://www.morganalab.eu/cinema.asp
Il sito čin fasi di sviluppo quindi assolutamente incompleto (e con diversi
errori ancora) perň i menu funzionano e il cambio lingua č immediato
rimanendo sulla pagina in visione.
Il mio sito č in asp e uso questa funzione
response.redirect Request.ServerVariables("HTTP_REFERER")
Credo che lo stesso valga per il PHP e le server variable.
Ciao Stefano

aggiungendo lang=eng lang=ita etc.
Hummm! interessante.
Non e' che magari (dico "magari") funziona anche qualcosa del genere?
header("Location: PHP_SELP");
L'ho buttata li'; adesso faccio delle prove, cmq.
ciao e grazie
tony

 Vi ringrazio in anticipo per eventuali dritte.
Ciao,
oltre alle cose che ti hanno gia' indicato io ti consiglierei di non 
utilizzare le sessioni per gestire la lingua (sfrutta invece un 
parametro nella Query String), perche' gli spider dei motori di ricerca 
non sono in grado di salvarle. Questo almeno utilizzando la tecnologia 
ASP dove sostanzialmente sono una specie di cookie, per il PHP dovresti 
verificare sulla documentazione.
-- 
Marlenek
[ 
http://www.dblog.it
 ]
Blog CMS open source

 Credo che lo stesso valga per il PHP e le server variable.
Ciao,
questo metodo e' comodo, ma in alcuni casi non funziona ad esempio 
quando il visitatore utilizza Norton Antivirus con il "blocco script" 
attivato (tra l'altro e' cosi' di default). In questa situazione la 
HTTP_REFERER risulta vuota e dunque non puoi fare il redirect.


 HTTP_REFERER risulta vuota e dunque non puoi fare il redirect.
Norton sarebbe da eliminare da qualsiasi computer perchè è più virus lui
che i virus che intercetta:-)) Però non ho capito come fa a bloccare una
chiamata di redirect fatta lato server, giusto per chiarire 2 righe in ASP
session("lingua")=request.QueryString("lingua")
response.redirect Request.ServerVariables("HTTP_REFERER")
o mi sfugge qualcosa o non capisco come possa un antivirus installato su
una macchina remota intercettare una chiamata del server, è il server che
interpreta la pagina e restituisce al client l'url da caricare....

 interpreta la pagina e restituisce al client l'url da caricare....
Ciao,
il referer indica la pagina di provenienza e questa informazione la 
porta il client. Probabilmente il "blocco script" di Norton attivo 
filtra qualche parametro dell'intestazione HTTP, che quindi non viene 
correttamente passato. La motivazione tecnica e' da verificare, ma ti 
confermo la sua diretta conseguenza :-)


 confermo la sua diretta conseguenza :-)
Non bisognerebbe mai basarsi sul campo referrer per diversi motivi:
- facilmente modificabile dall'utente
- alcuni browser non lo mandano mai