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 :

[Tableaux] Site multilingue


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut [Tableaux] Site multilingue
    Il y a déjà eu quelques articles à ce sujet, mais je n'ai pas vraiment trouvé la réponse à mes questions, dans le cadre d'un site multilingue :
    Est-il préférable de
    • faire des include de pages abc_fr ou abc_en , appelées en fonction de la langue choisie, qui contiennent le texte sous forme de constantes
    • OU utiliser une base de données avec des champs pour chaque langue
    Et vaut-il mieux, dans un cas ou dans l'autre,
    • OU avoir de nombreuses constantes/variables ne contenant que le texte qui change, appelé par exemple comme suit
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      echo '<p><a href="page1"><img src="image" alt="blabla">' .$lien .'</a>' .$voila .'</p>';
      $lien et $voila sont issus de l'include / la bdd
    Si quelqu'un avait un retour d'expérience à ce sujet, merci de me le faire partager

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Je ne sais pas pour le web,
    mais je l'ai fait trilingue pour un logiciel et je trouvais ca chiant mais bon chaque mots était dans la bd..et par rapport à la langue sélectionné au début on chargait les termes a partir de cette bd..

    Avantage c'est que tu peux r'ajouter une langue quand meme assez facilement seulement qu'en inscrivant l'équivalent dans la table
    Sinon c'est long
    Bonne chance!

  3. #3
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Moi, j'ai fait l'expérience de la base de donnée et je me suis ensuite tourné vers getText (http://fr2.php.net/manual/fr/ref.gettext.php), et le confort d'utilisation est beaucoup plus flagrant que dans les bdd.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    j'ai parcouru en vitesse la doc de gettext, et si j'ai bien compris, il faut créer une sorte de base avec les différentes traductions et utiliser la fonction gettext(texte à traduire) dans les pages html. Ai-je bien compris ?
    Et si oui, est-ce vraiment plus facile et plus rapide que la bdd mysql ?

  5. #5
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    En fait tu fait un fichier machinchose.po avec par exemple dedans ce genre de chose:

    msgid "Bonjour le monde !"
    msgstr "Hello World !"

    msgid "Oui, bien sur"
    msgstr "Yes of course."

    Ensuite dans tes pages, si tu fait echo gettext('Bonjour le monde'), ca te traduit direct.

    En fait, ça à pas mal d'avantage de lisibilité je trouve parce que dans ton code, tu retrouve ton texte original.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><?= _("Bonjour le monde"); ?></p>
    est plus lisible que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><?= $Variable_Accueil; ?></p>

    Dans mon exemple j'ai utilisé _() qui est un alias de gettext.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    oui c'est plus lisible...

    aussi rapide ?

    et facile à installer chez mon hébergeur ?

  7. #7
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Citation Envoyé par francis m
    aussi rapide ?
    Oui même plus rapide d'après mes tests.

    Citation Envoyé par francis m
    et facile à installer chez mon hébergeur ?
    aie, pas sur que ton hebergeur l'ai activé, vérifie avec phpinfo()...

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    ok j'ai vérifié sur phpinfo : apparemment le gettext est activé

    autre question sur gettext :oui c'est plus lisible...

    et facile pour le multilingue ou confiné à une langue ? tu diras qu'on peut toujours appeler plusieurs machinchose.po, mais cela oblige à tout garder en double et de créer les msgid dans chacun des fichiers, avec risque d'erreur. A moins qu'on peux faire un truc du genre msgid "bonjour" msgstren "hello" msgstrnl "dag" etc. Tu me répondras peut-être que je n'ai qu'à lire la doc...

  9. #9
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    En fait c'est exactement ça, les fichiers de langues sont séparés ce qui permet de travailler sur des fichiers de langues séparément.

    Enfin il y a des outils super évolués qui vont t'aider.
    Imagine que tu as plein de page sur ton site qui contiennent des echo gettext('xxxxxx');

    Tu as des outils qui te permettent de parser tous tes fichiers à la recherche de tous les mot à traduire et ça te créer un fichier po vide pret à traduire !
    En gros, ça te créer ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    msgid "Bonjour le monde !"
    msgstr ""
     
    msgid "Oui, bien sur"
    msgstr ""
    Et au niveau de tes php, tu as juste à ecrire une ligne pour lui dire qu'elle langue il doit utiliser.
    Mais pour de plus amples détails, je te conseil, comme tu l'a trs bien suggéré de te reporté à la doc !

    Bon courage!

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    naturellement, ce n'est sans doute pas le bon forum pour en débattre, mais je ne trouve pas cela si génial : cela veut dire que dans une page évolutive, chaque fois que tu rajoutes ou modifies un texte, tu dois bien modifier autant de fichiers po que de langues... (bon, je n'en ai pas cinquante, mais c'est le principe). Et si tu modifies une virgule, c'est mort.

    Bien sûr, une solution serait d'avoir un fichier po français avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgid "bjr"
    msgstr "bonjour comment allez-vous ?"
    et un anglais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgid "bjr"
    msgstr "hello, how are you today ?"
    ainsi le jour ou je change le français par bonjour comment ça va je ne perds pas la traduction anglaise. Mais cela commence à se rapprocher d'une variable $bjr dans une bdd ...

    Je achtement hésite...
    Un grand merci quand-même, je ne connaissais pas du tout le gettext et cela vaut quand-même la peine que j'y réfléchisse. Si tu as encore quelques arguments...

  11. #11
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Oui en effet la solution est d'avoir un po en francais.

    Parce que ça arrive souvent des petites modifs pour les fautes d'orthographes ou des trucs comme ça.

    Un autre argument ?

    Il existe aussi un outil qui remouline tous tes fichiers et qui te sort un nouveau fichier po mais contenant déjà les traductions que tu avait déjà faites sur les anciens po.

    Un autre outil te sort aussi les traductions qui n'existe plus.

    Il peux également te sortir seulement les nouvelles traductions, ce qui simplifie largement l'utilisation des traducteurs. En fait l'outils te génére un fichier qui contient seulement les modifs depuis la derniere création.

    Et ensuite avec un autre outils tu peux faire un merge des deux fichiers (l'ancien et le nouveau).

    Bon je t'assure que n'ai pas de part chez gettext mais je m'y suis bien habitué et je ne peux plus m'en passer...

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    J'ai fait une recherche ici sur gettext et il y a un topic la-dessus http://www.developpez.net/forums/viewtopic.php?t=414427 mais sans réelle conclusion, surtout s'il y a plusieurs langues. Si quand-même, il faut un bon serveur si tout est dans une bdd...

  13. #13
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Tout ce que je peux te dire de plus c'est que moi je l'utilise pour un projet sur 5 langues et que je n'ai pas eu de soucis...

    Maintenant, a toi de choisir !

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    alors dans ton projet de cinq langues, tu as bien 4 fichiers po, avec à chaque fois des trucs de ce genre :

  15. #15
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    J'ai la seconde solution mais plutot comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgid "bonjour kommen tallé-vous ? se site a comme but d'être un bon site super hyper intéressant"
    msgstr "bonjour comment allez-vous ? ce site a comme but d'être un bon site super hyper intéressant"
    Parce que je fait souvent des fautes et je m'en apercois trop tard ;-)

    Mais sur les 99% de mes traductions, mon fichier po en francais à les lignes chaines msgstr vide parce que je ne fais pas tant de fautes que ça. Quand c'est vide il marque le msgid.

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    ok
    oui la seconde solution me paraît également la meilleure dans le principe ...

    merci beaucoup

+ 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, 18h18
  2. Réponses: 18
    Dernier message: 27/08/2007, 17h11
  3. [Cookies] problème avec site multilingue
    Par lacfab dans le forum Langage
    Réponses: 13
    Dernier message: 31/12/2005, 00h10
  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, 15h40
  5. [C#] Mise en place d'un site multilingue
    Par regbegpower dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/03/2004, 20h15

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