Pillole di php,gestire un sito in più lingue
venerdì, gennaio 15, 2010 23:06Nel forum tempo fa misi un post su come creare un un sistema per la gestione di termini e rendere così il sito multilingua, oggi propongo un’altra soluzione secondo me molto più semplice ed intuitiva facendo sempre uso ovviamente di uno o più file per le lingue.
…
Iniziamo col vedere un esempio di codice HTML dove all’interno avremo dei termini che necessitano di una visibilità multilingua.
Creiamo un file con questo codice al suo interno:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Oggiprogrammo.net - Pillole di php,gestire un sito in più lingue</title> </head> <body> <?php echo"Cerchiamo di tradurre questa linea di testo"; ?> </body> </html>
Quello che dobbiamo fare è prima di tutto creare un file di lingua e creare una variabile che contenga il nostro testo, quindi creiamo un file e lo chiamiamo it.php e al suo interno inseriremo il seguente codice:
<?php $OP_LINEATRADOTTA="Cerchiamo di tradurre questa linea di testo"; ?>
Come vedete abbiamo dato alla variabile il valore corrispondente a ciò che vorremmo tradurre, il consiglio che dò è di dare alla variabile un nome unico e che ci renda l’idea di ciò che vogliamo tradurre in modo da non avere il problema di poter ritrovare una variabile uguale all’interno del nostro sito che gli cambi il valore, come per esempio se avessimo chiamato la nostra variabile semplicemente: $testo ci sarebbe l’alto rischio di trovare nel nostro codice una variabile uguale, compromettendo così il valore da noi richiesto.
Ora non ci resta che inserire nella nostra pagina iniziale la variabile, in modo che riporti il testo tradotto e includere il file di lingua:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Oggiprogrammo.net - Pillole di php,gestire un sito in più lingue</title>
</head>
<body>
<?php
include("it.php");
echo $OP_LINEATRADOTTA;
?>
</body>
</html>
Qualora vogliate inserire anche il testo in inglese per esempio, create un file chiamato en_us.php ed al suo interno dovrete semplicemente scrivere il testo tradotto:
<?php $OP_LINEATRADOTTA="Try to translate this line of text"; ?>
Il nome della variabile deve rimanere uguale, dovrete solamente cambiare il file da includere:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Oggiprogrammo.net - Pillole di php,gestire un sito in più lingue</title>
</head>
<body>
<?php
include("en_us.php");
echo $OP_LINEATRADOTTA;
?>
</body>
</html>
Se dovete gestire più lingue tutte insieme dovrete operare con un ciclo che verifichi la lingua scelta, perche se includete più file di lingua, il valore della variabile sarà quello dato dall’ultimo file di lungua incluso.
Per gestire con un ciclo “if” dovrete solamente far sapere all’if dove prendere lo spunto per capire la lingua da prelevare, facciamo l’esempio che decidiate la lingua da un link di bandierine e che passiate il riferimento alla lingua tramite metodo GET guindi tramite l’indirizzo, creiamolo nel nostro file in questo modo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Oggiprogrammo.net - Pillole di php,gestire un sito in più lingue</title>
</head>
<body>
<div style="float:left;margin-right:10px;">
<a href="index.php?lang=it" title="Italiano"><img src="lang/it.png" style="margin-right:10px;border:none;" alt="Italiano" /></a>
<a href="index.php?lang=en_us" title="English/US"><img src="lang/en_US.png" style="margin-right:10px;border:none;" alt="English/US" /></a>
</div>
<?php
if($_GET['lang']=='it'){
include("it.php");
}
elseif($_GET['lang']=='en_us'){
include("en_us.php");
}
else{
include("it.php");
}
echo $OP_LINEATRADOTTA;
?>
</body>
</html>
Non abbiamo fatto altro che dire al nostro ciclo:
SE(IL_VALORE_DI['lang']=='it'){
includi("it.php");
}
ALTRIMENTI SE(IL_VALORE_DI['lang']=='en_us'){
includi("en_us.php");
}
ALTRIMENTI{
includi("it.php");
}
Potete trovare il pacchetto dei file Qui (66)
loading...
loading...


