Bonjour,
J'ai été voir ce qu'il en retourne des sessions (que je ne connais pas).
voici ce que j'ai compris.
Drapeau anglais de mon menu (fichier /themes/shipyard/header.php):
<li class="flag"><a href="http://localhost/site/en/software.php" title="Version anglaise"><img src="http://localhost/site/medias/files/flag_EN.png" alt="Anglais"></a></li>
Dans le fichier en/software.php, ça commence ainsi :
1 2 3 4 5
|
<?php
session_start();
$lang="en";
require "header.php"; ?> <!-- ouvrir header,php --> |
Dans le fichier en/header.php, j'ai mis une condition pour afficher le menu dans la bonne langue :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<?php if (isset($lang) && $lang=="en") { echo $lang;?>
<div id="cssmenu">
<ul>
<li><a href="../index.php" title="Home"><img src="../medias/files/header_menu_home_icon.png" alt="Home"></a></li>
<li><a href="../fr/about.php" title="About the site">About</a></li>
<li>...
</ul>
</div>
<?php } else { ?>
<div id="cssmenu">
<ul>
<li><a href="../index.php" title="Home"><img src="../medias/files/header_menu_home_icon.png" alt="Home"></a></li>
<li><a href="http://localhost/site/fr/about.php" title="À propos du site">À propos</a></li>
<li>...
</ul>
</div> |
(oui, c'est normal que les 2 lignes soient identiques. C'est à partir de là que j'aimerais que la variable $lang se propage...)
A l'exécution, quand je clique donc sur le drapeau anglais, ça marche bien : je me retrouve bien sur la page en/software.php avec le menu en anglais.
Je continue. Imaginons que je clique alors sur Home.
Le fichier ../index.php appelle le /themes/shipyard/header.php dans lequel j'ai mis aussi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<?php if (isset($lang) && $lang=="en") { echo $lang;?>
<div id="cssmenu">
<ul>
<li><a href="../index.php" title="Home"><img src="../medias/files/header_menu_home_icon.png" alt="Home"></a></li>
<li><a href="../fr/about.php" title="About the site">About</a></li>
<li>...
</ul>
</div>
<?php } else { ?>
<div id="cssmenu">
<ul>
<li><a href="../index.php" title="Home"><img src="../medias/files/header_menu_home_icon.png" alt="Home"></a></li>
<li><a href="http://localhost/site/fr/about.php" title="À propos du site">À propos</a></li>
<li>...
</ul>
</div> |
Lors de ce "2ème passage", il s'avère que j'ai perdu la valeur $lang="en" (ou la variable a été supprimée, je ne sais pas) du coup c'est le else qui s'exécute et je me retrouve avec un menu en français.
Pouvez-vous me dire où je me suis trompé ?
La complexité (relative) de mon site vient que le home est en fait un blog wordpress dont les templates header.php sont forcément spécifique à cet outil tandis que les autres pages de mon site (par exemple la page about.php) sont classiques et s'appuient donc sur d'autres templates. Si je n'avais pas le blog, ce serait facile de classer mes pages en dans un répertoire en/ et mes pages fr dans un répertoire fr/. Mais avec la coexistence du blog wordpress, c'est plus compliqué.
Partager