IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

module en plusieurs langues


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Par défaut module en plusieurs langues
    bonjour à tous,

    Voila, j'ai un module de sondage en français en php/mysql et je souhaiterais le mettre en version EN puis voir d'autre après (DE, ES...).
    Mon probème, je ne sais pas comment 'y prendre.....d'ou j'aimerais obtenir votre aide sur ce sujet.

    Pour ma table mysql, dois-je en crée une nouvelle : ex: sondage_fr et sondage_en
    Dans mes fichiers, comment savoir quel langue utilisé alors j'imagine par une session lang et du navigateur....
    comment detecté quel table mysql il faut utilisé???

    si vous voyez des choses qui pourrais me gener, hesitez pas de les ajouter....
    merci de votre aide....
    sa!

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Je te renvoie vers cette discussion : http://www.developpez.net/forums/d36...p-multilingue/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Par défaut
    merci pour la réponse,
    mon problème de maintenant est tout autre.
    j'ai crée une une bdd qui ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    DROP TABLE IF EXISTS `sondage`; 
    CREATE TABLE IF NOT EXIST `sondage` (
     
      `id` smallint(6) NOT NULL auto_increment,
      `idlang` char(50) NOT NULL,
      `question` text NOT NULL,
      `proposition1` varchar(100) NOT NULL,
      `proposition2` varchar(100) NOT NULL,
      `proposition3` varchar(100) NOT NULL,
      `proposition4` varchar(100) NOT NULL,
      `proposition5` varchar(100) NOT NULL,
      `resultats1` smallint(6) NOT NULL,
      `resultats2` smallint(6) NOT NULL,
      `resultats3` smallint(6) NOT NULL,
      `resultats4` smallint(6) NOT NULL,
      `resultats5` smallint(6) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
    pour fr, ca me donne 1, pour en 2, pour de=3,etc....

    mon problème est pour la condition, pour recuperer la langue qui faut utiliser
    soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    if(isset($_GET['language'])) {$lang="fr";
    $nombreEntrees = mysql_query("SELECT MAX(id) AS nbre_entrees FROM sondage where idlang='1'") or die(mysql_error());
    $numeroDuSondage = mysql_fetch_assoc($nombreEntrees);}
     
    if(isset($_GET[['language'])){ $lang="en";
    $nombreEntrees = mysql_query("SELECT MAX(id) AS nbre_entrees FROM sondage where idlang='2'") or die(mysql_error());
    $numeroDuSondage = mysql_fetch_assoc($nombreEntrees);}
     
    if(isset($_GET[['language'])){ $lang="de";
    $nombreEntrees = mysql_query("SELECT MAX(id) AS nbre_entrees FROM sondage where idlang='3'") or die(mysql_error());
    $numeroDuSondage = mysql_fetch_assoc($nombreEntrees);}
     
    if(isset($_GET[['language'])){ $lang="es";
    $nombreEntrees = mysql_query("SELECT MAX(id) AS nbre_entrees FROM sondage where idlang='4'") or die(mysql_error());
    $numeroDuSondage = mysql_fetch_assoc($nombreEntrees);}
    cela ne marche pas mais je vois pas comment faire?
    help me please
    sam!

  4. #4
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    On va pas refaire le monde, mais tu aurais peut-etre du insérer dans la base de fr,en,es,de plutot que des 1,2 ou 3...

    Mais bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    //Si on demande une langue
    if(isset($_GET['language'])) {
       if ($_GET['language'] == 'fr') {
       $lang = 1;
       else if ($_GET['language'] == 'en') {
       $lang = 2;
       else if ($_GET['language'] == 'de') {
       $lang = 3;
       else if ($_GET['language'] == 'es') {
       $lang = 4;
       else {
       $lang = 1;
       }
    }
    //Si pas de langue envoyé, on prend la langue par défaut
    else {
    $lang = 1;
    }
     
    $nombreEntrees = mysql_query("SELECT MAX(id) AS nbre_entrees FROM sondage where idlang=".$lang) or die(mysql_error());
    $numeroDuSondage = mysql_fetch_assoc($nombreEntrees);}
    Si je n'ai pas fait de faute cela devrait rouler...

    @+
    cadou

  5. #5
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    salut
    j'apporte ma pierre a l'edifice...
    pour ma part, j'ai procede ainsi :
    une table 'translation' qui contient une colonne idpage et X colonnes (en fonction du nombre de langues que l'on souhaite) mais que j'ai appelle 'lang1', 'lang2', ect...
    une variable de session qui contien l'id de la page (par exemple $_SESSION["idpage"]), et une autre (par exemple $_SESSION["lang"]) qui contient l'id de la langue (1,2,ect..)

    j'ai fragmente l'id de la page ainsi => les 2 premiers chiffres pour l'id de la page, le reste pour l'id du text (qui correspond a la page)
    par exemple
    idpage | lang1 | lang2
    1001 | "mon texte en francais" | "my text in english"
    1115 | "du texte tout bete" | "some text"
    on peu ainsi recuperer les donnees qui nous interessent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result=mysql_query("SELECT lang".$_SESSION["lang"]." FROM translation WHERE idpage LIKE '".$_SESSION["idpage"]."%' ");
    puis, je mets les donnees dans un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for($i=1;$i<=mysql_num_rows($result);$i++)
    {
     $row=mysql_fetch_assoc($result);
     $TabText[$i]=$row[$_SESSION["lang"]];
    }
    puis, dans mon code, pour afficher le texte, il me suffit de faire
    point faible : il faut regarder dans la BDD pour afficher le bon X dans $TabText[X] (mais ca prends 5 secondes)
    point fort : 1 seule requete par page

    edit : pour la requete SQL pour l'exemple j'ai fais avec LIKE (je ne suis pas sur de la syntaxe)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Par défaut
    merci pour vos réponses,
    comment je pourrais forcer une langue en php? je souhaiterais par exemple de forcer la langue en EN sur le site FR.

    merci de vos aides toujours utile pour les novices....
    sam!

Discussions similaires

  1. Traduction en plusieurs langues d'une application
    Par Furlaz dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/06/2006, 10h07
  2. Gestion de plusieurs langues
    Par emardjean dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2006, 18h50
  3. Localisation (plusieurs langues)
    Par bath dans le forum MFC
    Réponses: 5
    Dernier message: 26/10/2005, 11h30
  4. données en plusieurs langues
    Par arezki76 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/10/2004, 12h59
  5. Comment gérer plusieurs langues ?
    Par InterSQL dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/02/2004, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo