Gestion cookies multilangues, problèmes !

stef005 Messages postés 3 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 28 octobre 2010 - 27 oct. 2010 à 21:21
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 28 oct. 2010 à 19:20
Salut à tous, j'ai un problème sur mon code ( cela fait 1 semaine que je suis dessus et cela commence à me brouter grave )

En gros temps que j'ai le cookie tout vas bien une fois supprimé j'ai ça :

Warning: main(lang//general.php): failed to open stream: No such file or directory in c:\program files (x86)\easyphp1-7\www\header.php on line 376

Bon si comprends bien il me dis que ce n'est une erreur suite à la non définition de la langue !
mais je n'arrive pas à définir la langue par défaut sans que cela empiète sur les autres !

Voilà le code :

if (isset($newlang) ) {
if (file_exists("lang/".$newlang."/general.php")) {
setcookie("lang",$newlang,time()+3600 * 24 * 365);
include("lang/$newlang/general.php");
$currentlang = $newlang;
} else {
setcookie("lang",$lang_definie,time()+3600 * 24 * 365);
include("lang/$lang_definie/general.php");
$currentlang = $lang_definie;
}

} elseif (isset($lang)) {

setcookie("lang",$lang,time()+3600 * 24 * 365);
require("lang/$lang/general.php");
$currentlang = $lang;
} else {
setcookie("lang",$lang_definie,time()+3600 * 24 * 365);
include("lang/$lang_definie/general.php");
$currentlang = $lang_definie;
}

J'en fais appel aux âmes charitable qui pourraient éclairer ma lanterne sur ce petit problème qui me les brises

7 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 oct. 2010 à 22:17
Salut,

ce petit problème qui me les brises [...]
cela commence à me brouter grave


Un peu de tenue nom de dieu !!!

Warning: main(lang//general.php): failed to open streace petit problème qui me les brises m: No such file or directory in c:\program files (x86)\easyphp1-7\www\header.php on line 376

Et où se trouve cette ligne 376 dans le code que tu postes ?
L'utilisation de la balise code permettrait également de mieux s'y retrouver car elle permet entre autre la coloration syntaxique et l'indentation.

Je ne sais pas trop quoi te répondre étant donné que l'on ne sait pas comment sont définies les variables ($newlang, $lang, $lang_definie, etc ...)
Ton erreur semble montrer que l'une d'entre elles est vide.

Plus de code et d'explications semblent nécessaire.

Cordialement,

Kohntark -
0
stef005 Messages postés 3 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 28 octobre 2010
27 oct. 2010 à 22:35
Ben la variable vide est mon cookie qui n'existe pas ^^ là et mon problème.
Quand j'ai le cookie tout baigne mais que dès qu'un nouveau visiteur arrive il a l'erreur

la ligne 376 est : include("lang/$lang_definie/general.php");
celle après le esleif.

Dsl d'avoir zappé ce détail
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 oct. 2010 à 23:16
Ben la variable vide est mon cookie qui n'existe pas ^^ là et mon problème.

Ben je n'en doute pas, mais là est ma question (désolé de me répéter) :
on ne sait pas comment sont définies les variables ($newlang, $lang, $lang_definie, etc ...)


Sans savoir comment $lang_definie est ... définie il n'est pas possible de te répondre.

Cordialement,

Kohntark -
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
28 oct. 2010 à 01:17
Salut,

Sinon quand on est un type bien on utilise le accept-language fournis par le client et non un système par cookie qu'on a bidouillé soi même tant bien que mal car on avais envie de réinventer la roue carrée.
0

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

Posez votre question
stef005 Messages postés 3 Date d'inscription dimanche 29 janvier 2006 Statut Membre Dernière intervention 28 octobre 2010
28 oct. 2010 à 07:23
Salut, j'ai repris mon code de A à Z
Et cela fonctionne, ma roue carré tourne rond

// si changement de langue par l'utilisateur
if (isset($newlang) ) {
if (file_exists("lang/".$newlang."/general.php")) {
setcookie("lang",$newlang,time()+3600 * 24 * 365);
include("lang/$newlang/general.php");
$currentlang = $newlang;
} else {
setcookie("lang",$lang_definie,time()+3600 * 24 * 365);
include("lang/$lang_definie/general.php");
$currentlang = $lang_definie;
}
// sinon on lit la langue du cookie
} elseif (isset($lang)) {

setcookie("lang",$lang,time()+3600 * 24 * 365);
require("lang/$lang/general.php");
$currentlang = $lang;
// lecture de la langue par défaut
} else {
setcookie("lang",Francais,time()+3600 * 24 * 365); // Définition de la langue par défaut
include("lang/Francais/general.php");
$currentlang = Francais;
}


Merci @ ++
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
28 oct. 2010 à 08:56
Pauvre TychoBrahé, heureusement qu'en son temps il était écouté...

Je vais donc en rajouer une couche : il est toujours bon d'utiliser la variable $_SERVER['HTTP_ACCEPT_LANGUAGE'] définie dans PHP qui permet de connaître les langues préférées du navigateur (et donc a priori de l'utilisateur au lieu de lui filer une langue dont il n'a peut-être rien à faire).

Et si on pousse un peu la rigueur, on peut même carrément utiliser Locale::acceptFromHttp

Et alors si on combine avec gettext, autant dire que la roue n'a plus besoin d'être inventée, juste utilisée.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
28 oct. 2010 à 19:20
@Neige / Tycho :
OK pour l'utilisation de ces méthodes, mais je vois mal comment on peut changer de langue en ne se basant que sur elles (sans bien sûr aller modifier la config du browser)
Rien ne dit que cette
Stef005 a semble t-il de gros problèmes pour répondre aux questions, je me re répète donc :
on ne sait pas comment sont définies les variables ($newlang, $lang, $lang_definie, etc ...)


Peut être que l'une d'entre elles est affectée à la préférence linguistique du browser ...

Thanks pour le Locale::acceptFromHttp que je ne connaissais pas.


Cordialement,

Kohntark -
0
Rejoignez-nous