Site Web Multi-langues, comment font-ils ?...

Fermé
NBO -  
 holblin -
Bonjour à tous,
Est-ce que quelqun pourrait m'expliquer comment faire pour développer un site multi-langues. Biensûr, pas uniquement le site disposant de page en anglais et en français, mais un site dynamique du style vacances.com, ou lorsque l'on clique sur la langue, cela nous donne l'impression que chaque mot est traduit.
Je pense que chaque phrase ou mot est enregistré dans une base de données, et suivant la langue selectionnée on affiche le mot correspondant.
Ex:

Table
--------------
house FR
maison AN

si langue = FR on affiche "house"

C'est ça ????? (ça parait assez lourd non ?)
Merci pour votre aide, vos astuces, exemples....
A+

19 réponses

  1. wAx Messages postés 1596 Date d'inscription   Statut Membre Dernière intervention   204
     
    Chez nous, c un peu différent.

    On a un fichier texte avec toutes les phrases présentes dans le site ou tous les mots

    Un mot ou phrase ou expression par ligne du fichier texte

    et on traduit ce fichier. On a donc français.txt, anglais.txt etc etc
    dans le site, on sait qu'il doit inserer la ligne n°x à tel ou tel endroit
    on a une variable, la langue
    langue="français"
    langue="anglais"
    etc

    et on ouvre:

    open(langue&".txt") pour aller chercher la ligne n°X

    TTBACF !
    3
  2. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    Salut, pas trop le temps de detailler la, mais ce qui se passe ici:
    On a un logiciel (noyau C++, interface VB) et on a un fichier de configuration en XML avec le nom de tous les messages, et le texte correspondant (menu, MsgBox, InputBox, Bouton,...). Il suffit de traduire le fichier XML pour faire changer le logiciel de langue...
    C'est juste pour donner une idee...

    .  .
    \_/
            Sauvez Maily! Mangez Castor!
    1
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. Anonyme
     
    Bonjour,

    1ere option:
    Administration - > texte anglais et français pour chaque page éditable avec tinymce ou autre éditeur en ligne, sauvegarder dans une db mysql. À l'affichage ont set une langue par defaut $lang="fr";
    ont affiche le texte if($lang=="fr"){Affiche texte francais}if($lang=="en"){Affiche texte anglais}
    N.B. le if est traiter plus rapidement que le switch case.
    Ont peut sauvegarder la langue de préférence dans un cookie comme ca l'utilisateur ouvre le site et arrive dans la langue qu'il désire. Ah j'oubliais, lien anglais et français <a href="<?php echo $_SERVER['PHP_SELF']; ?>?lang=fr">Français</a> <a href="<?php echo $_SERVER['PHP_SELF']; ?>?lang=en">English</a>
    Si vos pages contiennent d'autre variable, ne pas oublier de les passer dans les liens ci-dessu!
    Pour optimiser à l'affichage ne pas mettre de SELECT * mieux vaut écrire tout les champs de la table.

    2e Option: est décrite plus bas, chaque ligne d'une page texte = un texte du site.
    Plus complexe à mettre en place, mais plus pratique dans le cas de plusieurs langue.
    1
  5. NBO
     
    Merci pour ta réponse lagassat,
    mais moi ce qui m'intéresse c'est plus le coté dynamique, si tu vas voir vacances.com (j'fais pas de la promo, mais c'est exactement ce que je souhaiterai faire) et bien,je ne pense pas qu'ils aient créés une page pour chaque langue, mais je pense qu'il joue avec des enregistrements en plusieurs langues dans les tables...
    0
  6. lagassat Messages postés 527 Statut Membre 81
     
    Bah c possible, mais ca m'etonnes quand ayant autant de donner à traiter, ils arrivent à afficher une page en moins de 2s. ou alors c que c vraiment bien fait...

    j'ai hâte de voir si qq'un a la réponse. ;-)
    "2 choses sont infinies : l'univers et la betise humaine
    bien que en ce qui concerne la 1ere je n'ai pas encore de certitude absolue"
    0
  7. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Salut.
    Je bosse sur un site de commerce électronique.
    On fonctionne en français, allemand, anglais et espagnole.

    Pour la partie .Net de notre site, on utilise les fichiers de ressource .Net.
    (.Net possède un système de gestion des langues).
    Chaque message susceptible d'être affiché à l'écran possède un identifiant.

    Pour le reste du site (pas en .Net), on a également 1 identifiant par message, avec une moulinette perl qui créé les différentes versions du site automatiquement en fonction des pages de base et de la liste des traductions.
    (C'est un bête rechercher/remplacer sur des tags HTML spécifiques contenant les identifiants des messages).

    Quand aux données, c'est encore un autre boulot... (le catalogue est également multilangues)
    0
  8. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Pour résumer notre cas:

    La partie .Net est dynamique (c'est le serveur .Net qui sélectionne les messages dans la bonne langue pour générer la page ; c'est donc exactement la même URL pour une même page dans différentes langues. C'est uniquement grave au cookie de session de l'utilisateur qu'il connait sa langue).

    Pour la partie non .Net, là c'est une arborescence complète du site par langue (/fr/... /de/... etc.)
    0
    1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
       
      "grave" --> "grâce"
      0
  9. NBO
     
    Merci à tous pour ces infos,
    Apparemment il faut que j'me mette au .Net alors...
    Si quelqun à des infos ou ressources dans ce domaine, je suis prenneur.
    Sinon, y'a vraiment pas moyen de gérer cela avec des tables mysql ???
    0
  10. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Oh si ça peut très bien se faire avec mysql.

    Il faut juste que dans ton code (php, asp ou autre), tu effectue une petite requête SQL pour aller chercher le bon message.
    (On a aussi une toute petite partie du site où on va pêcher les messages en base de données).

    Tu pourrais par exemple te faire une fonction GetTranslation(identifiant) qui lirai la langue dans le cookie, irai chercher le message correspondant à l'identifiant et la langue dans la base de données et le renvoie.

    C'est une des solutions, mais tu peux en imaginer d'autres... :-)
    0
  11. lagassat Messages postés 527 Statut Membre 81
     
    re,

    Pour rester dans l'esprit de stocker le contenu dans une bdd mysql, ça ne risque pas d'engendre des temps de réponses trop long s'il faut aller chercher tous les textes ?

    En clair, avec un systeme comme ça, peut-on quand même créer un site rapide ?

    "2 choses sont infinies : l'univers et la betise humaine
    bien que en ce qui concerne la 1ere je n'ai pas encore de certitude absolue"
    0
  12. kalamit
     
    Salut à tous,
    J'avais un super tutoriel avec php/mysql, mais il semblerait que le site est en rade... Dommage... http://www.phpdebutant.org C'est dans le menu de dropite qu'il faut chercher... :o)

    Kalamit,
    Je suis un concept ! :o)
    0
  13. fou2dodie
     
    mouarf en cherchant qq chose de tout a fait différent je suis tombé sur ça alos j'ai pensé à vous!j'ai pas tous lu mais rien que le titre me fait dire que tu trouveras la réponse à ta question
    http://www.asp-php.net/tutorial/asp-php/appli_multilingue.php

    bonne chance

    LMCT

    j'ai touché le fond
    maintenant je creuse
    0
    1. Infomagic
       
      Bjr,

      C'est de la balle ce site ;op
      Je l'ai trouvé aujourd'hui et c'est exactement ce que je cherchais sauf que moi je développe en CFML/Oracle.

      Bye,
      0
  14. julien
     
    bonjour à tous

    je me trouve dans le meme cas que vous sauf que pour moi impossible faire de l'Oracle, du .Net ou du PHP puisqu'il s'agit d'un mandat précis (travail de diplome pour mon école...).
    J'ai à ma disposition Java...
    J'avais aussi pensé à tout mettre dans une BD et afficher tout le site grace à JSP. Mais ceci me paraît très lourd.

    Ca m'aiderait beaucoup si vous aviez une méthode plus simple et plus "jolie".

    merci pour vos infos

    Julien
    0
  15. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Pour Java:
    Il me semble avoir vu des classes spécialisées pour l'internationalisation.
    Essai de recherche un peu dans l'API Java: je suis sûr qu'il doit y avoir ce qu'il faut.
    0
  16. holblin
     
    Pour mon avis je pense que la solution du define est une bonne solution :
    http://www.phpdebutant.org/article107.php

    Cependant la version mysql est un peu mieux d'après moi ...
    Pour éviter des problèmes de temps sur la version mysql ... il suffi d'utiliser un système de cache !

    Il existe aussi des systèmes clé en main permettant de faire du multi-langue avec par exemple du xml ... cette solution est sans danger dans le sens ou n'importe qui peut traduire il ne pourra pas inclure de faille de sécurité ... vous n'aurez donc pas besoin de relire son travail fait en russe ....
    0
  17. lagassat Messages postés 527 Statut Membre 81
     
    Salut,

    Euh bah moi les sites que j’ai vu, il y avait un contenu en francais, un contenu anglais, etc…

    Ex : tu as un texte que tu met dans une page html. Tu traduis le texte dans chacune des langues, et tu crée les pages : page1_fr.htm, page1_uk.htm, page1_de.htm, et selon que l’utilisateur choisis telle ou telle langue, tu charges la page qui corresponds…

    mais c'est vrai qu'il y a peut être d'autres méthodes.

    Voilà
    "2 choses sont infinies : l'univers et la betise humaine
    bien que en ce qui concerne la 1ere je n'ai pas encore de certitude absolue"
    -1
  18. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    En clair, avec un systeme comme ça, peut-on quand même créer un site rapide ?

    ça risque en effet d'avoir un impact important, surtout avec un serveur aussi léger sur mySQL
    (J'ai cru lire que mySQL ne supporte pas les accès concurrents, c'est vrai ???)

    Il vaut mieux prendre des serveurs plus solides comme PostgreSQL ou Oracle, donc les performances sont bien meilleures.
    http://advocacy.postgresql.org/
    -1