Precedente :: Successivo |
Autore |
Messaggio |
bardolph Mortale devoto

Registrato: 04/09/06 22:37 Messaggi: 6
|
Inviato: 04 Set 2006 22:50 Oggetto: * redirect browser |
|
|
Da qualche tempo osservo con interesse le discussioni di questo forum ed essendo il mio primo intervento colgo l'occasione per un saluto a tutti.
Ora vengo al problema: vorrei sapere se, avendo un sito multilingue, è possibile "sniffare" la lingua del browser del visitatore e quindi indirizzarlo alla pagina "localizzata". Se fosse possibile uno script PHP sarebbe preferibile ad un javascript.
grazie anticipate |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 05 Set 2006 00:04 Oggetto: |
|
|
Benvenuto bardolph!
Possibile, so per sentito dire che è possibile. (mi pare sia una cosa insita e stabilita proprio nel protocollo http: )
Sul come fare (e in particolare in PHP) ti lascio agli esperti in materia ... |
|
Top |
|
 |
bardolph Mortale devoto

Registrato: 04/09/06 22:37 Messaggi: 6
|
Inviato: 05 Set 2006 23:41 Oggetto: |
|
|
ciao chemicalbit,
grazie della risposta. spero che gli dei degli script intervengano |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 11 Set 2006 11:04 Oggetto: |
|
|
La variabile server HTTP_ACCEPT_LANGUAGE contiene indicazioni sulle preferenze per la lingua impostate nel browser.
Non mi fiderei troppo però in quanto non tutti sanno che è possibile personalizzare l'elenco delle lingue e rischieresti forse di confondere gli utenti, se hai un sito multilingua sarebbe preferibile lasciare all'utente la possibilità di scegliere, al massimo quella del browser potrebbe essere predefinita. |
|
Top |
|
 |
bardolph Mortale devoto

Registrato: 04/09/06 22:37 Messaggi: 6
|
Inviato: 11 Set 2006 23:12 Oggetto: |
|
|
Grazie horus per la risposta.
Avrei trovato, nel frattempo, in rete questo codice:
<?php
if(strstr($HTTP_ACCEPT_LANGUAGE,"en-us")) {
Header("Location: http://www.miosito.com/eng/index.html");
}
elseif(strstr($HTTP_ACCEPT_LANGUAGE,"fr")) {
Header("Location: http://www.miosito.com/fra/index.html");
}
elseif(strstr($HTTP_ACCEPT_LANGUAGE,"de")) {
Header("Location: http://www.miosito.com/ger/index.html");
}
elseif(strstr($HTTP_ACCEPT_LANGUAGE,"en-us")) {
Header("Location: http://www.miosito.com/spa/index.html");
}
elseif(strstr($HTTP_ACCEPT_LANGUAGE,"en-us")) {
Header("Location: http://www.miosito.com/ita/index.html");
}
else {Header("Location: http://www.miosito.com/ita/index.html");
}
?>
e pensavo di usarlo, però quanto detto da te mi ha un poco bloccato. non capisco cosa intendi quando dici che alcuni utenti potrebbero essere confusi da questa soluzione. potrsti , per cortesia, spiegarmelo con altre parole. naturalmente avevo pensato comunque di di aggiungere le classiche bandierine per cambiare, eventualmente, la lingua proposta.
grazie per l' interessamento |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 12 Set 2006 00:03 Oggetto: |
|
|
Intendeva proprio quello.
Facciamo un esempio "estremo" e quindi chiaro.
Arriva a casa tua un tuo amico inglese che non parla italiano, e gli vuoi far vedere il tuo sito.
Mentre gli prepari un caffè gli dici di accendere il tuo pc e di andare sul tuo sito. Il tuo browser è impostato come lingua = italaino, quindi il tuo sito grazie a quello script gli farà (giustamente) vedere le pagine in italiano. Che però lui non capisce.
Deve esserci un modo per cui lui possa pasare alla pagine in lingua inglese. |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 12 Set 2006 09:06 Oggetto: |
|
|
Concordo con Chemicalbit, oltre a questo non sempre le persone vanno a modificare tali impostazioni quindi potrebbe capitare un'installazione in inglese del sistema operativo e del browser sul pc di una persona italiana che vorrebbe vedere i siti nella sua lingua.
Le bandierine comunque risolvono questo tipo di problema. Probabilmente non era tua intenzione ma te lo suggerisco lo stesso: evita di fare una prima pagina contenente solo le bandierine per la scelta della lingua, inserici l'opzione in tutte le pagine. |
|
Top |
|
 |
bardolph Mortale devoto

