Precedente :: Successivo |
Autore |
Messaggio |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 02 Nov 2005 09:56 Oggetto: Doppio sito per doppia lingua? |
|
|
Ciao, vediamo chi riesce a risolvere un problemino che, per alcuni è molto semplice, per me è ... un bel problema.
Vorrei che il mio sito avesse una doppia lingua (italiano e inglese). Attualmente lo è, ma non per tutte le pagine. Se lo andate a vedere forse ci capiamo meglio.
Se sono nell'homepage in italiano non c'è un gran problema, basta cliccare su "versione Inglese" e ho l'homepage (o almeno quanto ho scritto in inglese di tale pagina) in inglese. Ma se dall'homepage inizio a navigare e vado dentro a qualche voce, utility per esempio, e poi voglio cambiare lingua, vengo catapultato di nuovo nell'homepage della lingua che ho appena cliccato. I due link che mi permettono l'attuale cambio lingua si trovano dentro ad un div chiamato #language e sono scritti in un file esterno (vengono poi caricati grazie all'include del php).
Spero mi possiate aiutare. Io vorrei che, anche se clicco da in qualche voce del menù, la lingua cambiasse direttamente mostrando la stessa pagina che stavo vedendo (e non come è ora venire catapultati di nuovo in homepage).
C'è qualche soluzione? |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 02 Nov 2005 10:12 Oggetto: |
|
|
Io farei così:
1) la pagina è la stessa con delle variabili al posto dei testi.
2) per ogni pagina hai un file per ogni lingua contenete le variabili del punto 1 con il testo appropriato.
3) le pagine hanno un if che controlla una variabile in sessione che contiene la lingua (ad esempio "it" o "en"), in base al valore carichi un include piuttosto che un altro.
4) la bandierina carica una pagina che non fa altro che aggiornare la variabile in sessione e redirigere sulla pagina di provenienza (tipo $_SERVER["HTTP_REFERER"])
In questo modo hai molti vantaggi, se cambi il layout della pagina lo fai in un posto solo e non in due. Se io utente cambio la lingua in qualsiasi punto del sito poi posso navigare tutto il resto con la nuova lingua.
------------------
Edit:
Per risolvere immediatamente il tuo problema invece il link sulla badierina inglese puoi farlo mettendo
Codice: | "en_" . $_SERVER['SCRIPT_NAME'] |
|
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 02 Nov 2005 10:28 Oggetto: |
|
|
Sono ignorante come un muro su quelle cose lì, io ho preso come esempio il mio sito, e penso che metterci le mani adesso sia un po' troppo complicato. Volevo imparare il procedimento corretto visto che adesso devo partire da zero col sito di un amico (italiano + inglese), quindi ho scritto per questo.
Immagino che il file css non c'entri a niente, quindi quello va sempre bene per tutte le versioni, giusto? |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 02 Nov 2005 11:01 Oggetto: |
|
|
Il css non c'entra nulla con le lingua ma il concetto è lo stesso.
Nella pagina tu definisci gli oggetti assegnando delle classi che poi verranno rappresentate graficamente grazie ad un foglio di stile piuttosto che un altro. Per modificare tutta la grafica in una volta sola ti basta cambiare il css.
Allo stesso modo puoi fare per le lingue, la pagina avrà dei "segnaposto" per i vari testi, quando tu generi la pagina lato server carichi un file esterno con la lingua prescelta e fai le sostituzioni dei segnaposto.
Ad esempio nella pagina puoi mettere.
pagina.php
Codice: |
if ($_SESSION['lingua'] == "en")
require 'lingua_en.php';
else
require 'lingua_it.php';
echo '<h1>' . $lingua['titolo'] . '</h1>'; |
e i file inclusi sono del tipo:
lingua_en.php
Codice: | $lingua['titolo'] = 'My Homepage'; |
lingua_en.php
Codice: | $lingua['titolo'] = 'La mia prima pagina'; |
NB: ho scritto di fretta e il codice potrebbe contenere errori, l'ho messo giusto per chiarire la mia idea. |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 02 Nov 2005 11:08 Oggetto: |
|
|
atigra ha scritto: | Sono ignorante come un muro su quelle cose lì |
anch'io e percio' ti faccio una domanda: serve?
mi spiego: mi e' capitato di fare siti in passato dove ogni pagina era linkata alla relativa pagina in inglese, ma quanti utenti navigano "incrociato"?
e' molto piu' probabile e logico che un utente scelga all'inizio la lingua da usare e poi continui a navigare con quella, quindi pur senza nulla togliere al sistema di horus che puo' tornar utile per altre cose (i css), forse questo problema e' un "non problema", se capisci quel che voglio dire  |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 02 Nov 2005 11:15 Oggetto: |
|
|
Sicuramente quel che dici è vero, quello che ho scritto è quello che farei io, in questo modo se ad esempio devo aggiungere un div o cambiare una classe per il css lo faccio in un file solo e non in due, se devo aggiungere una lingua aggiungo solo un file contenente le stringhe di testo e non tutta la struttura del sito.
Come per tutti i siti bisogna valutare necessità e difficoltà di realizzazione, quanto devo manutenerlo, ecc. Io sono pigro in manutenzione e nello scrivere righe di codice, come ho già detto in passato la mia massima è: "Se scrivo la stessa riga due volte l'ho già fatto una di troppo." |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 02 Nov 2005 11:19 Oggetto: |
|
|
horus ha scritto: | "Se scrivo la stessa riga due volte l'ho già fatto una di troppo." |
su questo punto andiamo ben d'accordo
cmq non volevo affatto sminuire la tua proposta, solo mettere sul piatto un altro punto di vista, tutto qua  |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 02 Nov 2005 11:24 Oggetto: |
|
|
Serve?
Penso proprio di si. Mi spiego. Il sito che farò è di un amico italiano che vive a Londra (parla bene entrambe le lingue). Inoltre non mi piace avere in homepage la scelta obbligata della lingua (è una pagina in cui si è obbligati a passare ---> perdita di tempo a visitare una pagina inutile). Sono certo che si può avere il sistema per cui la lingua di un sito multilingua viene scelta automaticamente dal browser (in base a come è impostato nella lingua appunto). Voglio però dare sempre la possibilità all'utente di cambiare lingua in ogni momento, senza però portarlo ogni volta nell'homepage della lingua base scelta.
Ho comunque appena testato il sistema di Horus, c'era solo un piccolo errorino con un en da mettere it. Adesso provo a procedere con altri test, non mancherò di stressarvi ancora. |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 02 Nov 2005 11:33 Oggetto: |
|
|
atigra ha scritto: | Serve?
Penso proprio di si. Mi spiego. Il sito che farò è di un amico italiano che vive a Londra (parla bene entrambe le lingue). è una pagina in cui si è obbligati a passare ---> perdita di tempo |
premettendo che non ho modo di dubitare che la tua sia la scelta piu' opportuna per questo particolare lavoro, visto che poi le discussioni sono seguite anche da altri con progetti ed esigenze diverse, approfitto per aggiungere altre considerazioni circa quanto hai detto
(si tratta semplicemente di considerazioni che ogni webdesigner deve fare in fase di progettazione)
vero, la splash con la scelta della lingua e' una pagina in piu', ma potrebbe essere giustificata nel caso in cui le lingue fossero piu' di due, ad esempio (a me e' capitato di lavorare con 5 lingue)
il tuo amico e' perfettamente bilingue, ma non e' lui che visitera' le proprie pagine, bensi' altri utenti che presumibilmente non lo saranno
dopo aver usato altri sistemi, nell'ultimo progetto (due lingue) ho scelto il modo che hai tu attualmente nel tuo sito (anzi: le bandierine sono direttamente parte del menu): di default l'index con la lingua principale (nel mio caso l'italiano, in quello del tuo amico sicuramente l'inglese) e da li' la possibilita' di cambiare arrivando pero' sempre alla home e vedo che il sistema funziona
dipende pero' dal tipo di progetto decidere se la mole di lavoro extra e' giustificata o meno 
L'ultima modifica di rebelia il 02 Nov 2005 11:35, modificato 1 volta |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 02 Nov 2005 11:34 Oggetto: |
|
|
Horus...abbiamo un problema!
ho provato questo, modificando leggermente gli it e gli en che mi hai messo tu:
Codice: |
<?php if ($_SESSION['lingua'] == "it")
require 'lingua_it.php';
else
require 'lingua_en.php';
echo '<h1>' . $lingua['titolo'] . '</h1>'; ?>
|
Il risultato è che carica la versione in inglese, il che è sbagliato, giusto? |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 02 Nov 2005 11:44 Oggetto: |
|
|
rebelia ha scritto: | atigra ha scritto: | Serve?
il tuo amico e' perfettamente bilingue, ma non e' lui che visitera' le proprie pagine, bensi' altri utenti che presumibilmente non lo saranno
dopo aver usato altri sistemi, nell'ultimo progetto (due lingue) ho scelto il modo che hai tu attualmente nel tuo sito (anzi: le bandierine sono direttamente parte del menu): di default l'index con la lingua principale (nel mio caso l'italiano, in quello del tuo amico sicuramente l'inglese) e da li' la possibilita' di cambiare arrivando pero' sempre alla home e vedo che il sistema funziona
dipende pero' dal tipo di progetto decidere se la mole di lavoro extra e' giustificata o meno  |
Io ho scritto che è italiano e vive a Londra, quindi per forza di cose implicava che, anche se lui è bilingue, avrà sicuramente degli amici italiani e inglesi che non lo sono, per questo mi ha richiesto il discorso della doppia lingua.
Il sistema che ho adottato io nel mio mio sito (e anche tu nel tuo) rimanda all'homepage, ma penso che non sia proprio il massimo in quanto obbliga a ripassare ancora per l'homepage quando si cambia la lingua. E la cosa sinceramente è un po' odiosa. Se poi tu mi dici che senso ha dopo aver visto 5 pagine in italiano avere la sesta in inglese..su questo potrei essere daccordo. Ma visto che ormai sono in ballo per fargli sto doppio sito, tanto vale farlo coi dovuti crismi, così s'imparano cose nuove, magari può tornarti utile in futuro.
E poi lo sai... se non faccio le cose difficili... non ci provo gusto! |
|
|
Top |
|
 |
