cs_kenny18
Messages postés116Date d'inscriptionlundi 20 novembre 2000StatutMembreDernière intervention30 août 2006
-
31 août 2005 à 09:21
codefalse -
16 janv. 2008 à 09:05
salut,
Dans le cadre d'un test, je dois créer un site multilingue. J'ai modifié à ma sauce le script retrouvé sur phpdebutant.org. Le code qui est proposé ne me convient pas complètement car l'on ne peut choisir "sa" langue qu'à l'ouverture du site. Ce que je recherche, c'est de pouvoir, en tout temps lorsque je navigue, changer la langue.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 août 2005 à 10:42
Hello,
à toi d'adapter et de réfléchir.
Un exemple de technique :
une variable de session contenant la langue. Lorsqu'on clique sur le
bouton correspondant à la langue choisie (où on veut sur ton site), tu
changes cette variable.
A l'affichage des parties traduites, tu vas vérifies cette variable de session langue, et tu vas chercher la bonne traduction.
Pour la traduction, c'est selon ton site. perso, j'aime bien la technique du fichier xml, qui pourrait être sous ce format :
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 31 août 2005 à 14:38
Salut,
je préconise aussi la solution des dossiers avec les variables
identiques dedans et des fichiers différents, tu charges ensuite une
variable de session qui vient enregistrer la langue actuelle, et un
formulaire qui permet de la changer.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 31 août 2005 à 15:02
je pense pas que ce soit avantageux pour ça par contre, les fichiers
avec variables sont plus rapides à traiter, il faut parser le fichier
xml sur chaque page, à moins que Malalam est un autre système ;-)
tcheeb
Messages postés66Date d'inscriptionlundi 18 avril 2005StatutMembreDernière intervention27 octobre 2010 31 août 2005 à 22:39
Hello,
Sur l'intra que je développe, la 1ère chose je détecte la langue du navigateur et la passe en variable de session, ceci après une check sur la DB, ce qui peut également être fait par un fichier txt, xml,...... pour savoir si la langue est proposée sur le site. J'évite ainsi à une grande partie des internautes le 1er click.
L'intra actuellement est en 4 langues. une langue default est bien entendu défini au cas où le navigateur m'indique le martien.
Pour finir, il suffit de cliquer sur l'une des langues listée sur la page, dans mon cas sous forme de drapeau, qui a pour effet de modifier les $_Session concernées par l'intermédiaire du get et retour sur le referer.
Le 1er bout de code.
<?
session_start();
$_SESSION['S_deflangue'] = "fr";
//détection de la langue du navigateur
if (!isset($_SESSION['S_langue_user'])){
//check si la variable server est définie par les paramètres du navigateur
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$browser_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
// extraction des deux première lettre
$browser_lang = Substr($browser_lang,0,2);
//définition de l'id langue pour la session selon la db $id_langue send_mysql("select label from admin_langue where label'".$browser_lang."'",$MysqlName);
//contrôle de l'existence de la langue ou alors attibution de la langue par défault
if (@@mysql_result($id_langue,0,"label")==""){
$_SESSION['S_langue_user'] = $_SESSION['S_deflangue'];
$_SESSION['S_langue_ID'] = Null;
}
//création de la variable de session
else{
$_SESSION['S_langue_user'] = @@mysql_result($id_langue,0,"label");
$_SESSION['S_langue_ID'] = @@mysql_result($id_langue,0,"id");
}
//vidange
@@mysql_free_result($id_langue);
}//fin if variable server
else{
?>
<script language="JavaScript" type="text/javascript">
alert("votre navigateur ne possède pas de langue définie dans vos options langue");
</script>
<?
$_SESSION['S_langue_user'] = $_SESSION['S_deflangue'];
$_SESSION['S_langue_ID'] = Null;
}
}
//fin de détection de la langue à l'arrivée
?>
Mais je ne fait que débuter alors tous commentaires est la bienvenue.
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 1 sept. 2005 à 01:31
Bah, l'homme cherche toujours à faire compliquer ^^
mais bon, je vais quand meme faier ca pour mon forum ... comme IPB quoi
<hr>Si ma reponse te convient, merci de l'accepter !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 1 sept. 2005 à 09:17
> Coucou >
c'est sur...
le xml est soit une perte de temps, soit une perte de mémoire supèrieure ou égale à ma solution !
Une perte de mémoire, non. Tu ne gardes rien en mémoire. Une perte
de temps ? Pas beaucoup plus que de stocker les traductions dans un
fichier, ou dans une base.
Et son avantage par rapport a des dossiers différents pour chaque
langue, c'est un gain de temps énorme niveau développement, et une plus
grande simplicité de mise en oeuvre.
bah nan lol, je ne suis pas franchement convaincu qu'un fichier
txt, par exemple, soit beaucoup plus court à parser qu'un fichier xml.
Et un fichier xml c'est structuré, ça se modifie facilement, et c'est
surtout facile à parser.
Par rapport à une base de donnée, on économise pas gdchose, par contre, je suis d'accord.
Tcheed => c'est exactement ce que je propose comme solution, en
effet, à part que ma traduction est stockée non pas dans une bdd, mais
dans un fichier xml, donc, au cas où tu ne l'aurais pas compris lol.