Obligé de cliquer une seconde fois

Résolu/Fermé
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 - 9 nov. 2011 à 17:37
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 - 16 nov. 2011 à 10:09
Bonjour,

Je travaille actuellement sur la traduction d'un site Web en Anglais et en Espagnol, après un travail acharné et une aide plus que bienvenue de CCM, je suis enfin arrivé au résultat voulu à un petit détail près.

Mes Boutons de sélection de la langue (situés en bas à droite) du site ne marchent qu'après deux clics. Lors du premier clic, la page qui est renvoyée est l'accueil de ma version française. Je ne parviens pas à trouver ce qui cloche.

Le site en question --> http://virtual-it.fr/ (pour que vous puissiez voir par vous même)

J'ai cru comprendre en parcourant des forums qu'il pouvait d'agir d'un bug (??) propre au HTML5, mais ça me parait gros comme truc.

Voici le bout de code concernant les boutons en question :


<table>
<tr>
<td style="padding-left: 100px">
<td width=24 height=30><a href="http://virtual-it.fr/">En</a></td>
<td style="padding-left: 4px">
<td width=24 height=30><a href="http://virtual-it.fr/">Fr</a></td>
<td style="padding-left: 4px">
<td width=24 height=30><a href="http://virtual-it.fr/">Es</a></td>
<td style="padding-left: 4px">
</td>
</tr>
</table>



Auriez vous, chers internautes une piste de solution à mon problème ??

Cordialement.

18 réponses

Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
9 nov. 2011 à 19:22
bonsoir,
perso, ca fonctionne sans double clic.
0
MastercroW Messages postés 1094 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
10 nov. 2011 à 09:05
Hello,

Je fais une petit remarque où je pense que j'ai raison :
Un domaine se terminant en .fr ne fonctionne que en France.
En revanche un domaine en .com, fonctionne dans le monde entier.

Donc si tu fais : http://virtual-it.fr/

Certes ta page sera en espagnol, mais l'espagnol ne pourra pas accéder à ton site car il se termine en .fr.
Si tu aurais fais http://es.virtual-it.com, ça aurait marcher. Car quand j'étais en Allemagne, je ne pouvais qu'accéder au site terminant .de, et lors que j'allais sur un site .fr, cela faisait une redirection.
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
Modifié par Mihawk le 10/11/2011 à 15:57
Non je crois que c'est accessible de partout... En revanche cela ne réserve pas les autres noms de domaine.

[Edit] la preuve c'est qu'en france du as accès aux autres site, ex : http://www.site.it/
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 16:51
non j'ai pris l'option de réservation des noms de domaine pour éviter ça (es et en)
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 11:33
j'ai mis un sous domaine http://virtual-it.fr/ j'ai déjà test avec le changement de localisation de firefox et ça marche la dessus pas de soucis
0
MastercroW Messages postés 1094 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
10 nov. 2011 à 15:07
J'ai vraiment un doute, tu peux demandé à quelqu'un tu connais qui habite en dehors de la France ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
Modifié par Unavailable le 10/11/2011 à 15:35
j'ai inclus un module de détection de la langue dont le code est le suivant :

<?php 
if (!isset($langue_user) && !isset($_SESSION["ch_langue"])){ 
$langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2); 

switch($langue_user) 
 {  
 case"fr": 
 $_SESSION["ch_langue"] = "fr"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
   
 case "en": 
 $_SESSION["ch_langue"] = "en"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
  
 case "es": 
 $_SESSION["ch_langue"] = "es"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
   
 default: 
 $_SESSION["ch_langue"] = "en"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
 } 
} 
?> 



il marche très bien mais me bloque du coup le premier clic du changement de langue vu que ça renvoie tout le module de récupération de la langue demandé (qui consiste en un simple changement de sous domaine)
y a t il un moyen de changer ce code ou de le mettre ailleurs? actuellement il est dans le header avant la balise <head>
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 15:39
tu pourrais me dire quel est ta configuration pc navigateur et option de cache ?
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
Modifié par Mihawk le 10/11/2011 à 15:54
Et ce post alors : https://forums.commentcamarche.net/forum/affich-23602191-probleme-d-actualisation-d-un-div#p23604530 ?

J'en croyais qu'en passant en sous-domaines c'était résolu ?


Mihawk
"Tant qu'on ne fait pas, on ne sait pas."
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
Modifié par Unavailable le 10/11/2011 à 16:08
rassure toi, moi aussi. Mais en passant en sous domaine j'ai aussi changé les boutons et maintenant le soucis c'est pas a chaque changement de langue mais a la première utilisation du site la première fois qu'on clique sur les liens de langue ça bug et à ce que je crois avoir compris ça vient du script de détection auto de la langue, mais je ne peu pas l'enlever il est assez important.

Et quand j'ai mis [Résolu] sur mon ancien post, j'avoue que je ne pensais pas que ce problème ait été masqué par le cache du navigateur (vu que j'ai navigué sur toutes les pages du site y a peu de chance qu'il me refuse) la nature du problème ayant changé et que j'ai mis le post en résolu je ne savais pas trop que choisir entre faire un nouveau sujet ou réécrire dans un sujet en résolu ne demandant pas de réponses de par sont statuts du coup j'ai eu la souris trop rapide et ai été berné par mon cache
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
Modifié par Mihawk le 10/11/2011 à 16:15
Ah oui ça ne plante que lorsque le cache est vide ?
Chez moi ça a planté le premier coup et depuis ça marche nickel...
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 16:16
Par contre sachant que tes liens renvoient déjà vers en ; www ou es, je ne vois pas l'intéret de réutiliser des header derrière ?
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 16:24
tu connaîtrais une fonction pour seulement les use la première fois?
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 16:27
Une fonction non, mais 'suffit de stocker un booléen dans une session ou un cookie !
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 16:32
tu pourrais me dire comment please ? mon maître de stage commence à y mettre la pression
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 16:33
Es-tu déjà sûr que le problème vient de là?
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 16:38
en supprimant la détection auto de la langue du navigateur le clique marche instant et du premier coup (l'idée m'est venue dans un états d'esprit de quelqu'un de perdu et dans un acte de survie et un peu de rage contre cette fonction qui marche pas j'ai delete la fonction et la? miracle ça marche!)
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 16:41
Essaye ça (sans conviction aucune) :

<?php 
if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]) && !isset($_SESSION["ch_langue"])){ 
$langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2); 

