SITE MULTILINGUE...Je suis à la dérive !!!

cs_kenny18 Messages postés 116 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 30 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.

How to do that ?

merci

kenny #18

30 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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 :



<Locales>

<ENGLISH>

Email this page

Send this page using an instant message

<RefreshAlt>Refresh</RefreshAlt>

<ShowHideActionMenu>Show/Hide Action Menu</ShowHideActionMenu>

Login

Logout

Home

</ENGLISH>

<FRANCAIS>

Envoyer cette page par e-mail

Envoyer cette page par message instantané

<RefreshAlt>Rafraîchir</RefreshAlt>

<ShowHideActionMenu>Afficher/Cacher le menu des actions</ShowHideActionMenu>

Se connecter

Se déconnecter

Accueil

</FRANCAIS>

</Locales>

tu vas lire la traduction sur le bon noeud.
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
31 août 2005 à 10:46
salut

chui aller voir le site et juste en dessous ta onglet statistique ou ils te montrent comment garder des variable en memoire lors de la navigation

peut etre ca peut te servir
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
31 août 2005 à 10:55
salut,

moi pour mon site je me suis pas fait chier

un dossier par langue avec dans chacun les meme nom de fichier

des liens vers chaque langue avec une variable pour le nom du dossier


Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
kyript Messages postés 346 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 26 mars 2012
31 août 2005 à 10:58
oui mais sur ton site tu na pas de sessions apparament

ca doit etre beaucoup plus simple je pense
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 août 2005 à 11:01
suffit de proposer un formulaire sur tt les pages qui renvoi vers changelangue.php...



et dans changelangue.php, on remplace la variable de SESSION par le POST

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
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.



a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 août 2005 à 14:43
Je viens de mettre un exemple dans les sources avec un fichier de localisation XML...non mais ;-)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 août 2005 à 14:49
Lol Malalam et ses fichiers XML ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
31 août 2005 à 15:00
lol oui, il le veut son xml, à fond!


Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
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 ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 août 2005 à 15:02
I love xml... ;-)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 août 2005 à 15:03
ça se voit ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 août 2005 à 16:22
(ILM n'est pas un nouveau standar, c'est juste une citation de malam : I love XML :) bon, je sors...)



à part ça, pourquoi ne pas utiliser des tables de hash ?



$mavar['salut, c\'est max !']['en']='Hello, I'm called max !';



et on afficherais $mavar[$texte], ce qui permetrais d'e savoir
directement (grace aux erreurs de notices) quand le tableau n'est pas
rempli...



et on fera du XML sans XSLT une prochaine fois :)


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 août 2005 à 16:29
C'est une autre possibilité, mais ça oblige à les garder en mémoire, non ? ca peut vitre être lourd.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 août 2005 à 21:16
c'est sur...

le xml est soit une perte de temps, soit une perte de mémoire supèrieure ou égale à ma solution !

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
tcheeb Messages postés 66 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 27 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.
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
31 août 2005 à 23:04
Hello ^^

Pourquoi ne par utiliser un fichier XML (moi aussi ILX (I Love XML) et mettre le resultats dans une variable session ?

Et quand on change le langue, on re-parse le fichier. Comme ca : gestion facile, et on ne parse pas à chaque fois ^^. Non ?

<hr>Si ma reponse te convient, merci de l'accepter !
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 sept. 2005 à 01:19
ouais mais tu le parses une fois quand même, pourquoi ne pas passer par un fichier contenant les variables ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
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 !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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.
0
Rejoignez-nous