Salut !
Voila une petite solution rapide (mais longue à mettre en place) :
1) Les fichiers langues
Alors déja il te faut des fichiers de langues ! Aucun texte en brute dans tes pages PHP ou template (je ne sais pas comment tu travailles).
exemple : echo "coucou tout le monde"; est à bannir !!!
Il va te falloir réaliser des fichiers de langues (fichier php contenant un tableau ayant la traduction des textes) typiquement
Fichier francais : ./Lang/FRA/Principal.php
contiendra
Code PHP :
$Langue=array();
$Langue["Txt_Coucou"]='coucou tout le monde';
Fichier anglais :
./Lang/EN/Principal.php
contiendra
Code PHP :
$Langue=array();
$Langue["Txt_Coucou"]='Hi everybody';
2) Mémorisation de la langue utilisateur
Pour ce qui est de la mémorisation de la langue de l'utilisateur j'ai plusieurs solutions :
Soit tu sauvegardes en session la langue saisie par l'utilisateur $_SESSION['lang']='EN'; ou $_SESSION['lang']='FRA'; (Dès qu'il clique sur un drapeau tu changes la valeur de la session)
Ou par l'URL rewriting (procédé avancé) avec dans ton fichier .htaccess :
Code :
RewriteRule ^([A-Z]*)/([a-zA-Z0-9|_.\-]*)$ /$2?lang=$1
auquel cas tu récupère ta langue dans ta variable $_GET["lang"], mais cette méthode est incompatible avec l'ajout d'autre paramètre GET (à moins d'améliorer ton htaccess). Toutefois elle permet à l'utilisateur de distinguer deux sous-répertoires inexistant physiquement :
EN/ et FRA/ exemple concret : son fichier
Principal.php deviendra
FRA/Principal.php ou
EN/Principal.php en fonction de la langue de l'utilisateur.
3) Récupérer tes fichiers langues automatiquement
Ce petit exemple de code te permettra d'aller chercher tes fichiers de langue automatiquement :
J'utilise la première méthode pour stocker la langue de l'utilisateur ($_SESSION)
Exemple :
Code PHP :
//TEST SI LANGUE EST DEFINIS
if(!isset($_SESSION['lang'])){
$_SESSION['lang']="FRA";
}
$chemin=dirname(__FILE__);
if (substr($chemin,-1)!=DIRECTORY_SEPARATOR){
$chemin.=DIRECTORY_SEPARATOR;
}
//VERIFICATION QUE LE CHEMIN EXISTE
if(is_dir($chemin."Lang".DIRECTORY_SEPARATOR.$_SESSION["lang"].DIRECTORY_SEPARATOR)){
$chemin.="Lang".DIRECTORY_SEPARATOR.$_SESSION["lang"].DIRECTORY_SEPARATOR;
}else{
$chemin.="Lang".DIRECTORY_SEPARATOR.'FRA'.DIRECTORY_SEPARATOR;
}
//VERIFICATION FICHIER LANGUE EXISTE
$Langue=array();
if(file_exists($chemin.$_SERVER['PHP_SELF'])){
include($chemin.$_SERVER['PHP_SELF']);
}else{
//Erreur fichier inexistant
}
Il te suffira de mettre (pour afficher ton texte) :
echo $Langue["Txt_Coucou"];
Voila je n'ai pas testé ce script (je l'ai rédigé à la volé). Toutefois l'idée globale est la même.
Bon Courage à toi.
Cordialement
TheWeasel47