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 :

Site Web bilingue [Fait]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Par défaut Site Web bilingue
    Bonjour,

    Je souhaite créer un site web bilingue (français et anglais) associé à une base de données MySQL. Le problème c'est de trouver comment gérer les deux langues.

    Je dois avoir un seul répertoire pour le site et non pas deux (exemple fr et en) pour pouvoir mettre plus facilement à jour celui ci.

    J'ai déjà cherché tout ce qui est en rapport avec l'i18n (internationalisation) mais je suis un peu perdu.

    Est ce que je dois utiliser du PHP4 ou du PHP5 ?

    j'ai trouvé un tuto sur le site mais bon ça m'aide pas vraiment
    http://v-flauder.developpez.com/tutoriels/php/i18n/

    Si vous avez des idées, n'hesitez pas. Merci

  2. #2
    Membre expérimenté Avatar de Mogwaï
    Inscrit en
    Mai 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 247
    Par défaut
    Tu peux te créer une classe (ou une fonction selon tes compétences) qui pourrait s'utiliser ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
    $lang = $_SESSION['lang']; // FR, EN, etc...
    $traduction = new Traduction('fichier.csv', $lang);
    ?>
    <html>
    ...
    <title><?php echo $traduction->get('title'); ?></title>
    </html>
    Ton fichier CSV contiendrait toutes les traductions en fonction de la langue et de la clé (une colonne par langue et une ligne par clé), et la classe servirait à lire ce fichier. Le CSV serait éditable par des traducteurs qui n'auraient pas besoin de s'y connaitre en PHP.
    C'est en tout cas ce que j'ai codé pour mes projets

  3. #3
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Tu peut aussi stocker ca en base de donnée (pratique pour gerer les modifitations).
    ainsi tes contenu serait juste un simple echo que tes traducteur saisiraient en backoffice.
    pour gérer ca tu peut faire comme ca:

    Langues(idLangue, libLangue)
    Pages(idPage+idLangue, titreContenu, texteContenu)

    On a donc ici une entité faible (Pages) qui concatene l'identifiant de ta langue a son identifiant et différencie donc les Pages en fonction de l'id de la page mais aussi de la langue.

    Ainsi tu apelle le contenu de l'indice de la page (defini dans ton code), associé a la langue (choisi par le visiteur au debut de sa visite).
    Pour les traducteur tu leur affiche la liste des contenus et leur affiche le contenu des deux langue pour que ca soit pratique de traduire.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Par défaut
    Je ne vois pas en quoi le tuto de V. Flauder pose problème ou n'est pas adapté. Je suis moi aussi en train de réaliser un site multilangue en ce moment.

    En me basant sur l'article de V. Flauder, j'ai modifié son code pour utiliser un fichier XML par page + 1 fichier pour tout le qui est commun à chaque page (menu, copyright etc...).

    Pour faire en sorte d'avoir un seul répertoire physique mais que l'url s'affiche de la façon suivante : http://www.monsite.com/fr/mapage.html , j'utilise l'url rewriting en mettant ca dans mon htaccess :

    Si tu mets ca dans ton htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    Options +FollowSymlinks
    RewriteRule ^(fr|en)/(.*)\.html$ $2\.php?l=$1 [L]
    Ca te permet de n'avoir qu'un seul répertoire. L'adresse réelle de ta page est http://www.mapage.com/index.php mais tu l'appelles avec http://www.mapage.com/fr/index.html ou http://www.mapage.com/en/index.html.
    L'url rewriting va transformer cette adresse :
    http://www.mapage.com/fr/index.html
    EN
    http://www.mapage.com/index.php?l=fr

    Il te suffit ensuite de placer un bout de code de ce type au début de ta page pour afficher le bon fichier de langue en fonction du paramètre recu :

    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
    19
     
    <?php
     
    require_once 'include/XMLEngine.php';
     
    //Verif des parametres de langues. Si inexistants, francais par defaut
    if ($_GET['l'] == 'en' OR $_GET['l'] == 'fr')
    {
    $langue = $_GET['l'];
    }
    else
    {
    $langue = 'fr';
    }
     
    //Création de l'instance de notre classe avec le fichier XML à ouvrir.
     
    $page = new XMLEngine( 'xmlengine/xml/index.xml', $langue );
    ?>

Discussions similaires

  1. Créer un site web - en quel langage ?
    Par Thierry92 dans le forum Débuter
    Réponses: 96
    Dernier message: 25/04/2024, 22h24
  2. [MySQL] Conception de site web bilingue
    Par karamaster dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 20/02/2015, 13h28
  3. Site web bilingue
    Par harris_macken dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 19/08/2010, 20h54
  4. Site web bilingue
    Par DreammyKetty dans le forum ASP.NET
    Réponses: 5
    Dernier message: 15/09/2008, 18h42

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