Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : juin 2010
    Messages : 221
    Points : 107
    Points
    107

    Par défaut Probleme de redirection suivant une langue

    Bonjour.
    Je developpe un site en 3 langues (francais, anglais, khmer). Cependant, je ne peux pas le proposer directement dans ces 3 langues.

    J'attribue une valeur a chaque langue comme ceci et je fais une condition pour l affichage des drapeaux:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $lang_fr = '1';
    $lang_en = '0';
    $lang_kh = '0';
    if($lang_fr == 1){
         echo "<li><a href=\"".$address_website."fr/".$row_fr['url']."\"><img src=\"".$address_website."webroot/img/France-Flag-24.png"."\" height=\"24\" width=\"24\" title=\"Pictura in French language\" alt=\"Pictura French\" /></a></li>\n";
    }
    if($lang_en == 1){
         echo "<li><a href=\"".$address_website."en/".$row_en['url']."\"><img src=\"".$address_website."webroot/img/United-Kingdom-flag-24.png"."\" height=\"24\" width=\"24\" title=\"Pictura in French language\" alt=\"Pictura French\" /></a></li>\n";
    }
    Le problème c est qui si l utilisateur change la langue dans l'url, il obtient malgré tout par exemple l anglais qui est desactive. Donc je fait un test comme ci dessous mais le navigateur me signe une boucle de redirection.

    Code :
    1
    2
    3
    4
     
    if($lang_en == 0 && $lang_kh == 0 ){
        header("Location: http://localhost/agence/fr/accueil");
    }
    Quelqu'un aurait il une idee?

    Merci d'avance.
    David

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro Jérôme Réaux
    Webdesigner
    Inscrit en
    août 2008
    Messages
    5 366
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme Réaux
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 5 366
    Points : 9 127
    Points
    9 127

    Par défaut

    Bonjour,
    je pense que tu devrais revoir la gestion des langues.
    En mettant la langue "en cours" en SESSION, par exemple.

    Code php :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $langues = array('fr', 'en', 'kh');
    // si l'utilisateur change la langue dans l'url : on met la bonne langue
    foreach($langues as $lg){
    	if( strpos($_SERVER['PHP_SELF'], $address_website.$lg.'/') ){
    		$_SESSION['lang'] = $lg;
    	}
    }
    if( empty($_SESSION['lang']) ){
    		$_SESSION['lang'] = 'fr'; // langue par défaut
    		header("Location: ".$address_website."fr/accueil");
    		exit;
    }
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément."
    Nicolas Boileau-Despréaux (1636-1711).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : juin 2010
    Messages : 221
    Points : 107
    Points
    107

    Par défaut

    Merci pour cette reponse qui fonctionne comme ceci

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $langues = array('fr','en');
    foreach($langues as $lg){
        if(strpos($_SERVER['PHP_SELF'], $website_adr.$lg.'/') ){
            $_SESSION['lang'] = $lg;
        }
    }
    if($_GET['lang'] != in_array($_GET['lang'],$langues)){
        $_SESSION['lang'] = 'fr'; // langue par défaut
        header("Location: ".$website_adr."fr/accueil");
        exit;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •