Obligé de cliquer une seconde fois

Résolu
Unavailable Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   - 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   Statut Membre Dernière intervention   189
 
bonsoir,
perso, ca fonctionne sans double clic.
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   163
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
tu pourrais me dire quel est ta configuration pc navigateur et option de cache ?
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   846
 
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   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention   1
 
tu connaîtrais une fonction pour seulement les use la première fois?
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   846
 
Es-tu déjà sûr que le problème vient de là?
0
Unavailable Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention   1
 
il est en ligne et ça marche pas :(
0
Unavailable Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   846
 
Bah j'avais mis une session censée remplir ce rôle justement !
0
Unavailable Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   846
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
Je me permet un petit up, je galère toujours autant :(
0
Unavailable Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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
librequetucrois
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   846
 
Nickel :)
0