Changer de langue

Changer de langue - PHP - Programmation

Marsh Posté le 09-09-2003 à 18:45:08    

Salut,
 
Je viens de faire un systeme de formulaire,il fonctionne tres bien mais j'aimerais y ajouter un changement de langage.
Je m'explique :  
L'utilisateur se connecte et peut choisir la langue du formulaire,j'aimerais faire Francais, anglais ,russe et espagnole.
Mais je ne sais pas comment réalisé le systeme de changement.
Avez vous une solution ?

Reply

Marsh Posté le 09-09-2003 à 18:45:08   

Reply

Marsh Posté le 09-09-2003 à 18:45:59    

Reply

Marsh Posté le 09-09-2003 à 18:50:44    

Merci beaucoup hermes

Reply

Marsh Posté le 09-09-2003 à 20:08:59    

J'ai trouvé une technique qui me parait pas mauvaise.
J'inclus un require()
l'utilisateur clique sur le language voulut et le require charge le fichier qui contiendras les variables.
Probleme !! Quand je met : require($language) sachant que langages correspond a : anglais.php , francais.php etc... il m'affiche une erreur car il ne trouve pas de fichier meme en definissans la variables $language sur francais.php, peut etre que l'ont ne peut pas mettre de variables dans un require ?
 
Merci pour vos soluces

Reply

Marsh Posté le 09-09-2003 à 21:32:05    

Kristo_G a écrit :

J'ai trouvé une technique qui me parait pas mauvaise.
J'inclus un require()
l'utilisateur clique sur le language voulut et le require charge le fichier qui contiendras les variables.
Probleme !! Quand je met : require($language) sachant que langages correspond a : anglais.php , francais.php etc... il m'affiche une erreur car il ne trouve pas de fichier meme en definissans la variables $language sur francais.php, peut etre que l'ont ne peut pas mettre de variables dans un require ?
 
Merci pour vos soluces  

encore faut il que le fichier francais.php existe.
Mais c'est jamais une bonne idée de mettre le nom du fichier dans la variable renvoyé par une personne, il faut mieux prendre un identtifiant de langue dans la variable renvoyé par le navigateur et choisir le bon fichier grâce à cet identifiant.
Sinon, on risque d('avoir des erreurs d'inclusions de fichier.
En dehors de ça;, on peut faire un reequire a partir d'une variable (enfin, il me semble, moi, j'utilises un include_once )


Message édité par omega2 le 09-09-2003 à 21:32:20
Reply

Marsh Posté le 09-09-2003 à 23:47:40    

J'ai fait comme ça moi :
 

Code :
  1. <?
  2. //session_start(); (déjà inclus)
  3. if (!isset($l))       // si pas de langue passée
  4. {
  5. if (!isset($_SESSION["lang"]))
  6.  $_SESSION["lang"] = "fr" ;  // langue par défaut
  7. }
  8. else
  9. $_SESSION["lang"] = $l ;
  10. if ($rep == "../" )      // zone admin : français
  11. {
  12. $_SESSION["lang"] = "fr" ;
  13. require_once ($rep."inc/francais.php" ) ;
  14. return ;
  15. }
  16. switch($_SESSION["lang"])
  17. {
  18. case "fr" :
  19. $_SESSION["lang"] = "fr";
  20. require_once ($rep."inc/francais.php" ) ;
  21. break ;
  22. case "de" :
  23. $_SESSION["lang"] = "de";
  24. require_once ($rep."inc/deutsch.php" ) ;
  25. break ;
  26. case "en" :
  27. $_SESSION["lang"] = "en";
  28. require_once ($rep."inc/english.php" ) ;
  29. break ;
  30. default :
  31. $_SESSION["lang"] = "fr";
  32. require_once ($rep."inc/francais.php" ) ;
  33. }
  34. ?>


 
j'inclus ce fichier à mes page.
 
mes fichier français.php sont comme ceci :
 

Code :
  1. <?
  2. // inc/deutsch.php
  3. // menu
  4. DEFINE('MENU_ACCUEIL',"Startseite", true) ;
  5. DEFINE('MENU_RECHERCHE',"Suche", true) ;
  6. DEFINE('MENU_PARTENAIRES',"Partner", true) ;
  7. DEFINE('MENU_LIENS',"Links", true) ;
  8. ...
  9. ?>


 
Et enfin, dans le site je récupère la bonne valeur avec
 

Code :
  1. <? echo ACCUEIL_BIENVENUE ?>


 
La valeur constante est alors remplacé par son équivalent


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-09-2003 à 11:49:15    

Citation :

<?
  //session_start(); (déjà inclus)
  if (!isset($l))       // si pas de langue passée
   {
     if (!isset($_SESSION["lang"]))  
        $_SESSION["lang"] = "fr" ;  // langue par défaut
   }
  else
     $_SESSION["lang"] = $l ;    
     
  if ($rep == "../" )      // zone admin : français
   {
     $_SESSION["lang"] = "fr" ;
     require_once ($rep."inc/francais.php" ) ;
     return ;
   }


J'ai un petit probleme pour comprendre cela  :??:  
Avec quoi et comment je peux faire choisir la langue.
un gars qui clique sur un drapeaux anglais par exemple je fais comment pour que cela choisissent la case eng ?
 
Désoler je connais quelque truc mais je suis assez nouveaux encore.

Reply

Marsh Posté le 10-09-2003 à 12:01:51    

Kristo_G a écrit :

Citation :

