- Home
- Categorie
- Coding e Sistemistica
- PHP
- Rimanere nella stessa pagina cambiando la lingua
-
Rimanere nella stessa pagina cambiando la lingua
Ciao ragazzi, in pratica devo costruire un portale che è formato da diverse lingue, questo però per favorire l'indicizzazione dai motori di ricerca deve essere riscritto con la regola del modrewrite, questa regola si applica nel file .htaccess e serve a mascherare la query string in una pagina statica (ma in realtà non lo è). Esempio:
La pagina non riscritta (cioè senza regola del modrewrite applicata) sarà:
mia_pagina?lingua=ita&testo=ciao
mentre la pagina riscritta (con la regola del modrewrite applicata) sarà:
mia_pagina-ita-ciao.htm
Sulla base di questo io devo fare in modo che se mi trovo su una pagina qualsiasi di questo portale e voglio passare ad un'altra lingua presente devo cliccare sulla bandierina e (ricaricando la pagina) mi deve portare sulla stessa pagina però tradotta nella lingua che ho cliccato.
Ecco un esempio di portale che utilizza questo sistema, provate a cliccare su una qualsiasi lingua presente sul sito e guarda sulla barra degli indirizzi:
nozio.com/it/Europa/Italia/Lazio/Roma/alloggi/
Grazie
Matt86
-
Basta ottenere la posizione corrente, e sostituire la lingua attuale con la nuova.
Quindi rimandare in mia_pagina?lingua=nuovalingua&testo=ciao
Riscritta con il mod_rewrite
-
Ciao Thedarkita,
potresti farmi un esempio che non ho capito bene? come la trovo la posizione?
-
Beh tu le variabili GET le prendi per capire quale pagina mostrare, basta rimandarle in output e rigenerare il link
esempio vado su pagina.php?page=asd
La variabile $_GET['page'] sarà uguale ad asd
Quindi facendo <a href="pagina.php<?=$_GET['page']?>">
Trovo la pagina corrente, basta aggiungere invece di ita, la lingua corretta verso cui indirizzare, è più facile a farsi che a dirsi
-
Ma scusa, se la pagina è riscritta? cioè io non ho solo ita deve essere:
pagina.php?lingua=ita&testo=ciao_mondo
e quindi:
pagina-ita-ciao_mondo.htm
-
E' uguale cambia il formato, ma non il resto... invece di pagina.php?var usi il formato che hai scelto usando il mod_rewrite
Le variabili sono comunque GET e a ricreare il link attuale non ci vuole niente, e per cambiare la lingua e sufficiente mettere la variabile GET diversa dalla corrente
-
Ciao Thedarkita, credo che sarò diventato il tuo peggiore incubo,
mi spiego meglio, la mia struttura è fatta con header.php, corpo.php e footer quello che mi hai detto tu come puoi vedere sotto ci sono riuscito, il problema è che io in una pagina ho (come parametri get) **id, titolo e lingua **in ultra pagina io ho id, categoria, messaggio, titolo e lingua.
Quello che non ho capito e che cercavo di spiegarti è questo. Cioè io come devo fare a cambiare lingua e a rimanere sulla stessa pagina avendo una struttura con header, corpo e footer? Non c'è una funzione che posso prendere o se mi dai una mano a costruirla? Te ne sarei molto grato.<?php $lingua = $_GET['lingua']; $titolo_['ita'] = "ciao"; $titolo_['eng'] = "hallo"; ?> <p><a href="1.php?id=<?php echo $_GET['id']; ?>&titolo=<?php echo $titolo_["ita"]; ?>&lingua=ita">ITA</a> - <a href="1.php?id=<?php echo $_GET['id']; ?>&titolo=<?php echo $titolo_["eng"]; ?>&lingua=eng">ENG</a></p> <p><?php echo $_GET['id']; ?> - <?php echo $titolo_["$lingua"]; ?></p>
Scusa ancora per il disturbo
matt86
-
Allora, tu devi creare i link per andare nella stessa pagina in unaltra lingua(come avevo capito io leggendo la discussione), oppure devi su uno stesso file fisico avere uno switch per la lingua da mostrare?
-
In pratica io devo costruire un portale con diverse pagine da ogni pagina io posso cambiare lingua e devo rimanere sulla stessa pagina ma tradotta nella lingua selezionata. In ogni pagina però sulla querystring posso avere parametri get diversi. Es:
pagina1.php?lang=ita&id=5&messaggio=ciao
oppure in una altra pagina:
pagina2.php?lang=ita&cat=6&testo=ciao_a_tutti
oppure in una altra pagina:
pagina3.php?lang=ita&id_macro=10&id_pag=2
.......
(quando cambio lingua nella barra degli indirizzi avrò):
pagina1.php?lang=eng&id=5&messaggio=hello
oppure in una altra pagina:
pagina2.php?lang=eng&cat=6&testo=hello_everybody
oppure in una altra pagina:
pagina3.php?lang=eng&id_macro=10&id_pag=2
.......