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 :

Changement de langue du site en PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut Changement de langue du site en PHP
    Bonjour,

    Sur mon site je propose à mes membres d'avoir le site en 2 langues (français et anglais) et ils peuvent changer la langue à tout moment et c'est là que ça coince en fait.
    Pour commencer dans le code ci-dessous je récupère l'url en cours pour la recharger avec le paramètre lang "fr" ou "en" selon le choix de l'internaute. Cela fonctionne de base mais si on se connecte et qu'on va sur une page un peu plus élaboré et qui contient des paramètres dans l'url ça plante (exemple : page.php?id=7 si je recharge je prendrais que page.php?lang=fr mais l'id=7 disparait et le code ne peut pas s'exécuter correctement.
    Si je gère le passage des paramètre en ajoutant $_SERVER['QUERY_STRING'] et que je bidouille j'arrive à passer le paramètre id=7 mais dans ce cas si on reclique juste après sur la langue pour rechanger ça donne id=7&lang=fr&lang=en et ça plante

    Avez vous une idée pour résoudre ce problème ?

    Voici mon code PHP pour le faire :
    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
     
    			<?php
    			$src=$_SERVER['PHP_SELF'];
    			if ($language=="fr") {
    			?>
    			<li>
    			FR
    			</li>
    			<li>
    			<a href="<?php echo $src.'?lang=en';?>">EN</a>
    			</li>
    			<?php
    			}
    			else {
    			?>
    			<li>
    			<a href="<?php echo $src.'?lang=fr';?>">FR</a>
    			</li>
    			<li>
    			EN
    			</li>
    			<?php
    			}
    			?>

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    dans $_SERVER["SCRIPT_NAME"] vous pouvez trouver l'URL sans les arguments.
    et vous pouvez ensuite créer les liens de changement de langue en lisant le contenu de $_GET.

  3. #3
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Bonjour.
    Pourquoi ne pas utiliser une variable de session ? Il me semble que cela pourrait résoudre le problème en fournissant la bonne valeur quelle que soit la page.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Une session ne reste pas. Il faut pour cela utiliser un cookie. Comment font les sites qui proposent plusieurs langues avec les drapeaux ? On clique sur le drapeau et ça change la langue du site. Peut-être que c'est compliqué sur mon site car je le propose partout et non pas que sur la page d'accueil. Personne ici n'a fait de sites multilangues ?

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    mathieu pour ta solution j'ai pas compris où tu veux en venir exactement. La base de l'url marche et il est possible d'avoir les paramètres avec query_string mais ça devient vite le bordel si tu cliques sur la langue fr car ça va reprendre toute l'url et les paramètres et y ajouter lang=fr mais si tu recliques sur anglais juste après ça va tout reprendre y compris le lang=fr et y ajouter &lang=en soit un gros bordel

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    vous avez regardé ce qu'il y a dans les variables que je vous ai indiquées ?

  7. #7
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    j'ai fait il y a un certain temps (5 ou 10 ans) un site multi-langue. Comme toi, dans l'URL, on avait &lang=fr ou &lang=en (c'était aussi fr ou en).
    Dans mon code, il n'y avait que des <?php echo $str[xx];?> et selon la valeur de $_GET['lang'], je faisais include "language".$_GET['lang']."inc.php" avec par exemple language.fr.inc.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    // PAGE HEADER.INC.PHP
    $str[1]="INTRANET P&A";
    $str[2]="Accueil";
    $str[3]="Administration";
    $str[4]="Envoi mail";
    $str[5]="Français";
    $str[6]="English";
    etc

  8. #8
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    je crois que vous avez loupé mon message du 1er février.
    Citation Envoyé par mathieu Voir le message
    vous avez regardé ce qu'il y a dans les variables que je vous ai indiquées ?

Discussions similaires

  1. Changement de langue dans un site
    Par RicardoBxl dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/01/2013, 00h43
  2. [eZ Publish] Changement d'ordre des langues du site
    Par dedepsg dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 20/05/2011, 09h34
  3. Choisir sa langue sur un site en PHP
    Par idamarco dans le forum Langage
    Réponses: 20
    Dernier message: 03/01/2009, 11h08
  4. [WSS3] Changement de langue du site après création
    Par t-die dans le forum SharePoint
    Réponses: 4
    Dernier message: 10/04/2008, 11h38
  5. Problème changement serveur pour un site PHP
    Par izzy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 06/01/2006, 11h34

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