Sito multilingua: Come indirizzare l’utente automaticamente?
In questo articolo vedremo come implementare una funzionalità molto semplice e che risponde a questa domanda: in un sito multilingua, come posso indirizzare automaticamente il visitatore al giusto sito?
L’operazione come ho detto è semplice e per implementarla svilupperemo uno script facilmente configurabile e adatto alle più svariate situazioni. Sei pronto?
Scenario: sito multilingua
Il nostro ipotetico sito sarà in tre lingue: italiano, inglese e tedesco. Lo script che svilupperemo sarà l’index.php della directory radice del webserver. I tre sottositi saranno invece contenuti nelle cartelle italiano, english, deutsch.
Quello che dovrà fare il nostro index.php è capire quale sia la lingua del visitatore e reindirizzarlo alla cartella corrispondente.
Rilevare il linguaggio
La variabile superglobale $_SERVER[“HTTP_ACCEPT_LANGUAGE”] contiene una stringa con delle informazioni relative alla lingua impostata sul browser del visitatore e sarà qualcosa del genere:
it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
Per quello che dobbiamo fare, ci interessano i primi due caratteri di questa stringa che saranno:
- it per l’italiano;
- en per l’inglese;
- de per il tedesco.
Utilizziamo dunque la funzione substr() per isolare questi primi due caratteri:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
Definire le associazioni
Dichiariamo ora un array associativo nel quale metteremo in relazione le possibili stringhe ottenute con le corrispondenti cartelle
$lang_config = array( "it" => "italiano/", "en" => "english/", "de" => "deutsch/", "default" => "italiano/");
Ho inserito anche una chiave denominata “default”. Come avrai capito indica la cartella da caricare nel caso in cui il visitatore abbia impostato una lingua non supportata dal nostro sito.
Trovare la giusta cartella
A questo punto, per trovare la giusta cartella, non ci resta che vedere se la stringa che abbiamo rilevato all’inizio (it, en, …) è presente come indice dell’array tramite la funzione array_key_exists(). Se lo è, la cartella sarà il valore di quell’indice; in caso contrario utilizzeremo il valore dell’indice “default”.
if(array_key_exists($lang, $lang_config)) { $location = $lang_config[$lang]; } else { $location = $lang_config['default']; }
Ed ora non ci resta che reindirizzare:
header('Location: ' . $location);
Ed ecco lo script completo:
<?php $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); $lang_config = array( "it" => "italiano/", "en" => "english/", "de" => "deutsch/", "default" => "italiano/"); if(array_key_exists($lang, $lang_config)) { $location = $lang_config[$lang]; } else { $location = $lang_config['default']; } header('Location: ' . $location); ?>
Conclusione
Come hai visto, con poche righe di codice, abbiamo potuto sviluppare uno script di facile configurazione ed utilizzo per reindirizzare correttamente i visitatori in un sito multilingua.
Ti è già capitato di dover sviluppare siti del genere? Che soluzioni hai implementato?
47 commenti
Trackback e pingback
[...] Sito multilingua: Come indirizzare l’utente automaticamente? (Your Inspiration Web) [...]