Registrato: 04/09/06 22:37 Messaggi: 6
|
Inviato: 12 Set 2006 09:22 Oggetto: |
|
|
grazie ancora per le sollecite risposte.
la mia intenzione era quella di mettere cmq le bandierine in home page, ma sicuramente le metterò anche nelle altre pagine (magari provando a sperimentare con include; anche se sono assolutamente a zero per quanto riguarda PHP). Ancora un suggerimento: le bandierine possono puntare sempre e solo alla home oppure è meglio che puntino alla corrispondente pagine nelle varie lingue? la prima soluzione sarebbe molto meno laboriosa.
grazie
bardolph |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 12 Set 2006 09:57 Oggetto: |
|
|
Personalmente propenderei per la pagina in cui ti trovi così chi cambierà lingua non dovrà ricominciare da capo la navigazione. Se usi bene le variabili d'ambiente non sarà così terribile.
P.S.: so che è in fase di progettazione del sito sarà dura ma ti sconsiglio il tuo attuale approccio con una cartella per ogni lingua in favore di una pagina sola e un file di "traduzione" per ogni lingua. Prova ad immaginare di avere tante lingue e di decidere di cambiare un dettaglio strutturale in una pagina, dovrai modificare un file per ogni lingua, allo stesso modo se crei una nuova pagina dovrai creare tanti file quante sono le lingue. |
|
Top |
|
 |
bardolph Mortale devoto

Registrato: 04/09/06 22:37 Messaggi: 6
|
Inviato: 12 Set 2006 11:34 Oggetto: |
|
|
grazie per la tua sollecita risposta.
purtroppo come ti ho detto non sono in grado di programmare, per cui sarò costretto a "lavorare di più" in caso di eventuali modifiche; per me è già stato un impegno cercare di capire come adoperare gli include ( e nn so se ci sono pienamente riuscito (sic)) tanto per poter "automatizzare" ad es i menu di navigazione e le "famose" bandierine. In quanto all'approccio "una cartella per ogni lingua" mi pareva potesse semplificarmi la vita appunto cambiando solo i nomi ad es menu nelle varie lingue lasciando invariati i collegamenti. cmq cercherò di studiare un poco il metodo che mi suggerisci.
ciao e grazie
bardolph |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 12 Set 2006 12:38 Oggetto: |
|
|
bardolph ha scritto: | purtroppo come ti ho detto non sono in grado di programmare, per cui sarò costretto a "lavorare di più" in caso di eventuali modifiche; | Non so praticamente nulla di php, ma penso basti usare le fuznioni if.. elseif ...elseif... else che usa lo script che tu hai indicato. (al posto di includere l'intera pagina, includi in ogni punto della pagina il pezzo di pagina nella lingua adatta.)
lingua adatta = quella determinata da $HTTP_ACCEPT_LANGUAGE a meno che non sia stata cambiata da una "bandierina".
(non so per questo cosa convenga usare. cookie ?)
Purtroppo non riesco a fare un esempio perhcé non consoco il php, ma qualcosa tipo
Codice: | <!-- pseucodice -->
<h1>Nome del sito</h1>
if lingua == en {
scrivi "Benvenuto nel nostro sito"
}
elseif lingua == it {
scrivi "You are welcome at our site"
}
elseif lingua == ...
{
scrivi "..."
}
else
{
scrivi"Lingua non prevista. Ci spiace, il sito verrà visualizato in italiano.<br/>
Benvenuto"}
<img src=logo.jpg alt=....>
if lingua == en {
includi (novità-en.php)
}
elseif lingua == it {
includi (novità-it.php)
}
elseif lingua == ...
{
includi (...)
}
else
{
includi (novità-it.php)
}
|
eccetera
bardolph ha scritto: | per me è già stato un impegno cercare di capire come adoperare gli include ( e nn so se ci sono pienamente riuscito (sic)) | con include intendi i ServeSideInculude o è una funzione di php ? |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 12 Set 2006 14:30 Oggetto: |
|
|
Ehm... no, non intendevo quello che ha suggerito Chemicalbit.
Io pensavo ad una struttura di cartelle in cui usi la lingua come nome ad esempio:
Codice: |
root
-- pagina.php
-- lingue
---- en
------ lingua.php
---- it
------ lingua.php
---- fr
------ lingua.php
---- ..
|
un file tipo lingua.php conterrebbe nella cartella it
Codice: |
$lingua["titolo"] = "Titolo della mia pagina";
|
e in quella en
Codice: |
$lingua["titolo"] = "Page title";
|
un file tipo pagina.php conterrebbe
Codice: |
require_once('/lingue/'.$_SERVER("HTTP_ACCEPT_LANGUAGE").'/lingua.php');
...
echo '<h1>'.$lingua["titolo"].'</h1>';
...
|
Questo è puramente un esempio e andrebbe affinato ma spero che ugualmente ti faccia intendere quello che pensavo. In sostanza si tratta di sostituire tutti i testi di una pagina con delle variabili (o con un array) e poi definire un file per ogni lingua contenente solamente le variabili di testo. In questo modo il codice della pagina rimane pulito e ristretto esclusivamente alla logica e alla struttura mentre le "etichette" verranno caricate dinamicamente in base alla lingua.
Se però sei completamente a digiuno di php non so se è una strada percorribile. |
|
Top |
|
 |
bardolph Mortale devoto

Registrato: 04/09/06 22:37 Messaggi: 6
|
Inviato: 12 Set 2006 20:10 Oggetto: |
|
|
@horus
penso che la tua ultima frase rappresenti purtroppo la mia realtà, in ogni caso grazie per il sostegno
@chemicalbit
sì, per include intendevo l'include php,
grazie anche a te per l'interessamento.
alla prossima
bardolph |
|
Top |
|
 |
|