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.