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 :

Probleme sur un code multilangue


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Professor de Física Universidad UTESA
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : Professor de Física Universidad UTESA
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Probleme sur un code multilangue
    Bonjour,
    Sur mon site en espagnol, la langue par défaut, j'aimerai rajouter le FR et EN
    Le site pointe sur une traduction include/language/espagnol.php
    J'ai créé 2 autres fichiers de traduction "english.php et french.php)

    Sur les codes que j'ai mis en index, le site se traduit bien quand on clic sur les drapeaux du header correspondant aux langues.
    Cependant dès qu'on clic sur un lien de l'index, la page suivante se remet par défaut en espagnol.
    N'etant vraiment pas un pro je pense avoir une erreur sur le code, ou est-ce que je me suis planté ?
    Quelqu'un peut'il m'aider ?
    Voici mes codes :

    index.php

    Code PHP : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
    // si langue déclarée par cookie et qu'il ny a pas de requete
    // pour le choix de la langue alors on choisit le cookie
     
    if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'es' && $_GET['langue'] != 'fr')	
    	{  			
    	$langue = $_COOKIE['CHOIXlang'];
    	}
     
    else if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'fr' && $_GET['langue'] != 'en')	
    	{  			
    	$langue = $_COOKIE['CHOIXlang'];
    	}
     
    else if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'en' && $_GET['langue'] != 'es')	
    	{  			
    	$langue = $_COOKIE['CHOIXlang'];
    	}
     
    // le choix de la langue est déclaré par url
     
     
    else if ($_GET['langue'] == 'es' || $_GET['langue'] == 'en')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'es' || $_GET['langue'] == 'fr')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'es')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'fr')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'fr' || $_GET['langue'] == 'es')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'fr' || $_GET['langue'] == 'en')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
     
    // si aucune langue n'est déclarée on tente de reconnaitre
    // la langue par défaut du navigateur
     
    else 			
    	{
    	$langue = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
    	set_cookie($langue);
    	}
     
    function set_cookie($langue)
    	{
     
    //définition de la durée du cookie (1 an)
     
    	$expire = 365*24*3600;
     
    //enregistrement du cookie au nom de CHOIXlang + détection si erreur
     
    	if (setcookie("CHOIXlang", $langue, time() + $expire) != TRUE)
    		{
    //     	        echo 'El cookie no foncionna<br />';
    		}
    	else
    		{
    		setcookie("CHOIXlang", $langue, time() + $expire);
    //		echo 'El cookie foncionna<br />';		
    		}
    	}
    ?>
    dans le <body>

    Code PHP : 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
    <?php
     
    // affichage de la bonne langue
    // si le cookie vaut 'es' ou si la requete vaut 'es',
    // on inclut le fichier espagnol.php
     
    if ($_GET['langue'] == "es" || $langue == "es")
    	{
    		include('includes/language/espagnol.php');
    	}
     
    // affichage de la bonne langue
    // si le cookie vaut 'fr' ou si la requete vaut 'fr',
    // on inclut le fichier french.php
     
    elseif ($_GET['langue'] == "fr" || $langue == "fr") 
    	{
    		include('includes/language/french.php');
    	}
     
    // affichage de la bonne langue
    // si le cookie vaut 'en' ou si la requete vaut 'en',
    // on inclut le fichier english.php
     
    elseif ($_GET['langue'] == "en" || $langue == "en")
    	{
    		include('includes/language/english.php');
    	}
     
    ?>

    Lien des drapeaux

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php 	
       if(empty($_SESSION['connect']))
       {
    	if($param_gen['actif_acc'] == 2 || $param_gen['actif_acc'] == 3) echo '<li class="li_top_header">&nbsp;
    <a href="?langue=es" title="Español"><img src="images/flag_es.gif" height="14" alt="Español" /></a>
    <a href="?langue=fr" title="Français"><img src="images/flag_fr.gif" height="14" alt="Français" /></a>
    <a href="?langue=en" title="English"><img src="images/flag_en.gif" height="14" alt="English" /></a>&nbsp;&nbsp;
    <img src="images/top_header_fl.png" alt="" /><a href="acc_conn.php?type=1">'. $language['lien_compte'] .'</a></li>';
    	if($param_gen['actif_acc'] > 1) echo '<li class="li_top_header"><img src="images/top_header_fl.png" alt="" /><a href="acc_conn.php?type=2">'. $language['lien_compte_pro'] .'</a></li>'; 
        }
    	else echo '<a href="" title="Español"><img src="images/flag_es.gif" height="14" alt="Español" /></a>&nbsp;<li class="li_top_header"><img src="images/top_header_fl.png" alt="" /><a href="acc_bord.php">'. $language['compte_lien_bord1'] .'</a></li><li class="li_top_header"><img src="images/top_header_fl.png" alt="" /><a href="acc_logout.php">'. $language['compte_lien_bord5'] .'</a></li>';
     
    	if($param_gen['actif_acc'] > 1 && $param_gen['active_bout'] == 1) echo '<li class="li_top_header"><img src="images/top_header_fl.png" alt="" /><a href="boutiques_search.php">'. $language['lien_boutiques'] .'</a></li>';
     
    ?>

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bon une chose à la fois.

    Ici, tu fais tout le temps la même chose, alors pourquoi autant de if
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
    if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'es' && $_GET['langue'] != 'fr')	
    	{  			
    	$langue = $_COOKIE['CHOIXlang'];
    	}
     
    else if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'fr' && $_GET['langue'] != 'en')	
    	{  			
    	$langue = $_COOKIE['CHOIXlang'];
    	}
     
    else if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'en' && $_GET['langue'] != 'es')	
    	{  			
    	$langue = $_COOKIE['CHOIXlang'];
    	}
     
    // le choix de la langue est déclaré par url
     
     
    else if ($_GET['langue'] == 'es' || $_GET['langue'] == 'en')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'es' || $_GET['langue'] == 'fr')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'es')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'fr')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'fr' || $_GET['langue'] == 'es')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
     
    else if ($_GET['langue'] == 'fr' || $_GET['langue'] == 'en')
    	{ 
    	$langue = $_GET['langue'];
    	set_cookie($langue);
    	}
    Tout ce qui t'intéresse c'est de récupérer la langue, alors pourquoi tester ce qui se trouve dans ton $_GET, vérifie seulement qu'il est pas vide, a la limite qu'il contient tes trois langue, mais tu nous fait ça sur une ligne.

  3. #3
    Candidat au Club
    Professor de Física Universidad UTESA
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : Professor de Física Universidad UTESA
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    et je dois faire comment ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Et bien tu vérifies que ton $_GET ( isset() ) existe, et que celui-ci contient tes trois langue avec un in_array() par exemple

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A quoi sert cette palanqué de conditions au début ?
    Tes cas se résument à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $tblLangue = array('es'=>'espagnol', 'fr'=>'french', 'en'=>'english');
     
    if (isset($_GET['langue']) && isset($tblLangue[$_GET['langue']])) {  // si on a cliqué sur un lien de langue
           set_cookie($_GET['CHOIXlang']);
           $langue = $tblLangue[$_GET['langue']];
    }
    elseif (isset($_COOKIE['CHOIXlang']) && isset($tblLangue($_COOKIE['CHOIXlang'])) { // s'il y a un cookie
           $langue = $tblLangue[$_COOKIE['CHOIXlang']];
    }
    else {  // par défaut
           $langue = 'french';
    }
    include('includes/language/' . $languer . '.php');
    Ce code doit être inclus sur toutes les pages.

    Au passage, ne met pas des fautes d'encodage toi même dans le code
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Rhooooooooo fallait le laisser chercher un peu

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

Discussions similaires

  1. [Débutant] Probleme sur mon code C1Chart
    Par solaar dans le forum Silverlight
    Réponses: 0
    Dernier message: 10/06/2013, 04h22
  2. petit probleme sur mon code
    Par MORPHEUS50 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/05/2007, 18h16
  3. des problemes sur le code ADO
    Par bambi98 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/03/2007, 11h34
  4. Réponses: 1
    Dernier message: 18/07/2006, 20h54
  5. Probleme sur code envoie de mail
    Par xboulney dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 21h31

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