Può capitare di dover realizzare siti web che necessitino di essere fruibili in varie lingue. Il problema non è di poco conto, ma con qualche semplice accorgimento può diventare semplicemente superabile. Al fine di realizzare un sito web multi-lingua facilmente aggiornabile, sia dal punto di vista dei contenuti che da quello dell'aggiunta di una nuova lingua, sfrutteremo dei file di testo per i nostri contenuti.
Il nostro obiettivo è quello di realizzare uno strumento facilmente riutilizzabile e che ci permetta di gestire quante lingue vogliamo, senza incappare in problemi tecnici.
Come al solito il file con il codice dell'esempio trattato nell'articolo è scaricabile dal link download in alto in questa pagina.
Appunti per la creazione del sito
Creare un sito multi-lingua, dal punto di vista creativo, non differisce affatto da crearne uno mono-lingua, fatta eccezione per alcune accortezze che bisogna tenere presenti.
- Identificare un punto facilmente visibile ed accessibile per contenere i link per il cambio di lingua;
- Se vi sono immagini che contengono del testo, anche queste devono essere tradotte e nominate in maniera specifica (vedremo poi come).
- Se si suppone di dover avere a che fare con lingue che utilizzano caratteri diversi da quelli tipici occidentali, è buona norma impostare la codifica delle pagine su Unicode (UTF-8) al fine di poter visualizzare anche i caratteri cirillici, greci e gli ideogrammi.
Il gestore delle lingue
Dopo aver creato la struttura del nostro sito dovremo procedere alla creazione del gestore delle lingue, si tratta di un file che ci permetterà di gestire agevolmente tutte le lingue che vorremo inserire nel nostro sito. Nel gestore andremo ad impostare il numero delle lingue, il loro nome ed ad indicare, se necessario, il nome della bandierina di riferimento.
In più, cosa importantissima, sarà lo stesso gestore a permetterci di includere il file contenente i testi della lingua desiderata e di decidere la lingua di default del nostro sito.
$lingue = array(1=>'Italiano', 'English', 'По-русски');
$choose = array(1=>'Scegli la lingua', 'Choose language', 'Choose language');
$flags = array(1=>'it', 'us', 'ru');
$lingua = @$_GET['lingua'];
if (!$lingua) $lingua = 1; // default italiano
switch ($lingua)
{
case 1:
include "lingue/it.php";
break;
case 2:
include "lingue/us.php";
break;
case 3:
include "lingue/ru.php";
break;
}
Questo metodo ci permette di non dover intervenire sulle pagine del sito nel caso di una nuova lingua. Come è possibile questo? Utilizzando la funzione foreach()
possiamo scorrere semplicemente l'array $lingue
che contiene tutte le lingue che intendiamo adoperare nel nostro sito
<'php foreach ($lingue as $k=>$v) { if ($k != $lingua) { ?> <a href="?lingua=<?php echo $k; ?>"><img src="bandiere/<?php echo $flags[$k]; ?>.gif" alt="<?php echo $v; ?>" title="<?php echo $v; ?>" border="0" /></a> <?php } } ?>
Queste poche righe di codice ci permettono di non intervenire sulle pagine del sito qualora decidiamo di inserire una nuova lingua.
Contenuto dei file con i testi
Come già abbiamo detto, creare un sito multilingua non si discosta molto da creare un normale sito web. Per semplificare il lavoro conviene creare un'ossatura di base del sito e riempirla con i testi necessari, almeno per una lingua. Questi testi, immagini (ma anche contenuti quali java e/o flash) faranno da segnaposto per permettere una agevole gestione del lavoro.
Il mio consiglio è quello di creare il primo file con i testi basandosi su quello che abbiamo inserito come segnaposto, immaginiamo di aver riempito il nostro sito con contenuti in lingua italiana: creiamo allora un file it.php che contenga tutti i nostri contenuti in italiano.
Per prima cosa inseriamo nel nostro file it.php, i riferimenti per i testi fissi del sito come titolo, parole chiave, descrizione ed i nomi dei link di navigazione.
È importante che le variabili utilizzate siano chiamate in modo descrittivo, per permetterci di capire, anche a distanza di tempo, in che pagina ed in che punto abbiamo usato una data variabile.
/* Testi fissi */ $TITOLO = "Titolo in italiano"; $PAROLECHIAVE = "parole, chiave, in, italiano"; $DESCRIZIONE = "sezione in italiano del sito multilingua"; $COPYRIGHT = "© Copyright 2009 Tutti i diritti riservati"; /* LINK DI NAVIGAZIONE */ $HOMEPAGE = "Home Page"; $LINK01 = "Link UNO"; $LINK02 = "Link DUE"; $LINK03 = "Link TRE"; $LINK04 = "Link QUATTRO";
Procediamo ora ad inserire i contenuti del sito (testi, immagini, flash, applet, ecc…), qui possiamo procedere in due modi distinti:
- Inseriamo i testi, le immagini e gli altri contenuti in variabili distinti utilizzabili singolarmente all'interno del sito.
/* CONTENUTI SU VARIABILI MULTIPLE */
$TITOLO = "Titolo della pagina";
$TESTO = "Testo contenuto nella pagina.";
$IMMAGINE = "<img src="immagine.jpg" altr="Immagine">";
- Inserire tutto il testo comprese immagini e formattazioni nella stessa variabile
/* CONTENUTI SU UNICA VARIBILE */
$VARIABILE = "È possibile inserire <strong>tutto</strong> il testo e la formattazione nella stessa variabile, ed includere anche altri contenuti come "<img src="immagine.jpg" altr="Immagine"> Immagini";
Gestire altri contenuti
Come già detto anche le immagini, i contenuti flash e gli applet possono essere differenziati in base alla lingua, il nostro sistema differenzia le lingue in base ad un valore numerico dettato dalla posizione nell'array $lingue
contenuto nel gestore.php.
Nel nostro caso la lingua italiana è rappresentata dal valore 1, quindi potremmo sfruttare questo a nostro vantaggio per differenziare le immagini, ad esempio se dovessimo inserire un banner diverso per ogni lingua potremmo chiamarlo banner_1.jpg per la lingua italiana, banner_2.jpg per l'inglese e così via per ogni lingua.
<img src="banner_".$lingua.".jpg" alt="$Titolo_Immagine" border="0">
La stessa procedura vale ovviamente anche per gli altri tipi di contenuti.
In conclusione
Abbiamo visto come sia potenzialmente semplice realizzare un sito multilingue statico, e come questo metodo possa essere semplice da aggiornare in caso di una nuova lingua o nuova pagina.
È ovvio che questo metodo non sia consigliabile per siti dinamici con frequenti aggiornamenti del contenuto, ma in questi casi possiamo ricorrere a questo metodo per gestire i testi statici del sito.