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'une page multi-langage


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Par défaut Gestion d'une page multi-langage
    Bonjour ou bonsoir a toutes et tous

    J'ai actuellement un site internet qui marche plutôt bien mais qui est seulement en français, et dans un souci de développement je souhaiterai créer une version anglaise de mon site.

    Pour l'instant, si pour un fichier fait en français, par exemple la page d'accueil, j'ai créé un nouveau fichier pour la version anglais.

    La question que je me posait est: est-ce que je pourrai plutôt créer un seul fichier en même les deux version dedans et pouvoir gérer leur affichage un peu sur le principe d'un if en C. Je m'explique avec un exemple

    Si i = 1
    alors on affiche la version française
    sinon
    on affiche la version anglais

    Je sais que c'est pas du C mais du PHP comme langage mais est-ce que vous savez s'il y a quelque chose d'équivalent s'il vous plait

    Merci d'avance,
    Cordialement,
    Clairetj

  2. #2
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Bonjour,

    Oui ce genre de structure existe effectivement en PHP (exactement la même syntaxe qu'un programme c à part le $ devant les noms de variable et le fait que ce ne soit pas typé).

    Il faut voir si le mod_rewrite est actif sur ton hébergement, et aussi de quelle manière tu veux t'y prendre pour mettre en place cette structure, mais tu peux éventuellement envisager de passer le paramètre lang dans l'url :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(isset($_GET['lang']) and $lang === 'fr'):
    ....
    else: //en
    ....
    endif;

  3. #3
    Membre éclairé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Par défaut
    Merci Théocrite pour ta réponse, et est-ce que je me permettre de te déranger

    Dans mon cas, je voudrais mettre l'image du drapeau anglais pour la version anglais, drapeau français pour la version française.
    Si on appelle le drapeau anglais anglais.jpg et le drapeau français francais.jpg est ce que tu pourrais me mettre un exemple de la fonction que tu as utiliser.

    Une autre question subsidiaire, est-ce que la variable sera une variable global ou locale, c'est a dire si je clique sur la version anglaise d'une page et qu'après je change de page, je tomberai sur la version anglaise de la nouvelle page directement ?

  4. #4
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Pas de soucis, les questions ne dérangent pas !

    Par contre il faudrait que j'en sache plus sur la structure de ton site... Histoire de voir dans quelle mesure la solution que je vais t'apporter est bonne !

    Donc dans l'idée, on peut déjà commencer assez simple. Prenons l'accueil, disons index.php.

    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
    20
    21
    22
    23
    24
    25
    26
     
    <?php if(isset($_GET['lang']) and $lang === 'fr'): ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>Titre en Français</title>
    </head>
    <body>
            <a href="/page2.php?lang=fr">Page 2</a>
            <a href="/index.php?lang=en">Drapeau anglais</a>
    </body>
    </html>
    <?php else: ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>English title</title>
    </head>
    <body>
            <a href="/page2.php?lang=en">Page 2</a>
            <a href="/index.php?lang=fr">French flag</a>
    </body>
    </html>
    <?php endif; ?>
    Tu noteras au niveau de la balise <html> la mention du langage (en ou fr), la balise <title> et autre meta type description à ne pas oublier, et enfin les contenus avec les liens (?lang=fr|en et l'inverse pour le lien drapeau).

  5. #5
    Membre éclairé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Par défaut
    Je reviens un peu sur ce problème qui est résolu mais j'aurais voulu un avis.

    Là, ma question portait sur la structure IF mais je voulais savoir s'il est plus simple d'utiliser une structure IF ou alors une structure SWITCH qui, dans mon cas, pourrait remplir la même fonction ?

  6. #6
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    En effet tu aurais pu utiliser un switch, avec un case en et un default, mais ça aurait été moins joli je pense...

    Après c'est plus une question de syntaxe, mais c'est vrai que là le if/else/endif (avec l'utilisation des ":" et du end) permet de garder tout le php sur une seule ligne à chaque fois, et ainsi d'être bien structuré.

  7. #7
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Le switch te servira si tu as plusieurs traitements à faire selon une variable unique, le code ci-dessous par exemple serait bien moins lisible et maintenable avec des if
    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
    20
     
    if (isset($_GET['lang']))
    {
        switch ($_GET['lang'])
        {
            case('be'):
            case('ch'):
            case('fr'):
                // traitement 1
                break;
            case('en'):
                // traitement 2
                break;
            case('ru'):
                // traitement 3
                break;
            default:
                // traitement 4
        }
    }
    Dans ton cas, tu n'as qu'une condition à tester, le if est donc tout indiqué !
    Par contre, si tu affiches exactement le même contenu en français et en anglais et qu'il n'y a que le wording qui change (comme c'est le cas avec l'exemple que tu nous as donné), je te conseille l'utilisation d'un fichier de wording (ou un stockage en bdd) avec un chargement en amont, bien plus simple à maintenir et à faire évoluer !

    Un exemple simple, un fichier fr.inc contient :
    Ta page charge le fichier via un include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php if(isset($_GET['lang']) and $lang === 'fr')
    {
       include_once('fr.inc');
    } ?>
    et dans ton HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <title><?php echo $title; ?></title>
    Comme ça, pour rajouter l'anglais (ou une autre langue), il te suffit de créer le fichier correspondant (en.inc, etc) et l'appeler à la place du fr.inc
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  8. #8
    Membre éclairé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Par défaut
    Merci k'amm pour l'idée des fichiers en .inc mais une petite question: si je te comprend bien il faudrait que je crée 1 fichier .inc par fichier "original" c'est ça ?

    Parce que justement dans mon cas je ne veux pas créer de nouveaux fichiers

  9. #9
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Tout dépends de la taille de la page et de son contenu, mais si tu n'en as pas trop tu peux très bien envisager de n'avoir qu'un seul fichier qui contient tout oui

    N'oublies pas qu'avec cette solution, tu pourras modifier le HTML et le faire évoluer autant que tu veux, sans avoir à copier/coller le code dans la bonne section et re-traduire à chaque fois (avec tout ce que ça implique comme erreur potentielle).
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/03/2007, 10h11
  2. Gestion d'une page web HTML/PHP
    Par amine_en_france dans le forum Langage
    Réponses: 9
    Dernier message: 06/03/2007, 11h37
  3. JEditorPane + gestion des frame d'une page HTML
    Par rprom1 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 21/12/2006, 17h08
  4. [texte] gestion de l'affichage d'une page
    Par guy2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 10/07/2005, 18h37
  5. Réponses: 34
    Dernier message: 25/03/2005, 22h59

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