Site multilingue avec les sessions

Signaler
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007
-
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013
-
bonjour !
je souhaiterais faire un site multilingue avec les sessions mais je ne sais pas trop comment m'y prendre.
mon index est une page ou on peut choisir francais ou anglais
puis sur mon site les images et les textes changent selon la langue selecionnée!

merci de votre aide et de vos conseils

21 réponses

Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Yo,

celui ci est fait avec cookie, adapte le avec une session, trés simple.

http://www.phpdebutant.org/article107.php

Laurent
http://phpsources.net
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)

Pour les images tu crées par exemple deux répertoires ayant le même contenu (sauf en ce qui concerne le texte des images, mais il faut que les images aient le même nom). Par exemple ces deux répertoires :

fr;en (pour français, english)

Ensuite lorsques tu souhaites afficher tes images tu prends un code du style :

<?php

if(isset($_SESSION[

echo '';

?>

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

...j'ai compris pour les images . mais pas pour les textes : le tuto de phpdebutant est un peu different ...non?
je suis d'accord qu'il faille appeler un fichier de vocablulaire mais avec les sessions je ne vois pas comment faire.

merci de votre aide
Messages postés
99
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
5 août 2009

Salut,

A mon avis tu enregistre le choix du visiteur dans une variable session :

exemple :
Il choisit français =>

if (!isset($_SESSION['langue'])) {
    if (isset($_GET['langue'])) {
        $_SESSION['langue'] = $_GET['langue'];
        $langue = $_SESSION['langue'] ;
        $_SESSION['rep_langue'] = "$langue";
    } else {
        $_SESSION['langue'] = "valeur par défaut";
        $langue = $_SESSION['langue'] ;
        $_SESSION['rep_langue'] = "$langue";
    }
} else {
    Ce que tu veux qui se passe si la variable de session langue est définie
}


Pas testé mais ça doit être un truc du genre
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
N'oublie pas le session_start() au début.

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

ok !
mais comment appeler les textes?
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Slt

Ben en général on met les textes dans des tables :-)

if ($_SESSION['langue'] == 'fr' )
{
$cat = 'fr';
mysql_query("SELECT texte,cat FROM tatable WHERE cat='$cat'");
}

Laurent
http://phpsources.net
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

...mais je peux pas tout mettre dans des tables
ex: G plein de formulaires sur mon site, je peux pas mettre
nom :
name :
adresse :
adress :

veuillez selectionner ...
please select ...
...etc ..etc...
dans des tables.

non?
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Yo,

Tu fais autant de fichier que ta de langues, et tu mets tes variables dans ces fichiers. Bien sur elle ont le meme nom mais pas le meme contenu et t'apel le fichier selon la langue.

ex:

france.inc
$bonjour = 'bonjour';
$aurevoir= 'au revoir';

anglais.inc
$bonjour = 'hello';
$aurevoir= 'good bye';

italien.inc
$bonjour = 'ciao';
$aurevoir= 'ciao';

@++
Laurent
[htpp://phpsources.net htpp://phpsources.net]
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

... et ca risque pas de me poser des problemes d'apeller des medias, qui ont le meme nom selon la langue, au niveau de la memoire cache de l'utilisateur?
ex :si l'utilisateur ouvre le site en fr, tombe sur une premiere page qui appelle intro.swf
puis l'utilisateur va sur la version anglaise qui appelle ce meme swf.mais en anglais
sa machine ne risque pas d'ouvrir intro.swf en fr (qui est est en cache)?
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Slt à toi,

"tombe sur une premiere page qui appelle intro.swf
puis l'utilisateur va sur la version anglaise qui appelle ce meme swf.mais en anglais"

Fait 2 swf differents avec 2 noms distints et c'est tout!!

Pour conclure: 1 site multilangue c'est + long à programmer et faut l'accepter :o)

Bon courage!!
Laurent
http://phpsources.net
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

derniere question... comment faire ma page index avec mes deux boutons-images.fr et us.j'imagine que ce plus simple C de faire un formulaire qui renvoie les valeurs fr en us puis sur ma premiere page faire :
$_SESSION['fr']=$_POST['fr'];
$_SESSION['us]=$_POST['us'];

mais je ne vois pas trop comment faire ce formulaire avec deux boutons images

aussi si sur la page d'accueil( apres l'index), on a d'ecrit bienvenue ou welcome
je vais simplement faire un echo $texte_de_bienvenue; ...j'ai un peu de mal a comprendre le principe

merci de ton aide
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Yo,

Perso je ferais comme ca:

france
italie
anglais

Laurent
http://phpsources.net
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

ok ! tout simplement !!!

et si sur la page d'accueil( apres l'index), on a d'ecrit bienvenue ou welcome
je vais simplement faire un echo $texte_de_bienvenue? ...j'ai un peu de mal a comprendre le principe
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

donc basiquement

if ($lg == fr){
include("france.inc");
}

if ($lg == italie){
include("italie.inc");
}

et les variables $texte_de_bienvenue et autres dans tes fichiers restent les memes.

Laurent
http://phpsources.net
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

remoi,

c'est juste pour te dire que l'histoire des sessions ici n'a pas grand interrer, sauf si ta pleins de popup ou scripts externes, mais basiquement j'en vois pas trop l'interet dans un site multilangue. Ce sont tes petits drapeaux qui redirigent.

Voili voilou

Laurent
http://phpsources.net
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

hein? je comprends pas, là?
tu passerais tout en post ou par des cookies?
Messages postés
59
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
25 octobre 2007

je ne comprends pas ... comment tu procederais?
Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Pour résumer

Quand tu rentre sur ton site, si tu veux pointer sur l'anglais par exemple:

if (empty($lg)) {$lg = 'anglais';} // si $lg est vide

// si fr
if ($lg == fr){
$cat = 'fr';
include("france.inc");
}

si italie
if ($lg == italie){
$cat = 'italie';
include("italie.inc");
}

si anglais
if ($lg == anglais){
$cat = 'anglais';
include("anglais.inc");
}

Pour l'apel, changer de langue, tu le fait avec des drapeaux

drapeaux france
drapeaux italie
drapeaux anglais

puis sur tes pages par exemple:

<titre>$texte_de_bienvenue<titre> // fichier *.inc
// et les tables::
mysql_query("SELECT texte,cat FROM tatable WHERE cat='$cat'");

Laurent
http://phpsources.net
Messages postés
4
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
8 juin 2006

Hello,

Pas mal, je te proposerais aussi ceci, je me suis cherche pour avoir une simplicite, ex tu as l'index, avec appelle anglais :[produits.php?lang=en English] et francais: [index.php Francais]en haut de lapage index.php tu mets ceci : <?
session_start();
 include_once('decide-lang.php')

page decide-lang.php, tu emt ceci :  

<?php
   if(!isset($_SESSION['user_language']))
  $_SESSION['user_language'] = 'fr';


if(isset($_GET['lang']))
   $_SESSION['user_language'] = $_GET['lang'];


if(is_file('lang'.DIRECTORY_SEPARATOR.$_SESSION['user_language'].'-lang.php'))        
    include('lang'.DIRECTORY_SEPARATOR.$_SESSION['user_language'].'-lang.php'); 
        else
            include('lang'.DIRECTORY_SEPARATOR.'fr-lang.php'); 


dans un dossier lang tu emt deux fichier un fr-lang et l'autre en-lang.php avec des define... ex define('TXT_ACCUEIL_INDEX', 'Bienvenue !');  et des echo ACCUEIL_INDEX' la ou tu veux du text

Clovis