Ah ben ça c'est sûr, le PHP ne va pas te faire les traductionsle php doit facilier les choses, mais si j'ai bien compris je dois tout traduire mon site quand même ?
Parceque qu'avec cette méthode tu devrais avoir plusieurs fois les mêmes fichiers, HTML inclus. Si tu as un site en 3 langues, et qu'un jour tu veux changer un truc dans ta page (mettre un logo ou je ne sais quoi), il faudrait que tu le fasses 3 fois...Alors pourquoi ne pas tout faire en html et placer mes fichiers dans des sous répertoires ?
<?php
//au prealable tu définit via un from le choix de la langue
// français=0 anglais=1 espagnol=2
switch ($lang) {
case 0:
print "Salut";
case 1:
print "Hi";
case 2:
print "Ola";
}
?>
Il y a peut etre d'autre méthode mais celle la est relativement simple, en fait a chaque fois que tu voudras mettre du texte dans ton site tu auras l'appel de switch et ton texte dans toutes les langues voulue ^^
<?php echo $txtBienvenue; ?>
Tu peux avoir un fichier fr_FR :
<?php
$txtBienvenue = "Bienvenue !";
?>
Un fichier en_EN :
<?php
$txtBienvenue = "Welcome !";
?>
Et le switch dont tu parlais sera utilisé simplement pour choisir quel fichier charger.echo Lang::getParmLang(Lang::getLanguageString(("bonjour"));
echo Lang::getParmLang(Lang::getLanguageString(("adios"));
et ensuite tu as un fichier tonsite.fr.lang dans lequel tu as:
Code : Tout sélectionner
bonjour = Bonjour
adios = Au revoir
Code : Tout sélectionner
bonjour = Hello
adios = Bye
// =====================================================
// A function for parameter based strings
// You can pass the string (which you got most likely
// from the language file) and an array with parameters.
// Then the vars in the string will be replaced with
// the paramters in the array (see language dev. guide)
// =====================================================
function getParmLang($string, $parmarray) {
// add one empty array element at first position because of naming conventions
// in detail: in your language file you start with <$1> and not <$0>
array_unshift($parmarray, "");
return preg_replace("/<\\$([0-9])>/e", '$parmarray[\1]', $string);
}
// 15-01-2002 12:21, rabol : <[email protected]>
// function to get a string from the current language,
// or a string telling you that the string is missing
function getLanguageString($string){
global $hashmap, $myEnv;
if(isset($hashmap[$string])) {
return $hashmap[$string];
} else {
if(SETUP_RUNNING || LANG_DEBUG) { //only true during setup
$filename = ROOTPATH."/" . "missing.".$_SESSION['SETUP']['lang'].".lang";
$missing = $myEnv["module"]." -> ".$string;
if(file_exists($filename)) {
$fp = fopen($filename,"rb");
$content = fread($fp, filesize($filename));
$pos = strpos($content,$missing);
if($pos === false) {
fclose($fp);
$fp = fopen($filename,"a+");
fputs($fp,$missing."\n");
fclose($fp);
}
} else {
$fp = fopen($filename,"w+");
fputs($fp,$missing."\n");
fclose($fp);
}
}
}
return "* " . $string . " * ";
}
Je te conseille de télécharger ce logiciel, le système multi langue est bien fait je trouve.define("_HELLO_","Bonjour");
Ensuite , je récupérer la langue choisie dans la session et j'affiche donc le texte dans la langue appropriée de cette manière :include "lang/".$_SESSION['lang']."/lang.php" ;
Ensuite , pour afficher une des phrases définie , il te suffit d'inclure ceci :<?=_HELLO_?>
++
Mais généralement tu stockes les textes dans des fichiers ou dans une base de données.