2009
Nov
2

Sito multilingua e PHP

Il PHP è un linguaggio di programmazione orientato al web molto versatile e relativamente semplice da utilizzare. In questo articolo ci occuperemo di come “switchare” da una lingua all’altra tramite il PHP.

Prima di tutto è necessario avere un’idea di quante lingue saranno a tradurre il sito, e includerle tutte nelle pagine interessate. Per esempio potremmo avere una directory chiamata “lingue” contenente i file “en.lng“, “it.lng“, “de.lng“, “es.lng“, ecc. Tutti questi file dovranno avere le corrette traduzioni corrispondenti alle stesse variabili. Vediamo come.

“it.lng”

<?PHP
//è importante che apriamo il tag PHP anche se l'estensione non è di PHP! 
$txt['benvenuto'] = 'Benvenuto!'; 
$txt['login'] = 'Effettua il login!'; 
//ecc..
?>

“en.lng”

<?PHP
$txt['benvenuto'] = 'Welcome!'; 
$txt['login'] = 'Please, login!'; 
//ecc..
?>

E’ molto facile arrivare a numeri alti chiamando la variabile semplicemente “$txt“, è possibile ordinare le sezioni tramite le variabili, così.

<?PHP
//variabili main.php ..
$main['benvenuto']='Benvenuto!';
$main['altro']='whatever!';
//variabili di testo di profile.php ..
$profile['posts']='Numero dei post:';
$profile['username']='Username:';
//e così via..
?>

Ora nello script bisogna creare una funzione che controlli la lingua dell’utente e vada a pescare la lingua di traduzione con la funzione “include()“.
Chiaramente abbiamo bisogno dei cookies.

Possiamo anche creare una pagina intro che permetta la scelta della lingua, o un menu di navigazione con le bandierine, o che so io. Adogni modo la funzione che controlli la lingua è la seguente:

<?PHP
function check_lang() { 
//assicurati che un linguaggio sia selezionato usando questa sessione .. 
  if (!isset($_SESSION['lang'])) { 
  /* potresti anche mostrare un messaggio d'errore e chiudere lo script
    die('Nessuna lingua selezionata! Torna indietro e seleziona una lingua!');*/ 
  //o impostare una lingua di "default"
    $lang = 'en'; 
  } else { 
    $lang = $_SESSION['lang']; 
  } 
//nome directory 
  $dir = 'lingue'; 
//Formato stringa di ritorno: nomedir/filename.ext 
  return "$dir/$lang.lng"; 
} 
?>

Ora nel tuo script vediamo coem usare il testo dai file di lingua.

<?PHP
//questa funzione controlla il linguaggio dell'utente e "ritorna" il file di lingua da includere ..
$lang = check_lang();
include_once($lang); 
//ed ecco come verrà mostrato il testo ..
echo $txt['main_welcome']; 
?>

Per cui non importa quale sia la lingua, il testo apparirà nel posto giusto in ogni caso.

Chiaramente tutti i file di lingua devono avere gli stessi nomi per le variabili.

Admin