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

Langage PHP Discussion :

Site web multi langues


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut Site web multi langues
    En cherchant un peu j'ai trouvé plusieurs solutions pour faire un site multi langues.
    Certains préconisent l'emploi de fichiers php pour chaque langue dans lequel on on définit des constantes pour les zones de texte.
    D'autres préconisent de faire ça avec une base de donnée. Comment mettre en oeuvre ce dernier point? Il faudrait une table "phrase" dans laquelle on stocke le texte en différente langues?

    Merci de m'éclairer sur ce point.

  2. #2
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Bonjour,
    Ce que je ferais (mais cela n'engage que moi) : créer une table pour chaque langue utilisée, par exemple interface_fr, interface_en etc...
    Comme ça, il suffit de faire une seule requête pour l'interface, et la langue peut changer dynamiquement.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $query = mysql_query("SELECT * FROM interface_".$_SESSION['langage']);
    //  ou utilisation de cookies 
    //etc...
    ?>

    Mais chacun aura sa vision.
    C'est ensuite assez facile à maintenir via une interface d'administration.
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  3. #3
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    Par défaut
    Pour avoir un peu d'experience pro dans ce domaine au niveau e-commerce nous gerons un site multilangues de la facon suivante :

    Tout le texte "statique" est dans des fichiers, exemple : accueil, panier, se connecter, les cgv...

    Ensuite, tout le texte d'article, ou ayant du html dans le texte est sotcke en base de données avec une table par pays/langue avec une structure identique.

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par pimpmyride Voir le message
    Ensuite, tout le texte d'article, ou ayant du html dans le texte est sotcke en base de données avec une table par pays/langue avec une structure identique.
    Ca veut dire que pour n'importe quelle table je dois crée la même en toutes les langues dont j'ai envie?

    merci

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Oui, je pense aussi que c'est préférable (a partir du moment ou tu as besoin de la traduction bien sûr).

    Lorsque je débutais, j'avais rajouté des champs pour chaque langue au sein de la meme table mais niveau maintenance, j'ai un peu galéré par la suite avec ce projet (a chaque fois qu'on rajoutait, supprimait une langue, c'etait pas évident de se rappeller des champs multilangues existants et ma documentation laissait à désirer).

    Donc oui, une partie statique en fichier et le dynamique dans des tables dédiées pour chaque langue me semble être une bonne solution.

  6. #6
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Oui, c'est ça

    Sur mon site, je fais exactement la même chose que Pimpmyride et je trouve que c'est très performant (il n'y a que 3 langues, c'est tout de même facile à gérer)

    Pour ma part, je déconseillerais tout de même la solution de la base de donnée seule (interface + contenu) car cela devient vite lourd pour le serveur.
    Je t'ai donné cette solution car j'avais cru comprendre que c'était ce que tu voulais.

    Ce thread te donnera d'autres points de vue.

    Bon développement
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  7. #7
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Mais avec la solution de dupliquer les tables dans lequel je dois traduire des choses je multiplie la taille de la base de données, de plus comment maintenir cela ? Car si je fais une insertion par exemple je devrai systématiquement la faire 3 fois alors (pour un site avec 3 langues)... ?

    Ne puis-ja pas rajouter dans ma bdd une table "Langue" qui stocke les identifiants d'une langue puis à côté une table "se traduit" qui contient 2 clés externes: l'identifiant de la langue et l'identifiant de la table avec le champ à traduire. En plus de cela on aurait alors la traduction dans la table "se traduit".

    Est - ce judicieux? Suis - je clair?

    merci

  8. #8
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Je ne pense pas que cela soit difficile à maintenir d'avoir une table pour chaque langue.

    Code xhtml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="fr">Français</label><textarea id="fr" name="fr" cols="50" rows="10"></textarea>
    <label for="en">Anglais</label><textarea id="en" name="en" cols="50" rows="10"></textarea>
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if(trim($_POST['fr']) != ''){
      mysql_query("INSERT INTO ....blablabla");
    }
    // et ainsi de suite.
    ?>
    C'est sur-simplifié, bien sûr... je ne teste rien ici...
    Tu peux bien entendu automatiser grâce à une table "langues" tout cela pour ne pas avoir à te taper le code à chaque fois.
    C'est idem pour un update... (le mieux étant de combiner l'ensemble)

    Le seul inconvénient en effet est que tu dois traduire la totalité du contenu de chaque table (à moins que tu ne fasses un message du genre "Cette page n'est pas visible dans votre langue)...
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  9. #9
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    Par défaut
    la solution d'avoir une table par pays/langue te permet de ne pas forcement afficher les memes texte dans toutes les langues.

    Tu peux avoir une page lien en francais qui n'existe pas en anglais. Ainsi, la structure des tables restent identiques mais en plus, ca t'evite d'avoir des enregistrements vides si tu mets tout ton texte dans une seule table.

    De plus, le SELECT en bdd est beacoup plus rapide et crois moi quand tu commences a avoir pas mal de texte tu gagnes en temps processeur, ce qui n'est pas négligable

Discussions similaires

  1. [Débutant] Site Web multi framework .net et asp
    Par patbonf dans le forum Visual Studio
    Réponses: 0
    Dernier message: 15/06/2015, 09h20
  2. Site SharePoint multi-langues ?
    Par nicolas.pied dans le forum SharePoint
    Réponses: 3
    Dernier message: 15/04/2009, 16h46
  3. Réponses: 12
    Dernier message: 04/11/2005, 16h28
  4. Architecture d'un site multi-langues
    Par seben dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 25/09/2005, 15h23

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