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

Signaler
Messages postés
116
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
30 août 2006
-
 codefalse -
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

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
346
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
26 mars 2012

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
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
346
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
26 mars 2012

oui mais sur ton site tu na pas de sessions apparament

ca doit etre beaucoup plus simple je pense
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Je viens de mettre un exemple dans les sources avec un fichier de localisation XML...non mais ;-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Lol Malalam et ses fichiers XML ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
I love xml... ;-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
ça se voit ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
(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
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
C'est une autre possibilité, mais ça oblige à les garder en mémoire, non ? ca peut vitre être lourd.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
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
Messages postés
66
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2010

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.
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
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 !
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
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>
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
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 !
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
> 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.