IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Site bilingue - variable session ou get?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut Site bilingue - variable session ou get?
    Je veux intégrer une deuxième langue dans mon site.
    Techniquement, je pourrais le faire en utilisant les sessions pour y stoker la langue courante, mais aussi en utilisant les variables $_GET. C'est quoi le pour et le contre de chacune des méthodes?

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Un utilisateur lamda ne pourra jamais voir ton source php pour changer de langue. Par contre à partir d'un select d'un formulaire ou d'un lien coté client, l'utilisateur pourra choisir sa langue du site et en méthode GET, les informations seront transmises au code PHP qui à son tour va renvoyer le site dans la langue choisie par l'utilisateur. En fait les sessions serviront uniquement pour conserver et transmettre les informations de langue d'une page à l'autre.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Par contre à partir d'un select d'un formulaire ou d'un lien coté client, l'utilisateur pourra choisir sa langue du site
    Partant de la tu pourrais imaginé des petits drapeau (liens) qui vont recharger la page par exemple, du coter serveur tu peux utiliser les sessions pour sauvegarder la "langue" choisi. Et tu peux également utiliser les cookies pour stocker la "langue" sur la machine du client. Comme sa si ton utilisateur ferme sont navigateur et reviens le lendemain, il ne devra pas recommencer la procédure de "sélection de la langue".

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut
    Je vais expliciter plus ce que je voulais dire. Certains sites choisissent de garder tout le temps la langue dans l'url de toutes le pages dans une variable get. D'autres choisissent de ne pas le garder tout le temps dans l'url et utilisent les sessions pour cela. C'est quoi les pour et contre de ces 2 approches.

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    3 ieme option que j'utilise, la détection de langue automatique (même si je propose toujours l'option de changer la langue)

  6. #6
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    L'avantage avec la méthode GET c'est au niveau du réferencement.

    Par exemple, si tu as 2 liens (les fameux drapeaux) :
    1. page.php?lang=fr
    2. page.php?lang=en

    Les moteurs de recherches réferenceront les deux pages ce qui te permettra de reçevoir des visiteurs Francophones ou anglosaxons.

    Sans cela, les moteurs de recherche ne verront que les pages avec la langue par défaut.

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 94
    Points
    94
    Par défaut
    J'avoue que ça va faire une grande différence côté référencement. Et dans ce cas, on n'aura plus besoin de la session pour cela.
    Est ce qu'il existe un design pattern particulier pour la gestion de la langue pour le site multilingues. De mon côté ça sera seulement bilingue. Mais j'imagine que pour les sites qui gèrent une dizaine de langues, ça sera plus compliqué. C'est pour ça que je suis curieux de avoir s'il y a des design patterns adapté à ça.

  8. #8
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Tu peux éventuellement t'inspirer de la réponse que j'avais donné ici.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Points : 23
    Points
    23
    Par défaut
    Tout en gardant l'avantage du référencement, tu peux également utilisé l'url-rewriting pour que tes urls soient plus "esthétiques".

    Un lien concernant google et le référencement multilingue

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Personnellement je fais ainsi:
    - si aucun paramètre n'existe ni sur la session ni sur $_GET, on détermine la langue la plus appropriée parmi les langues disponibles selon l'user agent (j'ai le code si tu veux) et si une aucune langue ne convient, on utilise la langue par défaut.
    - si le paramètre existe sur la session, on charge la langue qu'il indique
    - si le paramètre existe sur $_GET, on change la langue dans $_SESSION et on charge cette langue.

    Ainsi tu es toujours sûr d'avoir la bonne langue.

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    j'ai le code si tu veux
    On peut voir ce code ? Cela m'interesse.

    Merci d'avance..

  12. #12
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Par contre je sais plus à qui je l'ai piqué, j'avais la flemme pas tellement envie de refaire un parser pour ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
            $httplanguages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
            $languages = array();
            if (empty($httplanguages)) {
                return $languages;
            }
     
            foreach (explode(',', $httplanguages) as $accept) {
                $result = preg_match('/^([a-z]{1,8}(?:[-_][a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i', $accept, $match);
     
                if (!$result) {
                    continue;
                }
                if (isset($match[2])) {
                    $quality = (float)$match[2];
                }
                else {
                    $quality = 1.0;
                }
     
                $countries = explode('-', $match[1]);
                $region = array_shift($countries);
                $country_sub = explode('_', $region);
                $region = array_shift($country_sub);
     
                foreach($countries as $country)
                    $languages[$region . '_' . strtoupper($country)] = $quality;
     
                foreach($country_sub as $country)
                    $languages[$region . '_' . strtoupper($country)] = $quality;
     
                $languages[$region] = $quality;
            }
    la référence $languages est un tableau clé valeur avec en clé les régions (fr, FR_fr, FR_ca) et en valeur la qualité (ou préférence).

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 38
    Points
    38
    Par défaut
    Moi qui était parti sur une gestion avec COOKIES (sans changement d'URL), c'est mal parti apparemment...

    And last but not least, keep the content for each language on separate URLs - don't use cookies to show translated versions.

  14. #14
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Des cookies pourquoi pas ?

    L'important c'est de stocker la langue quelque part.

    Imagine dans un des cas tu aurai pu stocker les preference du visiteur dans un XML aussi...

    L'important c'est de stocker quelque part.

Discussions similaires

  1. connexion/deconnexion site web - variable SESSION
    Par ju0123456789 dans le forum Langage
    Réponses: 22
    Dernier message: 21/11/2008, 14h32
  2. Isolation variables session si plusieurs sites
    Par boulo dans le forum Langage
    Réponses: 1
    Dernier message: 24/05/2007, 11h23
  3. Variable Session et méthode GET
    Par nizarsm dans le forum ASP
    Réponses: 1
    Dernier message: 06/04/2006, 16h42
  4. Site Bilingue, gérer les variables
    Par AlphaYoDa dans le forum ASP
    Réponses: 4
    Dernier message: 27/02/2005, 18h57
  5. [struts]Variable session
    Par ansarim dans le forum Struts 1
    Réponses: 2
    Dernier message: 25/02/2004, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo