Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2006, 12h51   #1
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut Méthode pour inclure une langue

Bonjour,

J'aimerais avoir comment on fais pour que quand on clique sur un drapeaux d'une lange le site change la langue sans devoir reécrire tous un site...
  Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 12h52   #2
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
tu as pas le choix, ca marche pas par magie

le truc serait de mettre les textes de ton site en base de donnée, et de les charger selon la langue choisie
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 13h05   #3
Membre éprouvé
 
Avatar de gofono_bass
 
Inscription : décembre 2005
Messages : 385
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : décembre 2005
Messages : 385
Points : 409
Points : 409
mmouais .. t'as du boulot devant toi encore pour faire ça!

regarde, comme le suggere Sion_Sempai, la lecture de fichiers, et les sessions aussi pour pouvoir garder la langue pendant toute la durée de la visite du site.
__________________
mais pourquoi tu cours?
gofono_bass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 13h07   #4
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Dans la métode du site open-realty, il y a des repèrtoir en, fr, etc

voici un extrais de fichier lang.inc.php

//FRENCH LANGUAGE FILES
//error_reporting(E_ALL);
error_reporting(E_ALL& ~E_NOTICE);
global $lang;
$lang = array();

//This needs to match the listing type that you are using as Rental
$lang['access_denied'] = "Accès refusé";
$lang['action'] = "Action";
$lang['active_listings'] = "Annonces Actives:";
$lang['add_favorites_link'] = "Ajouter aux Favoris";
$lang['add_field'] = 'Ajouter un Champ';
$lang['add_linefeeds'] = "'Retours à la Ligne:";
$lang['add_linefeeds_desc'] = "Permet les retours à la ligne?";
$lang['add_to_favorites'] = "Ajouter à ma Sélection";
$lang['addons'] = "Addons";

J'aimerias parire sur cette idée la...

Mai je trouve pas comment il fond sa....
  Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 13h22   #5
Membre éprouvé
 
Avatar de gofono_bass
 
Inscription : décembre 2005
Messages : 385
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : décembre 2005
Messages : 385
Points : 409
Points : 409
Tu fais un fichier tel que celui la pour chaque langue.

Ensuite, tu stocke dans une variable de session la langue choisie, puis

Code :
include_once("include/language/".$_SESSION['lang'].".php");
en supposant que tya variable de session portant sur la langue contient une chaine égale au nom du fichier de langue (ce sera plus facile ainsi).

Et au lieu de faire des echos de textes genre "Accès refusé", tu fais

Code :
echo $lang['access_denied'] ;
enfin, un exemple parmi les nombreuses possibités qui doivent exister...

et a éventuellement corriger un peu..
__________________
mais pourquoi tu cours?
gofono_bass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 13h31   #6
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
ouawww, et je fais comment pour stoker la langue dans une variable avec un lien ?

Exemple, j'ai un site avec plusieur drapeau de lange et que quand je clique sur un drapeaux sa change.
  Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 13h41   #7
Membre éprouvé
 
Avatar de gofono_bass
 
Inscription : décembre 2005
Messages : 385
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : décembre 2005
Messages : 385
Points : 409
Points : 409
disons que tes drapeaux sont sur la page index.php. Les images auront alors comme lien :
Code :
1
2
<a href="index.php?lang=fr"> // pour le français
<a href="index.php?lang=eng"> // pour l'anglais
et donc, tes fichiers de langue auront pour nom fr.php et eng.php, et en suivant mon exemple de tout a l'heure, seront dans les repertoires include/language.

et dans ton code tu mets :
Code :
1
2
$_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr"; // pour le français par défaut
$lang=$_SESSION['lang'];// a mettre partout
à vérifier: peut-etre pas besoin de session si dans ton fichier de langue $lang est une variable globale??? (j'ai trop l'impression de dire une betise la!!!)
__________________
mais pourquoi tu cours?
gofono_bass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 13h46   #8
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
un tres tres grand merci, je vais testé sa ce soir...
  Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 14h16   #9
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
Citation:
Envoyé par gofono_bass
mmouais .. t'as du boulot devant toi encore pour faire ça!

