|
|
|
|
Bonjour,
j'ai créé un site en php avec affichage sur page unique. je veux mettre 2 images clickable, avec 2 petits drapeaux permettant de choisir la langue d'affichage.
j'ai procéder en créant 2 fichiers: fr-lang.php et en-lang.php. Ils contiennent les memes variables, avec des valeurs différentes selon la langue.
ex: pour fr-lang.php
<?php
//---------------------------------------------------------
// menu de index.php
//---------------------------------------------------------
define('TXT_BOUTON_1', 'HOME');
define('TXT_BOUTON_2', 'bonjour');
define('TXT_BOUTON_3', 'au revoir');
?>
<?php
//---------------------------------------------------------
// menu de index.php
//---------------------------------------------------------
define('TXT_BOUTON_1', 'HOME');
define('TXT_BOUTON_2', 'hello');
define('TXT_BOUTON_3', 'good bye');
?>
<?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);
}
if ($lang=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('lang/fr-lang.php');
} elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('lang/en-lang.php');
}
//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);
?>
<html>
<head>blabla</head>
<body>blabla</body>
</html>
<a href="?page=<?php echo "$page";?>?lang=fr" ><span><span><img src="images/FR.png" height=25 width=32 /></span></span></a>
Configuration: Windows XP Firefox 3.0.2
Essayez avec ça:
|
Merci pour l'aide,
<?php
if(isset($_COOKIE['lang']) && $_REQUEST['lang'] == '') { // langue déclarée par cookie
$lang = $_COOKIE['lang'];
$test=1;
}
elseif (isset($_REQUEST['lang']) && $_REQUEST['lang'] != '') { // langue déclarée par request (http link)
$lang = $_REQUEST['lang'];
set_cookie($lang);
$test=2;
}
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);
set_cookie($lang);
$test=3;
}
//tableau pour le choix des pages
$tablo_pages = array( "home.php" => "home.php",
"cinema.php" => "cinema.php",
"docu.php" => "docu.php");
if( isset( $_GET['page'] ) && array_key_exists( $_GET['page'], $tablo_pages ) )
{
$page = $tablo_pages[$_GET['page']];
}
else
{
$page = $tablo_pages["home.php"];
}
function set_cookie($lang) {
//définition de la durée du cookie (1 an)
$expire = 365*24*3600;
//enregistrement du cookie au nom de lang + détection si erreur
if (setcookie("lang", $lang, time() + $expire) != TRUE)
{
echo 'Le cookie na pas marché<br />';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title> mon site </title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="sb/build/adapter/shadowbox-base.js"></script>
<script type="text/javascript" src="sb/build/shadowbox.js"></script>
<script type="text/javascript">
Shadowbox.loadSkin('classic', 'sb/src/skin');
Shadowbox.loadLanguage('fr', 'sb/build/lang');
Shadowbox.loadPlayer(['flv', 'html', 'iframe', 'img', 'qt', 'swf', 'wmp'], 'sb/build/player');
window.onload = function(){
Shadowbox.init();
/**
* Note: The following function call is not necessary in your own project.
* It is only used here to set up the demonstrations on this page.
*/
initDemos();
};
</script>
</head>
<body>
<div class="PageBackgroundGlare">
<div class="PageBackgroundGlareImage"></div>
</div>
<div class="Main">
<div class="Sheet">
<div class="Sheet-body">
<div class="Header">
<div>
<table class="logo">
<tr><td class="logo-name"><a href="#"></a></td></tr>
<tr><td class="logo-text"></td></tr>
</table>
</div>
</div>
<?php
// affichage de la bonne langue
if ($lang == "fr") { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('lang/fr-lang.php');
$final=1;
}
elseif ($lang == "en") { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('lang/en-lang.php');
$final=2;
}
// test pour les erreurs
echo "$ lang vaut " ;
echo $lang;
echo ' ';
echo "$ _COOKIE vaut (" ;
echo $_COOKIE['lang'];
echo ")";
echo ' ';
echo "$ test vaut ";
echo $test;
echo ' ';
echo "$ final vaut ";
echo $final;
?>
<div class="nav">
<ul class="menu">
<li><a href="?page=home.php" class=" active"><span><span><?php echo TXT_BOUT_1; ?> </span></span></a></li>
<li><a href="?page=cinema.php"><span><span><?php echo TXT_BOUT_2; ?> </span></span></a></li>
<li><a href="?page=docu.php"><span><span><?php echo TXT_BOUT_3; ?> </span></span></a></li>
<li><a href="?page=<?php echo $page;?>&?lang=fr" ><span><span><img src="images/FR.png" height=25 width=32 /></span></span></a></li>
<li><a href="?page=<?php echo $page;?>&?lang=en" ><span><span><img src="images/EN.png" height=25 width=32 /></span></span></a></li>
</ul>
<div class="l"></div>
<div class="r"><div></div></div>
</div>
<?php
include ($page);
?> |
Bonjour,
|
Merci pour le coup d'oeil, j'ai réglé cet élément mais ça n'avance pas. toujours les mm pb.
<?php
if (isset ($_COOKIE['lang'])) // si langue déclarée par cookie, on l'utilise
{
$lang = $_COOKIE['lang'];
$test=1;
}
else if ($_REQUEST['lang'] == 'en' || $_REQUEST['lang'] == 'fr')// langue déclarée par request (http link)
{
$lang = $_REQUEST['lang'];
set_cookie($lang);
$test=2;
}
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);
set_cookie($lang);
$test=3;
}
function set_cookie($lang)
{
//définition de la durée du cookie (1 an)
$expire = 365*24*3600;
//enregistrement du cookie au nom de lang + détection si erreur
if (setcookie("lang", $lang, time() + $expire) != TRUE)
{
echo 'Le cookie na pas marché<br />';
}
else
{
setcookie("lang", $lang, time() + $expire);
echo 'Le cookie a marché<br />';
}
}
?>
avec ma petite variable $test je suis sur que : ça fonctionne très bien, le cookie est lu comme il faut quand il faut, les requetes par url sont bien interprétées et sinon le choix de la langue est juste.
<?php
// affichage de la bonne langue
if ($lang == "fr") // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
{
include('lang/fr-lang.php');
$final=1;
}
elseif ($lang == "en") // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
{
include('lang/en-lang.php');
$final=2;
}
// test pour les erreurs
echo "$ lang vaut $lang . " ;
echo "$ _COOKIE vaut ";
echo $_COOKIE['lang'];
echo ".";
echo "$ test vaut $test . ";
echo "$ final vaut $final .";
?>
le choix de l'include est juste, $final se comporte comme il faut. mais $lang ne change jamais quand je clic sur mon lien: <a href="?lang=en&page=<?php echo $page;?>" ></a> <a href="?lang=fr&page=<?php echo $page;?>" ></a> frustration.... |
Regarde ici:
|
Mon probleme est résolu. merci pour les différents coups de mains qui m'ont aiguillé vers la résolution de ce problème! Mon erreur se situait dans les boucles if-else et dans les appellations des variables.
<?php
// si langue déclarée par cookie et qu'il ny a pas de requete
// pour le choix de la langue alors on choisit le cookie
if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'fr' && $_GET['langue'] != 'en')
{
$langue = $_COOKIE['CHOIXlang'];
}
// le choix de la langue est déclaré par url
else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'fr')
{
$langue = $_GET['langue'];
set_cookie($langue);
}
// si aucune langue n'est déclarée on tente de reconnaitre
// la langue par défaut du navigateur
else
{
$langue = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
set_cookie($langue);
}
?>
étape 2: CREATION DU COOKIE (les lignes qui suivent)
<?php
function set_cookie($langue)
{
//définition de la durée du cookie (1 an)
$expire = 365*24*3600;
//enregistrement du cookie au nom de CHOIXlang + détection si erreur
if (setcookie("CHOIXlang", $langue, time() + $expire) != TRUE)
{
// echo 'Le cookie na pas marché<br />';
}
else
{
setcookie("CHOIXlang", $langue, time() + $expire);
// echo 'Le cookie a marché<br />';
}
}
?>
etape 3: CHOIX DE LA LANGUE A AFFICHER (script dans le BODY)
<?php
// affichage de la bonne langue
// si le cookie vaut 'fr' ou si la requete vaut 'fr',
// on inclut le fichier fr-lang.php
if ($_GET['langue'] == "fr" || $langue == "fr")
{
include('lang/fr-lang.php');
}
// affichage de la bonne langue
// si le cookie vaut 'en' ou si la requete vaut 'en',
// on inclut le fichier fr-lang.php
elseif ($_GET['langue'] == "en" || $langue == "en")
{
include('lang/en-lang.php');
}
?>
étape 4: LIENS <A HREF=""> <a href="?langue=fr" ><img src="images/FR.png" height=25 width=32 /></a> Merci pour votre aide, j'espère que ça aidera d'autres personnes. |
http://php-dream.com/fre/portions/portion3ca5.html?id=53
|