Journal Site multi-lingue

Posté par  .
Étiquettes : aucune
0
12
mai
2003
Comment faites-vous au niveau de la base de données pour realiser un site internet multi-lingue ?

Etant donné que seuls certains champs doivent etre traduits, qu'on risque un jour de rajouter un langue, qu'on veut que ca reste pas trop compliqué...

Comment font les site actuels ?
Merci
  • # Re: Site multi-lingue

    Posté par  . Évalué à 2.

    perso j'utilise une colonne LangID (avec -1=anglais -2=français,...) comme seconde clé dans les tables.
    Je met aussi une variable de session (ou un param dans l'url) du même nom (LangID).

    avec ca, tu rajoute juste une clause ' and LangID=?' dans les requettes SQL, et ca roule.

    Evidemment c'est un peut lourd quand tu à d'autres infos que le texte à traduire dans la table, t'es obligé de faire un petit peut de redondance.
    • [^] # Re: Site multi-lingue

      Posté par  . Évalué à 1.

      petit complement:
      c'est surtout utile pour des textes administrables dans un BackOffice, ou qui changes souvent.
      Si tu a beaucoup de textes qui ne change jamais/raremment utilise plutot des fichiers de constantes (genre .properties en java).
  • # Re: Site multi-lingue

    Posté par  . Évalué à 3.

    En PHP je fais des scripts multilingue en utilisant des fichiers d'initialisation choisi en fonction de la langue que j'include apres un test (pas besoin de base de données)

    dans le fichier fr.inc.php:
    <?php
    $main_title = 'Mon Site Web';
    $field1 = 'champ 1';
    ?>

    dans le fichier en.inc.php:

    <?php
    $main_title = 'My Web Site';
    $field1 = 'field 1';
    ?>


    et dans le script
    proprement dit au depart
    <?php
    switch ($lang) {
    case 'fr' : include ('fr.inc.php'); break;
    case 'en' : include ('en.inc.php'); break;
    default: include ('fr.inc.php'); break;
    }

    ....$value = 'truc';
    echo '<h1>',$main_title,'<h1>',"\n";
    echo $field1 , '=', $value;
    ...
    ?>

    Dam
    • [^] # Re: Site multi-lingue

      Posté par  (site web personnel) . Évalué à 0.

      pareil ^^
    • [^] # Re: Site multi-lingue

      Posté par  (site web personnel) . Évalué à 1.

      Qu'est ce qui ne te convient pas dans ta méthode? Pourquoi tu poses la question en gros?

      p.s: Dans ton CV c'est école polytechniques de Nantes et non école Polytechnique de ...
      • [^] # Re: Site multi-lingue

        Posté par  . Évalué à 1.

        heu je reponds à la question de elrik plutôt (en donnant ma maniere de faire)

        et je suis me suis lancé dans la refonte du site :)
        merci pour la remarque

        Dam
        • [^] # Re: Site multi-lingue

          Posté par  (site web personnel) . Évalué à 1.

          Désolé, je m'en suis apperçu après avoir posté!
          C'est aussi comme cela que je fais. Reste à savoir comment tu propages la langue: cookie, url, session,...

          De rien pour la remarque. C'était juste un clin d'oeil (J'ai fait une formation à l'ireste) car je me doute bien que tu connais la différence.
          • [^] # Re: Site multi-lingue

            Posté par  . Évalué à 1.

            il y a plusieur moyen de recupérer la variable
            dans l'URL lors d'un clic sur un drapeau par exemple ou via un formulaire, on pourra mettre cette variable en session ensuite pour propager sur le site ou dans un cookie pour le prendre en compte lors de prochaines visites. Encore plus simple prendre tout simplement les préference du navigateur (dans l'entête HTTP lors du GET)

            Dam
            • [^] # Re: Site multi-lingue

              Posté par  (site web personnel) . Évalué à 1.

              Non je ne parlais pas de la façon de récupérer la langue mais de la façon de la propager de page en page. Pour ma part, je la propage dans l'url http://monsite.com/francais/(...) ou http://monsite.com/autre-langue/(...) etc
              • [^] # Re: Site multi-lingue

                Posté par  . Évalué à 1.

                Moi je dis les sessions, ya rien de tel, pas de proplème de compatibilité, tu peux entrièrement les gérer sous forme de requettes... mais bon il reste a passé l'ID mais généralement un PHP bien installer le fait automatiquement dans les URL
                • [^] # Re: Site multi-lingue

                  Posté par  (site web personnel) . Évalué à 1.

                  > un PHP bien installer le fait automatiquement dans les URL

                  Ah non justement s'il est bien configuré comme tu dis, l'id de session ne passe pas dans l'url mais dans les entêtes http. On utilise un cookie de session et pas un id de session transmis par l'url. L'id de session transmis par l'url est une possible faille de sécurité (vol de session en particulier).
                  • [^] # Re: Site multi-lingue

                    Posté par  . Évalué à 2.

                    Par contre, si les cookies ne sont pas autorisés (ce que je fais souvent en les refusant), il serait bien que la personne puisse consulter correctement le site qd même.

                    En général, si les cookies sont autorisés => transmission du sid par cookies, sinon transmission par URL.
                    (session.use_cookies = 1 et session.use_trans_sid = 1)
                  • [^] # Re: Site multi-lingue

                    Posté par  . Évalué à 1.

                    sans les entêtes http ?! c'est possible ça ?
  • # Re: Site multi-lingue

    Posté par  . Évalué à 1.

    Une question naïve,
    il n'y a pas moyen de faire comme pour les applications
    développées avec mozilla ( voire http://books.mozdev.org(...)
    et l'impressionant Mozilla Amazon Browser http://www.cfmentor.com/~faser/mab/(...) ) en XHtml, c'est à dire avec une DTD importée suivant la langue ?

    un truc comme
    <! ENTITY greetings "Hello World" >

    <! ENTITY greetings "Bonjour tout le monde" >

    dont on se sert comme ça
    &greetings;
    • [^] # Re: Site multi-lingue

      Posté par  . Évalué à 1.

      Le problème c'est que là, tu t'en remet completement au navigateur pour comprendre le CSS si tel n'est pas le cas l'utilisateur va se retrouver avec le nom des variables CSS (entitée) affichées directement et non interprété ou encore sous forme de carrés (caractere inconnu) ce qui est pénalisant du point de vue de l'accessibilité du site .

      Dam
  • # Avec xml et xslt

    Posté par  . Évalué à 1.

    Avec un site sous iss j avaias utilisé cela
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xm(...)

    Le truc c'est de faire un fichier xml dans la langue voulue, et de faire les transformations avec xslt avec la fonction extension au standart transformNode.

    Si quelqu un connait comment faire une transformation xslt du même genre en php qu il ne se gène pas pour le dire :p
    • [^] # Ma reponse à ma question

      Posté par  . Évalué à 1.

      http://www.onlamp.com/pub/a/onlamp/2001/03/16/sablotron.html?page=3(...)

      On pourrait regretter l ouverture en fichier texte et non xml qui serait pratique pour faire des ajout à l xml avant de l envoyer au passeur xslt

      Noter que l on pourrait gérer un cache pour éviter de faire la transformation xslt a chaque appel de page.

      <?php

      // Include the DeviceType() function.
      INCLUDE("xmllib.inc");


      // What are the XML and XSL files?
      $xmlFile = "news.xml";
      $xslFile = DeviceType();

      // Create a new processor handle
      $th = @xslt_create() or die("Can't create XSLT handle!");

      // Open the XML and XSL files
      $xh = fopen($xmlFile, "r") or die("Can't open XML file");
      $sh = fopen($xslFile, "r") or die("Can't open XSL file");

      // Read in the XML and XSL contents
      $xmlContent = fread($xh, filesize($xmlFile));
      $xslContent = fread($sh, filesize($xslFile));

      // Perform the XSL transformation
      @xslt_process($xslContent, $xmlContent, $XSLtransformation);

      // send the correct WAP header if necessary
      if ($xslFile == "wapnews") :

      header("content-type: text/vnd.wap.wml");

      endif;

      // Output the transformed XML file
      echo $XSLtransformation;

      // Free up the resources
      @xslt_free($th);

      ?>
      d autre avis ?
  • # Re: Site multi-lingue

    Posté par  . Évalué à 2.

    PHP et Perl peuvent utiliser gettext. Ce qui est bien (TM).
  • # Re: Site multi-lingue

    Posté par  . Évalué à 1.

    Bien bien les amis merci pour vos reponses nombreuses mais à par les deux premieres qui sont justes, je rapelle que ma question portait sur la base de données !

    héhé mais en fait c'etait tres interressant.

    Merci. PS: p-e encore quelque precision, ou d'autre facon de faire pour la base de donnée.
    • [^] # Re: Site multi-lingue

      Posté par  . Évalué à 1.

      Là je dirais que ca depend de ce ke tu veux internationnaliser:
      Si c'est des articles complets il suffit de rajouter un champ pour les taguer avec la langue (une info suplementaire) qui leur correspond et les repeter autant de fois que de langue voulue avec un meme identifiant

      Mais je pense qu'il faut bien dissocier l'interface utilisateur du schema de la base de données et ne pas la designer en pensant a l'interface mais à la meilleur maniere de décrire tes données

      <ma_vie>
      /me a vue des schema immonde avec des tables repliquées uniquement pour rajouter un espace avant le libélé pour mieux caller la sortie papier ....
      </ma_vie>

      Dam
    • [^] # Re: Site multi-lingue

      Posté par  (site web personnel) . Évalué à 1.

      A mon avis, si personne à répondu, c'est juste qu'il y a une consensus sur ta méhtode. moi aussi je mettrais un lang_id quelque part...
    • [^] # Re: Site multi-lingue

      Posté par  . Évalué à 1.

      OKI

      CiMer.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.