Il y a quelques temps j'ai du choisir une méthode pour rendre un site multilingue, et comme il y des questions sur le sujet de temps en temps je vais vous montrer quelle solution j'ai choisi.
Cette méthode est un exemple, il y a d'autres façons d'y arriver.
J'ai opté pour des tableaux dans un switch(), l'avantage à mon sens est qu'il est trés simple de rajouter des langues aux sites et cela sans devoir modifier des pages et des pages.
La page qui contient les différentes langues
<?php
//-->Déclaration de la variable $Langue, et ici le fraçais par défaut en cas d'absence de valeur $_GET['language'].
$Langue = (isSet($_GET['language'])) ? $_GET['language'] : 'FR' ;
switch ($Langue)
{
case 'FR': //-->Partie français.--//
$Language = array('text_bonjour' => 'Bonjour',
'text_bonsoir' => 'Bonsoir',
'text_accueil' => 'Accueil',
'text_login' => 'Votre nom d\'utilisateur',
'text_pass' => 'Votre mot de passe',
'text_oublie_pass' => 'Mot de passe oublier cliquez ici svp',
'text_send' => 'Envoie');
break;
case 'US'://-->Partie Anglais.--//
$Language = array('text_bonjour' => 'Hello',
'text_bonsoir' => 'Good evening',
'text_accueil' => 'Home',
'text_login' => 'Your username',
'text_pass' => 'Your password',
'text_oublie_pass' => 'Forget password Please click here',
'text_send' => 'Send');
break;
case 'ES'://-->Partie Espagnol.--//
$Language = array('text_bonjour' => 'Hola',
'text_bonsoir' => 'Buenas tardes',
'text_accueil' => 'Inicio',
'text_login' => 'Su nombre de usuario',
'text_pass' => 'Su contraseña',
'text_oublie_pass' => 'Olvido de contraseña Por favor, haga clic aquí',
'text_send' => 'Enviar');
break;
}
?>
Dans l’exemple ci-dessus il y trois tableaux français, anglais, et espagnol et suivant la valeur de la variable $_GET['language'] php va aller chercher les valeurs demandées dans tel ou tel tableau.Pour afficher les valeurs rien de plus simple.
Voici un exemple de formulaire trilingue.
<?php
include_once 'commun/language.php'; //-->Ont va chercher le fichier language.php
$Titre = (isSet($Language['text_accueil'])) ? $Language['text_accueil'] : 'Index';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />
<title><?php echo $Titre; ?></title>
</head>
<body>
<?php
echo '<p>Langue : <a href="index.php?language=FR">FR</a> | <a href="index.php?language=US">US</a> | <a href="index.php?language=ES">ES</a></p>';
echo '<form action="" method="post" style="width: 524px">
<table style="width: 99%">
<tr>
<td style="width: 191px">'.$Language['text_login'].' :</td>
<td style="width: 289px"><input name="Text1" type="text" /></td>
</tr>
<tr>
<td style="width: 191px">'.$Language['text_pass'].' :</td>
<td style="width: 289px"><input name="Password1" type="password" /></td>
</tr>
<tr>
<td style="width: 191px"> </td>
<td style="width: 289px"><input name="Submit1" type="submit"
value="'.$Language['text_send'].'" /></td>
</tr>
<tr>
<td style="width: 191px"> </td>
<td style="width: 289px">'.$Language['text_oublie_pass'].'.</td>
</tr>
</table>
</form>';
?>
</body>
</html>
Voilà un exemple simple très facile à faire évoluer.
Ce que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.