tas Eroe in grazia degli dei


Registrato: 03/10/05 09:59 Messaggi: 166 Residenza: Profondo nord
|
Inviato: 02 Nov 2005 12:19 Oggetto: |
|
|
horus ha scritto: | Io farei così:
1) la pagina è la stessa con delle variabili al posto dei testi.
2) per ogni pagina hai un file per ogni lingua contenete le variabili del punto 1 con il testo appropriato.
3) le pagine hanno un if che controlla una variabile in sessione che contiene la lingua (ad esempio "it" o "en"), in base al valore carichi un include piuttosto che un altro.
4) la bandierina carica una pagina che non fa altro che aggiornare la variabile in sessione e redirigere sulla pagina di provenienza (tipo $_SERVER["HTTP_REFERER"])
In questo modo hai molti vantaggi, se cambi il layout della pagina lo fai in un posto solo e non in due. Se io utente cambio la lingua in qualsiasi punto del sito poi posso navigare tutto il resto con la nuova lingua.
--- cut ---
|
Ok, questo sistema è interessante ma mi viene questo dubbio: nel caso in cui il sito venga visitato da un motore di ricerca, lo spider riesce ad entrare nelle pagine delle varie lingue? Oppure c'è qualche impedimento dovuto all'utilizzo della sessione? |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 02 Nov 2005 12:37 Oggetto: |
|
|
FERMI TUTTI!!! Questo sistema non funziona a dovere. Mi spiego.
Col seguente codice:
Codice: |
<?php if ($_SESSION['lingua'] == "it")
require 'lingua_it.php';
else
require 'lingua_en.php';
echo '<h1>' . $lingua['titolo'] . '</h1>'; ?> |
Un browser italiano visualizza la scritta in INGLESE. (quindi questo è sbagliato)
Un browser inglese visualizza la scritta in INGLESE.
Col seguente codice:
Codice: |
<?php if ($_SESSION['lingua'] == "en")
require 'lingua_en.php';
else
require 'lingua_it.php';
echo '<h1>' . $lingua['titolo'] . '</h1>'; ?>
|
Un broswer italiano visualizza le scritte in ITALIANO.
Un browser inglese visualizza le scritte in ITALIANO. (quindi questo è sbagliato)
Qualche rimedio o soluzione alternativa? Non ho idea per il discorso dei motori di ricerca (e quindi forse è meglio usare il sistema di Rebelia). |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 02 Nov 2005 15:02 Oggetto: |
|
|
La mia idea partiva da una lingua di default italiana (l'avevo messo nell'else).
Per avere la lingua inglese devi fare un'assegnazione del tipo:
Codice: | $_SESSION['lingua'] = "en"; |
Da quel momento in poi dovrebbe entrare nell'if.
Al limite puoi controllare che la session sia valorizzata con:
Codice: | if (!isset($_SESSION['lingua']))
$_SESSION['lingua'] = "it"; |
Controlla se la variabile è stata assegnata ed in caso contrario (il ! prima del nome funzione) la imposta al valore it. |
|
Top |
|
 |
|