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

PHP & Base de données Discussion :

gestion d'un site multilingue


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut gestion d'un site multilingue
    bonjour,

    je viens de developper un site en espanol en php/sql, et l'on vient de me demander de le faire aussi en anglais mais je ne sais pas comment m'y prendre du tout car je n'ai jamais fait cela. Voila j'ai toutes mes pages a la racine de mon site. Sur chaque page j'affiche le texte stocke dans la base de donnees. J'ai egalement une partie admin qui me permet de gerer tout le site. Quelqu'un pourrait me dire comment je peux faire pour faire la version anglaise de mon site maintenant que j'ai fini la version espagnol


    merci de votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Mickaël
    Inscrit en
    Mai 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Mickaël
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 106
    Points : 133
    Points
    133
    Par défaut
    Salut,

    Vu que tout tes textes sont stockés dans une base de données, c'est déjà un trés bon point.

    Tu ajoutes un champ Langue dans la table dles textes, qui contiendra un identifiant de la langue du texte.

    Ensuite, tu stockes la langue choisie par l'utilisateur dans la session, et tu modifies tes requêtes qui vont chercher tes textes en ajoutant le critère de la langue.

  3. #3
    Membre habitué Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Points : 195
    Points
    195
    Par défaut
    Je confirme l'information de mikyfpc.

    J'ai personnellement effectué la même approche en stockant tous les textes dans ma base de donnée et ensuite par le choix de l'utilisateur, le site s'affiche en Anglais ou en Français (pour mon cas http://www.diapophoto.com) mais je peux ajouter autant de langue que je le souhaite.

    Ensuite tout dépend comment tu organises l'affichage du contenu de tes pages en fonction des tables de ta base de donnée.

    Si tu veux plus de détails... j'aurais besoin de la structure de tes tables pour t'aider... sans m'étendre dans différentes directions.

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    voici la struture de la table qui contient le texte de mes pages en espagnol

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TABLE `paginas` (
      `id_page` int(11) NOT NULL auto_increment,
      `titre` varchar(255) NOT NULL default '',
      `contenu` text NOT NULL,
      `id_rubrique` int(11) NOT NULL default '0',
      `date_pub` date NOT NULL default '0000-00-00',
      PRIMARY KEY  (`id_page`)

    et le code pour afficher dans mes pages

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?
    $sql = "select * from paginas where id_page='19'";
     $requete = mysql_query( $sql, $cnx ) ;
    $result = mysql_fetch_array($requete);
     
     
    	$id=$result['id_page'];
    	$titre=$result['titre'];
    	$contenu=$result['contenu'];
     
    	echo '<br/><div class="titre_liste">';
    	echo ($titre);
    	echo '</div><br/>';
    	echo '<div class="texte_site">';
    	echo($contenu) ;
    	echo '</div>';
    ?>
    merci de votre aide

  5. #5
    Membre habitué Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Points : 195
    Points
    195
    Par défaut
    Tu ajoutes une table langues comme ci-dessous

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TABLE `langue` (
    `id_langue` int(11) NOT NULL AUTO_INCREMENT,
    `langues` varchar(150) NOT NULL DEFAULT '',
     PRIMARY KEY (`id_langue`)

    Ensuite tu ajoutes le champs "id_langue" à ta table "paginas"

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TABLE `paginas` (
    `id_page` int(11) NOT NULL AUTO_INCREMENT,
    `titre` varchar(255) NOT NULL DEFAULT '',
    `contenu` text NOT NULL,
    `id_rubrique` int(11) NOT NULL DEFAULT '0',
    `date_pub` date NOT NULL DEFAULT '0000-00-00',
    `id_langue` int(11) NOT NULL DEFAULT '',
     PRIMARY KEY (`id_page`)

    et ensuite dans ta requête tu ajoutes une condition en fonction du choix de l'utilisateur ou bien de la langue du profil de l'utilisateur qui se log (si tu es sur un site avec identification - alors tu peux passer l'id_langue de l'utilisateur loggé dans une session)

    le choix de la langue passe dans la variable id_langue, comme ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    $sql = "SELECT * FROM paginas WHERE id_page='19' AND id_langue='$id_langue' ";
     $requete = mysql_query( $sql, $cnx ) ;
    $result = mysql_fetch_array($requete);
    
    (etc pour la suite de ton code c'est identique)
    Pour alimenter les traductions tu peux imaginer un module d'administration qui puisse gérer une pile de traduction à faire dans la langue de ton choix et alimenter la table 'paginas' dans la langue traduite selon la langue de base du traducteur... (c'est une idée rien de plus...) - bon d'accord, c'est ce que j'avais fait il y a quelques années pour l'un de mes sites mais ca fonctionne plutot bien...

    Aller j'espère que cela t'a aidé... (désolé je tutoye facilement... c'est plus conviviale)

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    merci de ta reponse je te tiens au courant. par contre comment je fais pour les images qui contiennent du texte en espanol

  7. #7
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut
    Tu stockes des images dans différents répertoires :

    Par exemple :
    - images/commons : images communes à toutes les langues
    - images/fr : images en français
    - images/es : images en espagnol
    etc...
    Chaque image spécifique à une langue devra être duppliquée en autant de langues, avec le texte adéquat.

    Et dans tes pages, tu appelles tes images de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/<?php echo $code_langue; ?>/uneImage.gif">
    en admettant que la variable $code_langue corresponde à fr, es, etc...

    - Soit tu ajoutes un champ code_langue dans ta table LANGUE
    - Soit tu modifies le type de la clé primaire de la table LANGUE dans un format textuel, pour que l'id représente le code langue, et dans ce cas $code_langue est à remplacer par $id_langue

  8. #8
    Membre habitué Avatar de Giantrick
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    300
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 300
    Points : 195
    Points
    195
    Par défaut
    Citation Envoyé par gk14fire
    Tu stockes des images dans différents répertoires :

    Par exemple :
    - images/commons : images communes à toutes les langues
    - images/fr : images en français
    - images/es : images en espagnol
    etc...
    Je suis d'accord avec gk14fire, et en plus c'est beaucoup plus facile à gérer lors d'une mise à jour d'une seule langue voir de toute...

    Citation Envoyé par gk14fire
    - Soit tu ajoutes un champ code_langue dans ta table LANGUE
    - Soit tu modifies le type de la clé primaire de la table LANGUE dans un format textuel, pour que l'id représente le code langue, et dans ce cas $code_langue est à remplacer par $id_langue
    Personnellement je suis plus favorable à l'ajout d'un champ code_langue dans la table LANGUE, mais c'est plus par rapport à ma logique de base de donnée. (c'est également ce que j'ai fait sur un ancien site utilisant des images avec des textes en Français et en Anglais).

    Si tu as besoin de plus d'information, n'hésite pas !

    Bonne programmation.

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. [Cookies] problème avec site multilingue
    Par lacfab dans le forum Langage
    Réponses: 13
    Dernier message: 31/12/2005, 00h10
  3. [Tableaux] Site multilingue
    Par francis m dans le forum Langage
    Réponses: 15
    Dernier message: 10/12/2005, 02h58
  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