regarde, comme le suggere Sion_Sempai, la lecture de fichiers, et les sessions aussi pour pouvoir garder la langue pendant toute la durée de la visite du site.
en fait il est vrai qu'il n'y a pas besoin de tout stocker en base de donnée
Je parlais de cette solution parce qu'en fait la seule fois où j'ai eu a faire a un cas de site multilangue, c'etait un site que l'utilisateur pouvais modifier a souhait, donc forcement

Si tu es seul maître du texte de ton site, pas besoin de se casser la tete avec la base de donnée ^^
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 18h00   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Le problème de la solution qui utilise une BDD, c'est que cela oblige à adopter un schéma de BDD un peu foireux.
L'avantage des fichiers est leur rapidité de lecture et la simplicité d'utilisation.

Bonne chance !
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2006, 08h30   #11
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
J'ai testé, et ben la faute a pas de bol sa fonctionne pas

ce que j'ai dans mon index.php

<body>
<a href="index.php?lang=fr"><img src="Belgique.jpg" width="49" height="32" border="0" alt=""></a>
<a href="index.php?lang=en"><img src="en.png" width="49" height="32" border="0" alt=""></a>
<?php
include_once("$lang".$_SESSION['lang'].".php");
$_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr";
$lang=$_SESSION['lang'];
echo $lang['access_denied'];
?>
</body>

et dans le fichier fr par exemple

error_reporting(E_ALL& ~E_NOTICE);
global $lang;
$lang = array();

//This needs to match the listing type that you are using as Rental
$lang['access_denied'] = "Accès refusé";

et a l'écrand, j'ai le contenu de fichier fr.php plus la fremière lètre (f) qui ce trouve dans la ligne <a href="index.php?lang=fr">, si je clique sur en, j'ai comme ltre e a la place du f.

  Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2006, 15h20   #12
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Y a personne pour une tit solution pour moi
  Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2006, 15h49   #13
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Tu as inversé ces deux lignes :
Code :
1
2
include_once("$lang".$_SESSION['lang'].".php");
$_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr";
Je te recommande vivement de tester la présence de $_GET['lang'] dans une liste blanche, sur ce principe :
Code :
1
2
3
4
5
6
7
8
$langues = array('fr', 'en', 'de');
if(!empty($_SESSION['lang']) and in_array($langues, $_SESSION['lang'])){
   $_SESSION['lang'] = $_GET['lang'];
}
else{
   $_SESSION['lang'] = 'fr';
}
include_once('lang/'.$_SESSION['lang'].'.php');
Fais attention à ta variable $lang : tu sembles l'utiliser pour 3 choses différentes !

De plus, avec cette ligne, tu annules l'effet de l'include() précédent :
Code :
$lang=$_SESSION['lang'];
Je te recommande de ne pas la mettre du tout.


Essaie de prendre du recul par rapport à ce que nous te proposons car nous ne te donnerons pas de solutions toutes faites, plutôt des pistes pour t'orienter dans la bonne direction.
En l'occurence, ta variable $lang est systématiquement mal utilisée. Essaie de réfléchir à son utilisation et à ne l'utiliser qu'après l'avoir initialisée.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2006, 23h14   #14
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Cette méthode des variables est excellente pour une application, c'est à dire pour des messages courts et peu nombreux.
Si ton site est un site de contenus, avec des articles, textes..., je pense à 2 autres solutions :
1) les textes stockés en bdd
2) une page différente par langue.
Pour choisir la langue, tout a été dit plus haut.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2006, 09h22   #15
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Sa fonctionne nikel, merci pour cette aide...
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Enlever Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h58.


 
 
 
 
Partenaires

Hébergement Web