switch($langue_user) 
 {  
 case"fr": 
 $_SESSION["ch_langue"] = "fr"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
   
 case "en": 
 $_SESSION["ch_langue"] = "en"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
  
 case "es": 
 $_SESSION["ch_langue"] = "es"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
   
 default: 
 $_SESSION["ch_langue"] = "en"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
 } 
} 
?> 

0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 16:48
non ça ne marche pas :( (je te le laisse en ligne pour que tu vois ça dit moi quant je peu le rechanger)
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 16:59
Et ça ?

<?php 
if (!isset($_SESSION["notFirstVisit"]) || $_SESSION["notFirstVisit"]!=true){

if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]) && !isset($_SESSION["ch_langue"])){ 

$_SESSION["notFirstVisit"] = true;
$langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2); 

switch($langue_user) 
 {  
 case"fr": 
 $_SESSION["ch_langue"] = "fr"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
   
 case "en": 
 $_SESSION["ch_langue"] = "en"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
  
 case "es": 
 $_SESSION["ch_langue"] = "es"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
   
 default: 
 $_SESSION["ch_langue"] = "en"; 
 header ("Location: http://virtual-it.fr/"); 
 break; 
 } 
}
}
?> 
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 17:02
il est en ligne et ça marche pas :(
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
10 nov. 2011 à 17:17
il faudrait en faite que ce code ne soit utilisé que la première fois qu'on entre sur le site (ou que le cache est vide) mais après il ne faut surtout pas qu'il ressorte du tiroirs
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 nov. 2011 à 17:17
Bah j'avais mis une session censée remplir ce rôle justement !
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
Modifié par Unavailable le 10/11/2011 à 17:30
il manque pas une ligne pour dire de sauter le code si 'FirstVisite' est up? ou ca le saute tout seul? (il ne faut pas oublier que le code est vraiment en tout début du fichier header avant même la balise <head>) donc peut être que ça ne se fera pas automatiquement
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
14 nov. 2011 à 10:06
Si tu observes bien tu vois que j'ai mis un :

if (!isset($_SESSION["notFirstVisit"]) || $_SESSION["notFirstVisit"]!=true){ ... }
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
14 nov. 2011 à 11:20
sous firefox il commence a me charger le es.virtual-it.fr et juste s'arrete en me réafficahant la langue de base du navigateur
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
14 nov. 2011 à 10:02
Je me permet un petit up, je galère toujours autant :(
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
14 nov. 2011 à 10:32
https://forums.commentcamarche.net/forum/affich-23613427-oblige-de-cliquer-une-seconde-fois#16
j'ai un peu réfléchi a ce commentaire et je me suis dit que le switch que j'appelle après est la raison de ce soucis je m'explique:
le header a fait son boulot => il a chargé la langue en fonction de la langue du navigateur
le switch (dans le footer) pose problème vu qu'il recharge la page encore une fois avec le header
là ou ça ne va plus c'est qu'il n'a pas gardé en mémoire le faîte que je change de langue et non que je demande une nouvelle page avec une réutilisation du header je demande juste un changement de sous-domaine qui me permettrais de changer la langue
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
14 nov. 2011 à 11:07
y a des chances que ce soit dû au faîte que j'utilise un fichier xml pour la traduction de la page d'acceuil et que le xml oblige une mise en cache?
0
slt

Au cas où :

Sans les cookies, le chargement mouline et j'obtiens :

"La page n'est pas redirigée correctement" (message Firefox)

As-tu ou avez-vous testés (ceux qui aident) avec les cookies désactivés ?

Les cookies ne sont-ils pas un problème pour la redirection ?

En tout cas, le site est inaccessible sans les cookies.

(Perso, par défaut, je désactive les cookies, pas de référer, pas de script, ... = Addons)
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
14 nov. 2011 à 11:55
généralement les gens laissent les cookies activé non? Oo
me manque vraiment juste ce soucis la pour en finir avec ce site c'est pas comme si je le voyais tout les jours mais un peu.
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
Modifié par Unavailable le 14/11/2011 à 13:59
je vais voir du coté de index.php des langue es et en voir si y pas quelque chose a faire
0
Unavailable Messages postés 43 Date d'inscription jeudi 22 septembre 2011 Statut Membre Dernière intervention 20 février 2013 1
14 nov. 2011 à 17:09
finalement j'ai opté pour un peu de cookie et ça marche^^ je donne le code pour ceux qui m'ont aidé:
<?php
$langue = new Zend_Session_Namespace('langue');
if (!isset($_COOKIE["virtual"])) {
$array_code = array('fr','en','es');
setcookie('virtual', 'langue', time() + 7200, '/', '.virtual-it.fr');
$langue_user = $code = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
$langue_user = (in_array($langue_user, $array_code)) ? $langue_user : 'en';
$langue_user = ($langue_user == 'fr') ? 'www' : $langue_user;
if ($code != $langue->code)
	header ("Location: http://$langue_user.virtual-it.fr");
}
?>
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
16 nov. 2011 à 10:09
Nickel :)
0