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...
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...
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
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....
Tu fais un fichier tel que celui la pour chaque langue.
Ensuite, tu stocke dans une variable de session la langue choisie, puis
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part include_once("include/language/".$_SESSION['lang'].".php");
Et au lieu de faire des echos de textes genre "Accès refusé", tu fais
enfin, un exemple parmi les nombreuses possibités qui doivent exister...
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $lang['access_denied'] ;
et a éventuellement corriger un peu..
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.
disons que tes drapeaux sont sur la page index.php. Les images auront alors comme lien :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <a href="index.php?lang=fr"> // pour le français <a href="index.php?lang=eng"> // pour l'anglais
et dans ton code tu mets :
à 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!!!)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr"; // pour le français par défaut $lang=$_SESSION['lang'];// a mettre partout
un tres tres grand merci, je vais testé sa ce soir...
en fait il est vrai qu'il n'y a pas besoin de tout stocker en base de donnéeEnvoyé par gofono_bass
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 ^^
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 - Cours et tutoriels pour apprendre PHP - Forum PHP
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.
Y a personne pour une tit solution pour moi
Salut
Tu as inversé ces deux lignes :
Je te recommande vivement de tester la présence de $_GET['lang'] dans une liste blanche, sur ce principe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 include_once("$lang".$_SESSION['lang'].".php"); $_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr";
Fais attention à ta variable $lang : tu sembles l'utiliser pour 3 choses différentes !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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');
De plus, avec cette ligne, tu annules l'effet de l'include() précédent :
Je te recommande de ne pas la mettre du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $lang=$_SESSION['lang'];
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 - Cours et tutoriels pour apprendre PHP - Forum PHP
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.
Sa fonctionne nikel, merci pour cette aide...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager