Site multilingue

01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007 - 14 nov. 2006 à 11:25
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010 - 4 déc. 2006 à 10:00
salut à tous,

Je suis entrain de faire un site mutilingue. Je ne sais pas si la méthode que j'utilise est la bonne. pouvez-vous me donner votre avis.

j'ai une page index.htm contenant les liens suivants:

Fr Eng Nl
Lorsque l'utilisateur clique sur Fr les fichiers suivants sont utilisés:
Page1_fr,Page2_fr.....

Lorsque l'utilisateur clique sur Eng les fichiers suivants sont utlisés:
page1_eng.htm,Page2_eng.htm.....

Idem pour Nl

de tel sorte que j'ai trop de fichiers. Y -a- t-il une méthode plus simple.

Bien à vous

5 réponses

huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
14 nov. 2006 à 11:49
La méthode que j'utilise passe par des base de données :

Tous les textes sont stockées dans des tables.
J'ai par exemple une table 'fr', une table 'en' ....
Chaque table contient au moins deux colonnes : une colonne id et une colonne texte.
et je fais en sorte qu'un texte ayant un id x dans la table 'en' soit la traduction du texte ayant l'id x dans la table 'fr'.

La requête pour aller chercher un texte donné est le même quel que soit la langue (sauf le nom de la table bien entendu).
Je stocke la langue choisie dans une varaible de session.

Exemple : je veux le texte (quelque soit la langue) ayant l'id 10 :
<?php
$requete =  "SELECT texte FROM  ".$_SESSION['langue']." WHERE id = '10' ";
?>

Pour changer de langue :
Ja fais un lien comme suit  :
[?langue=en En] | [?langue=en Fr]

Et je récupère la langue comme suit :

<?php
    if(isset($_GET['langue']))
    {
       // Pour éviter une injection SQL
       switch($_GET['langue'])
       {
          case "en" :
              $SESSION['langue']="en";
          break;
           // Le français est la langue par défaut
          default:
             $SESSION['langue']="fr";
             break;
       }
    }
?>

bien entendu, il ne faut pas avoir oubilé de démarrer sa session et d'enregistrer la varaible de session 'langue'

<?php
    session_start();
    $langue="fr";
    session_register("langue");
?>

Maintenant à toi de jouer pour adapter celà à ton site.
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
14 nov. 2006 à 12:59
voici les tables
CREATETABLE`table_fr`(
`id`INT(3)NOTNULL,
`titre`VARCHAR(255)NOTNULL,
`texte`VARCHAR(255)NOTNULL
);

CREATETABLE`table_en`(
`id`INT(3)NOTNULL,
`titre`VARCHAR(255)NOTNULL,
`texte`VARCHAR(255)NOTNULL
);

CREATETABLE`table_nl`(
`id`INT(3)NOTNULL,
`titre`VARCHAR(255)NOTNULL,
`texte`VARCHAR(255)NOTNULL
);

voici la forme de mon texte

titre 1                                 titre 2
* .............                  *..............
*.............                   *..............
*...........                     *...............

              titre 3
      *................
      * ..............
      *..............
Je ne sais pas comment je vais mettre cela dans le seul champ texte
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
14 nov. 2006 à 19:30
Tu ne vas pas mettre celà dans un seul champ texte mais dans 3 : un par langue.
Pour ce qui est du rendu du site final, c'est mon poste précédent.
Pour ce qui est de l'interface de gestion de ton site :
- soit tu fais une interface par langue (c'est du copier/coller en changeant juste le nom de ta table)
- soit pour chaque texte, tu fais trois champ texte (un par langue) et tu alimentes tes trois tables en même temps.
Je pense que la première des deux solutions est la plus facile.
0
seyvapul Messages postés 39 Date d'inscription vendredi 15 juillet 2005 Statut Membre Dernière intervention 4 juin 2017
4 déc. 2006 à 00:57
Perso je suis en train de faire un site et je dois aussi le faire en plusieurs langues.

J'utilise en fait les deux methodes.

Tous mes menus sont des images, donc pas de possibilité de traduction en dynamique, ce qui fait que j'appelle des scripts différents en fonction d'une variable :
$CONFIG['langue'] = 'fra';
Cette variable est definie par defaut en francais. (fra).
Lors de lactivation d'une session, l'utilisateur à la possibilité de changer la langue en : 'spa', 'eng', 'ger', 'ita' et 'fra'.
Suivant la valeur de cette variable, j'ai defini des chemins enregistré qui appel les bons scrpits.

switch $CONFIG['langue']
case 'fra' : include('menu_fra.php');break;
case 'eng' : include('menu_eng.php');break;
...


Mais aussi l'aide en ligne du site etant contextuelle, elle fait apparaitre des messages adaptés et là j'utilise les bases de données, mais avec une seule table.

CREATETABLE`langue_texte`(
`id`INT(3)NOTNULL,
`titre`VARCHAR(255)NOTNULL,
`fra`VARCHAR(255)NOTNULL,
`eng`VARCHAR(255)NOTNULL,
`spa`VARCHAR(255)NOTNULL,
`ger`VARCHAR(255)NOTNULL,
`ita`VARCHAR(255)NOTNULL
);

de même suivant la valeur de la variable ,je fais un switch case pour afficher les bon texte en appelant le bon champs de la table.

huberline, ta methode est sympa mais comment fait un visiteur non enregistré pour changer la langue et pouvoir comprendre le formulaire d'inscrition ? Ou alors j'ai zappé un truc, c'est possible car je debute aussi. :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
4 déc. 2006 à 10:00
En fait, tu n'as pas besoin d'avoir un système de login pour gérer des sessions :
Sur ta page d'accueil tu démarre systématiquement une session (session_start()) : les visiteurs disposent donc, le temps de leur visite, d'une session (même s'i ce n'est pas visible pour lui).
Ainsi tu as la possibilité de savoir en permanance la langue choisie.
0
Rejoignez-nous