site multilangue avec cookies

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : site multilangue avec cookies

Re: site multilangue avec cookies

par martial_zero » 15 août 2009, 15:35

merci ton aide m été très très concluant
je remis le script comme tu m as dit en modifiant juste un petit paticulier
je te poste mon script finale .

$lang_traduites = array(0 => 'fr', 1 => 'en');
$langue_defaut = $lang_traduites[0];

$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));

$lang = !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang = !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang = !empty($lang)? $lang : $lang_navig ;
$lang = in_array($lang,$lang_traduites)? $lang : $langue_defaut;
include($lang.'-lang.php');// le changement que j' ai fait

//script d'origine

//fin du script d'origine

//définition de la durée du cookie (1 an)
if ((!empty($_GET['lang']) && in_array($_GET['lang'],$lang_traduites)) && (empty($_COOKIE['lang']) || (isset($_COOKIE['lang']) && $_COOKIE['lang'] != $_GET['lang']))) setcookie('lang', $_GET['lang'], time() + 3600 * 24 * 365);

?>
une autre fois merci infiniment
ca fonctionne

Re: site multilangue avec cookies

par AB » 14 août 2009, 15:31

Je t'ai donné le code complet.
Il te suffisait de le recopier sans enlever la dernière partie.

Ensuite il faut travailler sur $lang et non pas sur $_GET['lang'] pour faire tes includes.

Donc
$lang_traduites = array(0 => 'fr', 1 => 'en');
$langue_defaut = $lang_traduites[0];

$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));

$lang =  !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang =  !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang =  !empty($lang)? $lang : $lang_navig ;
$lang =  in_array($lang,$lang_traduites)? $lang : $langue_defaut;

if ((!empty($_GET['lang']) && in_array($_GET['lang'],$lang_traduites)) && (empty($_COOKIE['lang']) || (isset($_COOKIE['lang']) && $_COOKIE['lang'] != $_GET['lang']))) setcookie('lang', $_GET['lang'], time() + 3600 * 24 * 365);


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');
    }

Re: site multilangue avec cookies

par martial-zero1981 » 13 août 2009, 22:08

voila pour le coup de pouce
j ai modifié ma page mais je n arrive toujours pas a récupérer ma cookie

<?php

$lang_traduites = array(0 => 'fr', 1 => 'en');
$langue_defaut = $lang_traduites[0];

$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));

$lang = !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang = !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang = !empty($lang)? $lang : $lang_navig ;
$lang = in_array($lang,$lang_traduites)? $lang : $langue_defaut;

//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",$lang, time() + $expire);

?>

Re: site multilangue avec cookies

par AB » 13 août 2009, 04:25

Pour placer le site dans la langue du navigateur si elle est traduite, sinon afficher la langue par défaut (ici l'anglais), ou afficher la langue choisie par le visiteur avec $_GET['lang'] et mémoriser ce choix dans un cookie pour un an :
$lang_traduites = array(0 => 'en', 1 => 'fr', 2 => 'ru');
$langue_defaut = $lang_traduites[0];

$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));

$lang =  !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang =  !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang =  !empty($lang)? $lang : $lang_navig ;
$lang =  in_array($lang,$lang_traduites)? $lang : $langue_defaut;

if ((!empty($_GET['lang']) && in_array($_GET['lang'],$lang_traduites)) && (empty($_COOKIE['lang']) || (isset($_COOKIE['lang']) && $_COOKIE['lang'] != $_GET['lang']))) setcookie('lang', $_GET['lang'], time() + 3600 * 24 * 365);

site multilangue avec cookies

par martial zero » 13 août 2009, 00:46

je vous explique tout simplement mon prob je redige un scirpt
qui me donne la possibilite à travers une cookie de suavgarder la valeur d une langue choisi dans un site supposer un site multi langue
le passage entre les langue se fait de facon parfaite reste le fait que je n arrive pas à sauvgarder la langue lorsque je redemarre la page

pour exlique un peux j ai une
page index
qui te donner la possibilité de choisir la langue
un fichier decide-langue.php qui teste la valeur passer
un fichier choix.php qui donne la possibilité de choisir la langue
2 fichier en-lang.php et fr-lang.php ou je sauvgarde des constante en fonction de la langue choisi

1-ma page index.php
<?php
$html="<html><body>" ;
include("decide-lang.php");
include("choix.php");
$html.=TXT_ACCUEIL_INDEX."<br>";
$html.="Meteo du jour :".TXT_METEO."<br";
$html.="conseil du jour :".TXT_CONSEIL_INDEX;
$html.="</body></html>";
echo $html;
?>
2-ma page choix.php
<?php
$html.='<table><tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=fr" title="langue francaise">langue francaise</a></td></tr>
<tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=en" title="langugue anglaise">langue anglaie </a></td></tr>
</table>';
?>
3ma 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 ((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);

?>
et les deux page en-lang.php et fr-lang.php
<?php
define('TXT_ACCUEIL_INDEX', 'Bienvenue sur PHP D&egrave;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&egrave;butant !");
define("TXT_METEO", "The sun is shining !");
define("TXT_CONSEIL_INDEX", "Lets do some PHP !");
?>