Page 1 sur 2
Créer un site multi-langage
Posté : 09 juin 2014, 15:09
par foufouner
Bonjour
Je me lance aujourd'hui dans la création d'un système multi-langage pour mon site.
Pour cela j'ai donc créé mes deux fichiers langages puis créé mon switch que voici ci-dessous :
<?php
if($_GET['lang']=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
$_SESSION['lang'] = $_GET['lang'];
include('french.php');
$langage=$_SESSION['lang'];
}
elseif ($_GET['lang']=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
$_SESSION['lang'] = $_GET['lang'];
include('english.php');
$langage=$_SESSION['lang'];
}
else { // si aucune langue n'est déclarée on inclut le fichier fr-lang.php par défaut
$_SESSION['lang'] = 'fr';
include('french.php');
$langage=$_SESSION['lang'];
}
?>
Pour faire appelle au fichier j'ai crée ces simples liens
<p><a href="index.php?lang=en">English</a><a href="index.php?lang=fr">Français</a></p>
Quand je suis sur la page d'accueil et que je clic sur "english" la traduction ce fais bien mais si je clic sur un autre lien de mon site je repasse automatiquement en français alors que je devrais rester en anglais !
Comment remédier à ce problème ?
Merci
Re: Créer un site multi-langage
Posté : 09 juin 2014, 15:23
par moresk24
bonjour,
alors je me lance ds l'aide
ta variable $langage, elle te sert quand ?
ton premier code sert à sélectionner (modifier) la langue à utiliser.
mais ensuite il faut que la page que tu souhaites afficher aille chercher cette langue à utiliser
tu as ta variable de session ds laquelle tu stockes le langage qui doit etre utilisé
peut etre faut-il inclure le fichier de langage en fonction de cette variable de session
et nommer les fichier de langage différement pour te faciliter la chose
fr.php
en.php
et ensuite appeler en début de page à afficher la langue à utiliser :
du genre :
$langage = $_SESSION['lang']; // appel de la variable de session contenant le langage
include($langage'.php'); // include du fichier php correspondant
penser aussi au session_start(); en début de page si veux récupérer des variables de sessions
et prévoir de pouvoir enregistrer quelque part (cookies ou bbd) le choix de langage du membre
Re: Créer un site multi-langage
Posté : 09 juin 2014, 15:28
par foufouner
bonjour,
ta variable $langage, elle te sert quand ?
A vrai dire j'ai fais bêtement un copié/collé d'un code que j'ai trouvé et adapté

Re: Créer un site multi-langage
Posté : 09 juin 2014, 17:14
par Elie
Je pense aussi tout simplement que c'est la fonction session_start(); qui n'est pas en haut de toute tes pages.
Tu peux simplifier en faisant :
Voila comment je fais :
// Langue
$aLangue = array('fr' => 'Français', 'en' => 'Anglais');
// On défini la langue si elle n'est pas déjà défini
if(empty($_GET['lang'])) {
$l = $_SESSION['lang'] = (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'fr') ? 'fr' : 'en';
}
$l = !empty($_SESSION['lang']) ? $_SESSION['lang'] : 'fr';
$l = !empty($_GET['lang']) ? $_GET['lang'] : $l; // Si la langue est dans l'url on la fait passer en priorité
Re: Créer un site multi-langage
Posté : 09 juin 2014, 17:19
par foufouner
Je pense aussi tout simplement que c'est la fonction session_start(); qui n'est pas en haut de toute tes pages.
Tu peux simplifier en faisant :
Voila comment je fais :
// Langue
$aLangue = array('fr' => 'Français', 'en' => 'Anglais');
// On défini la langue si elle n'est pas déjà défini
if(empty($_GET['lang'])) {
$l = $_SESSION['lang'] = (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'fr') ? 'fr' : 'en';
}
$l = !empty($_SESSION['lang']) ? $_SESSION['lang'] : 'fr';
$l = !empty($_GET['lang']) ? $_GET['lang'] : $l; // Si la langue est dans l'url on la fait passer en priorité
Donc je met cette fonction dans toutes mes page php?
Re: Créer un site multi-langage
Posté : 09 juin 2014, 17:29
par Elie
Plutot dnas un fichier php a part que tu appelles sur toutes les debut de page !
<?php
session_start();
include('fonctions.php');
?>
Et dans ce fonction.php par exemple, tu peux appeller tes fichiers langues ..
Re: Créer un site multi-langage
Posté : 09 juin 2014, 17:30
par foufouner
Je viens de verifier et j'ai bien
session_start();
dans toutes mes pages.Justement session_start(); est dans un fichier all_functions.php
Re: Créer un site multi-langage
Posté : 09 juin 2014, 18:01
par foufouner
Est-ce que le positionnement des langage à une importance ? je m'explique : dans mon fichier all_function.php là où j'ai
require_once('language/decide-lang.php'); <-- fichier où j'ai ma fonction lang
require_once('language/english.php'); <-- fichier langage anglais
require_once('language/french.php'); <-- fichier langage français
Selon si je met le dossier english ou decide-lang ou french en 1er deuxième ou troisième position le comportement n'ai pas le même
Re: Créer un site multi-langage
Posté : 09 juin 2014, 23:44
par Elie
Pour moi c'est un soucis de session ...
Que ce passe-t-il quand tu fais print_r($_SESSION); apres session_start(); justement.
On va voir si la langue est stockée.
Re: Créer un site multi-langage
Posté : 10 juin 2014, 09:58
par foufouner
Pour moi c'est un soucis de session ...
Que ce passe-t-il quand tu fais print_r($_SESSION); apres session_start(); justement.
On va voir si la langue est stockée.
Voila ce que ca m'affiche
Array ( [nb_ann_selection] => 0 [recherches] => 1 [lang] => fr )
Et le
[lang] => change selon la page
Re: Créer un site multi-langage
Posté : 10 juin 2014, 10:02
par Elie
Donc non c'est pas les sessions. Trouve d'où vient le
Problème dans tes fichiers langues...
Re: Créer un site multi-langage
Posté : 10 juin 2014, 10:10
par foufouner
Trouve d'où vient le
Problème dans tes fichiers langues...
Comment ca ? Ce ne sont que de simple fichiers basés comme ceci :
<?php
$language = array(
'madefine' => 'Définition',
);
Re: Créer un site multi-langage
Posté : 10 juin 2014, 10:14
par Elie
Moi je charge tous les fichiers langues et je fais
$language['fr']['madefinition'] = 'Definitions';
Ça revient au même hein...
Fait print_r($language); voir si le tableau est bien chargé.
Re: Créer un site multi-langage
Posté : 10 juin 2014, 10:20
par foufouner
Moi je charge tous les fichiers langues et je fais
$language['fr']['madefinition'] = 'Definitions';
Ça revient au même hein...
Fait print_r($language); voir si le tableau est bien chargé.
Voila en fr ce qu'on vois et
anglais
Re: Créer un site multi-langage
Posté : 10 juin 2014, 10:23
par Elie
Bah si tout marche, qu'est-ce qui marche pas
Du coup ?
