Salve, questa sarà la prima di alcuni piccoli tricks in php che durante alcuni miei lavori mi hanno letteralmente salvato la vita! Oggi affronteremo l’annosa questione del multilingua, realizzare cioè pagine con titoli e testo che cambiano a seconda del linguaggio che verrà indicato. A causa dell’eccessiva lunghezza, sono costretto a dividerlo in due parti,appena possibile posterò la seconda, non preoccupatevi 😉

Obiettivo: realizzare uno script che, settando una variabile che indica la lingua in fase di logging o direttamente cliccando su un pulsante in pagina, ci permetta di variare la lingua dei contenuti in pagina.

Possiamo suddividere in due sottoproblemi la nostra questione:

Gestione della lingua corrente : useremo una variabile php chiamata $lang per indicare la lingua corrente. Essa assume un valore presente nell’array di Sessione se valorizzato (così ci possiamo portare l’informazione sulla lingua durante tutta la visita sul nostro sito, ricordiamoci di chiamare la funzione session_start() in ogni pagina), altrimenti assume un valore di default (nell’esempio impostato su “ITA”).Ad ogni valore che tale variabile può assumere corrisponderà ad una lingua che noi supporteremo. Nel nostro esempio i valori che può assumere è “ITA” per l’italiano e “ENG” per l’inglese. Con tale script possiamo agire sul valore della lingua corrente in due possibili casi:

1. Nel login: durante la fase di iscrizione, possiamo far decidere all’utente in quale linguaggio potrà vedere i contenuti; successivamente ci basterà fare un aggiunta allo script ed inserire l’assegnazione fra la variabile di sessione e la lingua scelta dallo user ( es: $_SESSION[‘lang’]=”ITA”).Poi lo script cambierà il contenuto della pagina.

2. in ogni pagina: è anche sì possibile inserire in certe pagine una serie di pulsanti o bottoni che inneschino un refresh della stessa con relativo invio di dati tramite POST o GET; aggiungendo, prima dello script del multilingua , poche righe di codice, possiamo farsì che tali eventi modifichino ( e salvino nella sessione) la variabile $lang, con conseguente modifica dei contenuti
.
Ecco un esempio del codice:

//se qualcuno ha cliccato su un pulsante
if(isset($_GET[‘lang’]))
{
$lang =$_GET[‘lang’];
$_SESSION[‘lang’]=$lang ;
}
else
{
if(isset($_SESSION[‘lang’]))
{
$lang = $_SESSION[‘lang’];
}
else
{
//valore di default

$lang = “ITA”;

}

}

switch($lang)
{…}
?>

Cambio dei contenuti : sapendo la lingua dei contenuti da mostrare, come posso variare dinamicamente il testo in pagina? Il meccanismo che adotteremo è semplice, nelle pagine che dovranno essere multilingua invece di scrivere e stampare direttamente sull’html una stringa, la sostituiremo con una variabile php il cui valore verrà caricato precedentemente dal nostro script a seconda del valore di $lang.

Per esempio, ipotizziamo di volere rendere multilingua la seguente pagina html:

<html>
<head>
<title>Titolo</title>
</head>
<body></body>
</html>

Inseriamo una variabile php:

<html>
<head>
<title>
<?php
echo $page_title;
?>
</title>
</head>
<body></body>
</html>

Ora ci basterà quantificare correttamente la variabile $page_title. Per sapere come fare , diamo un occhio al codice dello switch presente nello script che per ora avevamo trascurato:

<?php

switch ($lang)

{

case “ITA”:

include “ita.php”;

break;

case “ENG”:

include “eng.php”;

break;

default:

include “ita.php”;

break;

}

?>

A seconda della lingua, lo script includerà nella nostra pagina una differente pagina php; dentro ogni pagina vi sarà la definizione della variabile $page_title e di tutte quelle variabili che useremo nelle pagine, nel nostro esempio:

ita.php

<?php

$page_title=”Titolo”;


?>

eng.php

<?php

$page_title=”Title”;


?>

Compreso il meccanismo, cerchiamo ora di mettere tutto il progetto insieme per creare un esempio concreto,ma questo paragrafo farà parte del secondo articolo ;), che troverete nel link seguente .

Realizzare un sito php Multilingua [parte due]
I sorgenti di codice mostrati in questa piccola guida saranno disponibili quanto prima sul solito repository Lab , non dimenticatevi di scrivere qualche commento se avete trovato la guida di vostro gusto.
Grazie per l’attenzione,

Andrea