Site multilangue avec cookies

martiallover Messages postés 6 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 20 août 2009 - 10 août 2009 à 23:33
redka99 Messages postés 2 Date d'inscription vendredi 21 novembre 2008 Statut Membre Dernière intervention 11 novembre 2009 - 11 nov. 2009 à 18:20
Bonjour tout le monde
je vous poste mon problème
je suis entrain de chercher quelle sont les voie plus pratique pour un site multilingue
je teste des script en local et ca marche sans prob vue la non complexité du script et sa varieté sur le web mais une fois que j introduit les cookies j ai ce type de prob
d après mes recherches je sait que certainement c est à cause d un echo qui ne doit pas être la
mais la je ne sait pas ou je doit modifier le script
voilà le message d erreur
Warning: Cannot modify header information - headers already sent by (output started at C:xampphtdocssitemlchoix.htm:4) in C:xampphtdocssitemldecide-lang.php on line 22

voiilà mon script tout simplement il se deroule de cette facon
une page index qui afffiche le contenu
puis un requiers choix.htm qui contient qui donnent la possibilités de choisir la langue
puis une autre requiers decide-lang.php qui agit selon ces étapes

1-assigner une langue si elle existe dans une cookie
2-si elle n est pas existante prendre la langue par defaut du navigateur
3-si non choisir une langue soit francais ou anglaise
fixer la cookies à un ans
voilà ma page index.php
1-// ma page index
<?php require("choix.htm");?>
<?php require("decide-lang.php");?>
<html>

<?php echo TXT_ACCUEIL_INDEX; ?>


Meteo du jour : <?php echo TXT_METEO; ?>


Conseil du jour : <?php echo TXT_CONSEIL_INDEX; ?>

</html>
2-ma page choix.htm
langue francaise,
----
langue anglaie

3-ma page decide-lang.php
<?php

if(isset($HTTP_COOKIE_VARS['lang'])) {
$lang = $HTTP_COOKIE_VARS['lang'];
} else {
// si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
}

//script d'origine
if ($lang=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('en-lang.php');
}
//fin du script d'origine

//définition de la durée du cookie (1 an)
$expire = 365*24*3600;

//enregistrement du cookie au nom de lang
setcookie("lang", $lang, time() + $expire);

?>
je compte sur vous .

4 réponses

cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
11 août 2009 à 16:23
salut

l'erreur te dit :

il ne peut y avoir de flux html AVANT appel à setcookie()
cf : http://fr.php.net/manual/fr/function.setcookie.php

donc decide-lang.php dans etre avant require("choix.htm"); puisque celui-ci affiche du html

++
0
martiallover Messages postés 6 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 20 août 2009
12 août 2009 à 00:34
j ai jeté un coup d oeil sur le lien ( merci )
et puis modifier la sortie de tel sorte le setcookie part avant n importes
quel affichage de cette manière désormais
le message message d erreur est disparu mais je n arrive toujours pas
a faire le switch entre les deux langues car ca reste toujours bloqué sur le francais.
voilà mon script après modification .

1-page index
<?php
$html="<html>" ;
include("decide-lang.php");
include("choix.php");
$html.=TXT_ACCUEIL_INDEX."
";
$html.="Meteo du jour :".TXT_METEO."
</html>";
echo $html;
?>
2-ma page choix.php
<?php
$html.='langue francaise,
----
langue anglaie
';
?>
3-ma page decide-lang.php
<?php

if(isset($HTTP_COOKIE_VARS['lang'])) {
$lang = $HTTP_COOKIE_VARS['lang'];
} else {
// si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
}

//script d'origine
if ($lang=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('en-lang.php');
}
//fin du script d'origine

//définition de la durée du cookie (1 an)
$expire = 365*24*3600;

//enregistrement du cookie au nom de lang
setcookie("lang", $lang, time() + $expire);

?>
enfin les deux fichier fr-lang.php en-lang.php
<?php
define('TXT_ACCUEIL_INDEX', 'Bienvenue sur PHP Dèbutant' );
define('TXT_METEO', 'Il fait un soleil radieux !');
define('TXT_CONSEIL_INDEX', 'Faites du PHP !');
?>
<?php
define("TXT_ACCUEIL_INDEX", "Welcome on PHP Dèbutant !");
define("TXT_METEO", "The sun is shining !");
define("TXT_CONSEIL_INDEX", "Lets do some PHP !");
?>
0
martiallover Messages postés 6 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 20 août 2009
13 août 2009 à 00:30
salut voilà j ai rectifié mon script
tout d abord la partie du $-GET[] qui manqué
et puis une faute en declarant ma variable lang
maintenat mon petit script marche mais je n arrive toujours pas
à memoriser la langue dans ma cookie

voila le script apres rectification .
<?php

if(isset($HTTP_COOKIE_VARS['lang'])) {
$lang = $HTTP_COOKIE_VARS['lang'];

} else {
// si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);

}

//script d'origine
if ((isset($_GET['lang'])) && ($_GET['lang']=='fr')) { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} elseif ((isset($_GET['lang'])) && ($_GET['lang']=='en')) { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php

include('en-lang.php');
}
//fin du script d'origine

//définition de la durée du cookie (1 an)
$expire = 365*24*3600;

//enregistrement du cookie au nom de lang

setcookie("lang", $_GET['lang'], time() + $expire);

?>
0
redka99 Messages postés 2 Date d'inscription vendredi 21 novembre 2008 Statut Membre Dernière intervention 11 novembre 2009
11 nov. 2009 à 18:20
desolé monsieur tu dit n 'import =koi
0
Rejoignez-nous