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.

sito multilingua

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?

Tag: , ,

L'autore

Maurizio è sposato con la triade PHP - MySql - Apache e, non pago, ha un'amante chiamata jQuery. Ha un blog dove cerca di descrivere nei minimi particolari sia la moglie che l'amante. La sua vera specialità è la realizzazione di gestionali complessi anche se non rifiuta mai un sito web. +

Sito web dell'autore | Altri articoli scritti da

Articoli correlati

47 commenti

Trackback e pingback

  1. Articoli della settimana 15/01/2012 | Saverio Gravagnola
    [...] Sito multilingua: Come indirizzare l’utente automaticamente? (Your Inspiration Web) [...]