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

PHP & Base de données Discussion :

Un Site multilingue en MySQL ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut Un Site multilingue en MySQL ?
    Est-ce vraiment possible sans noyer le serveur de requête ?

    En effet j'aimerai développer un site multilingue qui prend en compte un grand nombre de langue. Ce site étant un site demandant une inscription et ne pouvant pas traduire tout les mots et textes du monde entier je me suis dit "Et bien je vais faire participer tout le monde a la traduction de mon site bon bref...." Vu que le contenu devrai être toujours croissant j'aimerai que l'appel aux différentes traductions et texte de mon site soit gérer dynamiquement dans une base de données. L'avantage à cela c'est que je peu ajouter des langues et des références de traduction pour chaque mot.

    J'explique donc ici la création et l'organisation de mes tables :

    Premièrement la création de la table contenant les référence de langue :

    ID LANGUE

    1 Anglais
    2 Français
    3 Allemand
    4 Russe
    5 chinois
    6 ......... J'arrête la


    Deuxième table : Celle ci contient les références de chaque mot à Traduire

    ID LABEL_REFERENCE

    1 Password
    2 Login
    3 Remember me

    Et enfin la 3éme table Celle ci regroupe la référence de la langue et la référence du mot à traduire

    REFERENCE_ID REFERENCE_LANGUE REFERENCE_LABEL REFERENCE
    1 1 1 Password
    1 2 1 Mot de passe
    1 3 1 Kennwort


    Et la je suis hyper content de moi je me dis c'est top comme solution je suis un dieu vivant juste a faire une interface après pour ajouter des mots.......

    Puis après c'est la déception la plus total je me rappel d'un coup que je ne suis pas si clever que ca :-( Alala
    Faut dire que le site multilingue font particulièrement ….hum hum …… tout les développeurs du monde.

    Quel est donc mon problème ? Et bien ma requête elle marche super elle réagi bien au changement de langue ca pas de problème mais le gros problème c'est qu'avec cette solution je tue un serveur assez vite si le site est bcp visité.

    Pourquoi et bien par ce que je dois effectuer ma requête pour chaque Mot à traduire sur ma page !!

    Donc 40 mots à traduire est égale à 40 Requête !!! A c'est beau ca marche bien quand on a fait ces 40 requêtes mais qu'est ce que ca peut être chiant a faire.

    Donc ma question a toutes les têtes de génie que vous êtes !!!!!
    Y'a t'il une solution pour récupéré toutes les références de mon mot dans une seul requête et je ne sais pas quel moyen !! Et de faire juste appel a la référence de chaque mot à traduire. Genre les sites qui utilise les fichiers de langue externe a la page (Mais je ne veux pas utiliser cette technique car elle est très peau pratique pour un site qui est amené à évoluer de jour en jour)

    Communauté je vous aime !!

  2. #2
    Membre expérimenté Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Par défaut
    Citation Envoyé par assamit666 Voir le message
    Donc ma question a toutes les têtes de génie que vous êtes !!!!!
    Communauté je vous aime !!
    Un peu de retenue !

    Pour commencer je te suggère de simplifier tes tables :

    Langue
    ID_LANGUE, LANGUE

    1 Anglais
    2, Français
    3, Allemand
    4, Russe
    5, chinois


    Mot
    ID_MOT, ID_LANGUE, LABEL

    1, 1, Password
    1, 2, Mot de passe
    2, 1, Identifiant
    2, 2, Login


    A prioris, tu avais une table inutile.

    Ensuite, pour récupérer un mot dans toutes les langues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $id_mot = '1';
     
    $q = "
    	SELECT 
    		mot.label, 
    		langue.langue 
    	FROM 
    		langue, 
    		mot 
    	WHERE 
    		langue.id_langue = mot.id_langue 
    		AND 
    		mot.id_mot = '$id_mot'";

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut
    Je suis toujours impressioné par toutes vos réponse si rapide c'est pour ca que je vous aime :-) ! Bon plus sérieusement je vai essayé .
    D'abord merci pour ta réponse
    Bon alors ta requête fontionne bien et tu a raison la table que j'ai evoqué ne sert a rien dans le contexte qui se présente ici donc je me tappe sur les doigts et L'ID de la table lable aussi ta raison on peut simplifié et la blancer celle-ci c'est déja assez compliqué comme ca.

    Bon alors tu m'évoque une belle requête SQL certe trés belle mais en quoi répond t'elle a ma question attention j'ai peu être rien compris ! Vu que ca reviens pareil a faire 40 requête si tu a 40 mot a traduire puisque qu'il faudra soumettre la variable de référence du mot pour afficher chaque correspondance d'un mot a traduire ?

    donc une requête pour chaque référence :
    $id_mot = '1';
    $id_mot = '2';
    $id_mot = '3';

    Y at'il pas une requête magique ? Qui appel toutes les références de toute les mot et de toutes les correspondance qui s execute une seul fois et que tu appel dans ta page (PHP car j'utilise cela)

    Et toi tu a un code magique qui te permet juste d afficher la référence que tu veu dans ta page

    MErkiiiiiiii


    Citation Envoyé par Mogwaï Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $id_mot = '1';
     
    $q = "
    	SELECT 
    		mot.label, 
    		langue.langue 
    	FROM 
    		langue, 
    		mot 
    	WHERE 
    		langue.id_langue=mot.id_langue 
    		AND 
    		mot.id_mot = '$id_mot'";

  4. #4
    Membre expérimenté Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Par défaut
    Concrètement tu veux faire quoi ?

    Afficher toutes les traductions dans une seule page ?
    Afficher les mots pas encore traduits dans un formulaire pour les traduire ?

    Essaies d'être clair et concis

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut
    Excuse moi si je ne suis pas clair en fait je crois qu'il n'y pas de solution :

    Nous avon une page web avec plusieurs mot et texte en français par exemple

    Genre juste un formulaire de connexion

    Donc qui regroupe les mots : "Mot de passe" et "nom d'utilisateur"

    Il est clair qu'avec ma méthode il n'a pas de solution il faut faire 2 requête n'est ce pas ?

    Une requête pour traduire "mot de passe" et une requête pour traduire "nom d'utilisateur"
    Vu que tu est obligé de définir a chaque requête la variable de ta référence.

    Non je voulais juste savoir si il avait une autre solution que de faire une requête pour chaque mot a traduire.
    N'étant pas le meilleur en la matière je voulai avoir l'avis de notre belle communauté de developpeur

  6. #6
    Membre expérimenté Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Par défaut
    Je comprends mieux.

    En fait tu as plusieurs traductions réparties dans ta pages et tu aimerais éviter de faire une requète pour chacune, et tu as bien raison !

    Une solution possible :
    Tu peux effectuer ta requète en haut de page, en ayant au préalable fait la liste des traductions dont tu vas avoir besoin plus loin dans la page.
    Exemple : tu as besoin de "login" (id_mot 1) et "mot de passe" (id_mot 2).

    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
    24
    25
    26
    27
    28
    <?php
    $id_langue = 1;
    $id_mots = array(1, 2); // Les mots dont le script à besoin
    $q = "
    	SELECT 
    		id_mot,		
    		label
    	FROM 
    		mot 
    	WHERE 
    		id_langue = '$id_langue' 
    		AND 
    		id_mot IN ('".implode("','", $id_mots)."')";
     
    $res = mysql_query($q);
    while($mot = mysql_fetch_object($res)) {
    	$mots[$mot->id_mot] = $mot->label;
    }
     
    ?>
    <html>
    ...
     
    <?php echo $mots[1]; /* Login */ ?>
    <?php echo $mots[2]; /* Mot de passe */ ?>
     
    ....
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Site multilingue - méthode ?
    Par khephren dans le forum Général Conception Web
    Réponses: 12
    Dernier message: 21/06/2016, 17h18
  2. Cherche Hébergement gratuit site web [PHP-MySQL]
    Par HULK dans le forum Gratuit
    Réponses: 15
    Dernier message: 20/01/2010, 22h53
  3. [Tableaux] Site multilingue
    Par francis m dans le forum Langage
    Réponses: 15
    Dernier message: 10/12/2005, 01h58
  4. Site multilingue : comment s'y prendre ?
    Par sg-40 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 26/04/2005, 14h40
  5. [C#] Mise en place d'un site multilingue
    Par regbegpower dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/03/2004, 19h15

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