<?
  //session_start(); (déjà inclus)
  if (!isset($l))       // si pas de langue passée
   {
     if (!isset($_SESSION["lang"]))  
        $_SESSION["lang"] = "fr" ;  // langue par défaut
   }
  else
     $_SESSION["lang"] = $l ;    
     
  if ($rep == "../" )      // zone admin : français
   {
     $_SESSION["lang"] = "fr" ;
     require_once ($rep."inc/francais.php" ) ;
     return ;
   }


J'ai un petit probleme pour comprendre cela  :??:  
Avec quoi et comment je peux faire choisir la langue.
un gars qui clique sur un drapeaux anglais par exemple je fais comment pour que cela choisissent la case eng ?
 
Désoler je connais quelque truc mais je suis assez nouveaux encore.


 
N'utilises pas les sessions, mais plutôt les variables par l'URL.
 
Dans ta page index.php, tu as des liens sur tes drapeaux par exemple comme ceci : index.php?lang=fr
 
Tu testes toujours dans cette même page si $_GET['lang'] == "fr". Si oui, cela signifie que le français est sélectionné.
 
Tu comprends le principe ?
 
Si tu ne comprends pas ça, tu dois dans un premier temps faire les tutos de phpdebutant.org (très bien foutus) et ensuite tu reviens nous voir si tu n'as pas bien compris tel ou tel point. ;)

Reply

Marsh Posté le 10-09-2003 à 12:08:43    

Oui ca j'ai bien compris, du coup en cliquant sur le drapeaux fr je fais une sorte de refresh de la page et la ma fonction teste la variable qui doit me retourner la langue selectionné dans ce cas fr.php est qui donc va charger le fichier requis.
Ais je tous compris ? :)
 
Mais laquelle de ces deux facons de travailler est la plus interressante et de preference pourquoi ?
 

Reply

Marsh Posté le 10-09-2003 à 12:59:09    

Citation :

Voici mon code :
 
require("fr.php" );
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";


Voila avec ca les variables ce chargent.
Moi j'aimerais que si l'utilisateur clique sur l'anglais le require change comme cela :  
 
require("eng.php" );
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";
 
 
mais impossible d'inserer une variable a la place du fr.php ou eng.php (  require($lalangue.php)  ) .
Je suis sur que c'est super simple en plus mais moi trouve pas de solutions simple et je lutte avec les votre  :(

Reply

Marsh Posté le 10-09-2003 à 12:59:09   

Reply

Marsh Posté le 10-09-2003 à 13:24:15    

Kristo_G a écrit :

Citation :

Voici mon code :
 
require("fr.php" );
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";


Voila avec ca les variables ce chargent.
Moi j'aimerais que si l'utilisateur clique sur l'anglais le require change comme cela :  
 
require("eng.php" );
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";
 
 
mais impossible d'inserer une variable a la place du fr.php ou eng.php (  require($lalangue.php)  ) .
Je suis sur que c'est super simple en plus mais moi trouve pas de solutions simple et je lutte avec les votre  :(  

Si le require marche pas, essayes avec include ou include_once à la place.

Reply

Marsh Posté le 10-09-2003 à 13:30:02    

Citation :


echo '<a href="teste.php?lang=fr">Lien</a><br><br>';
 
if ($_GET['lang'] == "fr" )
{
require_once ("fr.php" );
}
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";


 
Voila ca avance j'ai deja ma solution pour le passage de variable par l'url. maintenans il me reste plus qu'a trouver un moyen pour avoir une langue par défaut.

Reply

Marsh Posté le 10-09-2003 à 13:54:40    

Kristo_G a écrit :

Citation :


echo '<a href="teste.php?lang=fr">Lien</a><br><br>';
 
if ($_GET['lang'] == "fr" )
{
require_once ("fr.php" );
}
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";


 
Voila ca avance j'ai deja ma solution pour le passage de variable par l'url. maintenans il me reste plus qu'a trouver un moyen pour avoir une langue par défaut.

Citation :


echo '<a href="teste.php?lang=fr">Lien</a><br><br>';
 
if ($_GET['lang'] == "fr" )
{
require_once ("fr.php" );
}else if ($_GET['lang'] == "it" )
{
require_once ("it.php" );
}
else{
require_once ("en.php" );
}
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";


Le if, else, c'est quand même une des bases du language, si t'en est pas arrivé là de ton manuel, alors va faire les tutoriels de phpdebutant .

Reply

Marsh Posté le 10-09-2003 à 13:58:51    

Citation :

<?
// Passer des parametres dans l'url
echo '<a href="teste.php?lang=en">Lien</a><br><br>';
//------------defaut----------------------
require_once("fr.php" );
//---------------controle de la variable-----------------
 
if ($_GET['lang'] == "en" )
{
require_once("en.php" );
}
//--------------Tableau-------------------
echo"<table width = 300>";
echo" <tr>";
echo"<td>$name</td>
     <td>$surname</td>";
echo"</tr>";
echo"</table>";
//-------------------fin------------------
 ?>


Voila je finis ce topic avec la solution de mon probleme car tous fonctionne j'espere que ce petit exemple tres basique qui peut etre largement améliorer serviras a d'autre.
Merci a ceux qui ont pris le temps de me mettre sur la voix.

Reply

Marsh Posté le 10-09-2003 à 14:25:15    

j'utilses des sessions pour éviter de devoir à chaque fois les passer dans l'url.  
 
Et n'utilise pas des varaibles comme $surname dans ton fichier. Car ce sont des constantes...  
 
utilise les defines comme dis plus haut...
 
il se passe quoi si tu appelles ton fichier avec page.php?surname=toto
 
??

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed