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

Langage PHP Discussion :

Méthode pour inclure une langue


Sujet :

Langage PHP

  1. #1
    HwRZxLc4
    Invité(e)
    Par défaut Méthode pour inclure une langue
    Bonjour,

    J'aimerais avoir comment on fais pour que quand on clique sur un drapeaux d'une lange le site change la langue sans devoir reécrire tous un site...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    tu as pas le choix, ca marche pas par magie

    le truc serait de mettre les textes de ton site en base de donnée, et de les charger selon la langue choisie

  3. #3
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    mmouais .. t'as du boulot devant toi encore pour faire ça!

    regarde, comme le suggere Sion_Sempai, la lecture de fichiers, et les sessions aussi pour pouvoir garder la langue pendant toute la durée de la visite du site.
    mais pourquoi tu cours?

  4. #4
    HwRZxLc4
    Invité(e)
    Par défaut
    Dans la métode du site open-realty, il y a des repèrtoir en, fr, etc

    voici un extrais de fichier lang.inc.php

    //FRENCH LANGUAGE FILES
    //error_reporting(E_ALL);
    error_reporting(E_ALL& ~E_NOTICE);
    global $lang;
    $lang = array();

    //This needs to match the listing type that you are using as Rental
    $lang['access_denied'] = "Accès refusé";
    $lang['action'] = "Action";
    $lang['active_listings'] = "Annonces Actives:";
    $lang['add_favorites_link'] = "Ajouter aux Favoris";
    $lang['add_field'] = 'Ajouter un Champ';
    $lang['add_linefeeds'] = "'Retours à la Ligne:";
    $lang['add_linefeeds_desc'] = "Permet les retours à la ligne?";
    $lang['add_to_favorites'] = "Ajouter à ma Sélection";
    $lang['addons'] = "Addons";

    J'aimerias parire sur cette idée la...

    Mai je trouve pas comment il fond sa....

  5. #5
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    Tu fais un fichier tel que celui la pour chaque langue.

    Ensuite, tu stocke dans une variable de session la langue choisie, puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once("include/language/".$_SESSION['lang'].".php");
    en supposant que tya variable de session portant sur la langue contient une chaine égale au nom du fichier de langue (ce sera plus facile ainsi).

    Et au lieu de faire des echos de textes genre "Accès refusé", tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $lang['access_denied'] ;
    enfin, un exemple parmi les nombreuses possibités qui doivent exister...

    et a éventuellement corriger un peu..
    mais pourquoi tu cours?

  6. #6
    HwRZxLc4
    Invité(e)
    Par défaut
    ouawww, et je fais comment pour stoker la langue dans une variable avec un lien ?

    Exemple, j'ai un site avec plusieur drapeau de lange et que quand je clique sur un drapeaux sa change.

  7. #7
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    disons que tes drapeaux sont sur la page index.php. Les images auront alors comme lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="index.php?lang=fr"> // pour le français
    <a href="index.php?lang=eng"> // pour l'anglais
    et donc, tes fichiers de langue auront pour nom fr.php et eng.php, et en suivant mon exemple de tout a l'heure, seront dans les repertoires include/language.

    et dans ton code tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr"; // pour le français par défaut
    $lang=$_SESSION['lang'];// a mettre partout
    à vérifier: peut-etre pas besoin de session si dans ton fichier de langue $lang est une variable globale??? (j'ai trop l'impression de dire une betise la!!!)
    mais pourquoi tu cours?

  8. #8
    HwRZxLc4
    Invité(e)
    Par défaut
    un tres tres grand merci, je vais testé sa ce soir...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par gofono_bass
    mmouais .. t'as du boulot devant toi encore pour faire ça!

    regarde, comme le suggere Sion_Sempai, la lecture de fichiers, et les sessions aussi pour pouvoir garder la langue pendant toute la durée de la visite du site.
    en fait il est vrai qu'il n'y a pas besoin de tout stocker en base de donnée
    Je parlais de cette solution parce qu'en fait la seule fois où j'ai eu a faire a un cas de site multilangue, c'etait un site que l'utilisateur pouvais modifier a souhait, donc forcement

    Si tu es seul maître du texte de ton site, pas besoin de se casser la tete avec la base de donnée ^^

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Le problème de la solution qui utilise une BDD, c'est que cela oblige à adopter un schéma de BDD un peu foireux.
    L'avantage des fichiers est leur rapidité de lecture et la simplicité d'utilisation.

    Bonne chance !

  11. #11
    HwRZxLc4
    Invité(e)
    Par défaut
    J'ai testé, et ben la faute a pas de bol sa fonctionne pas

    ce que j'ai dans mon index.php

    <body>
    <a href="index.php?lang=fr"><img src="Belgique.jpg" width="49" height="32" border="0" alt=""></a>
    <a href="index.php?lang=en"><img src="en.png" width="49" height="32" border="0" alt=""></a>
    <?php
    include_once("$lang".$_SESSION['lang'].".php");
    $_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr";
    $lang=$_SESSION['lang'];
    echo $lang['access_denied'];
    ?>
    </body>

    et dans le fichier fr par exemple

    error_reporting(E_ALL& ~E_NOTICE);
    global $lang;
    $lang = array();

    //This needs to match the listing type that you are using as Rental
    $lang['access_denied'] = "Accès refusé";

    et a l'écrand, j'ai le contenu de fichier fr.php plus la fremière lètre (f) qui ce trouve dans la ligne <a href="index.php?lang=fr">, si je clique sur en, j'ai comme ltre e a la place du f.


  12. #12
    HwRZxLc4
    Invité(e)
    Par défaut
    Y a personne pour une tit solution pour moi

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Tu as inversé ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include_once("$lang".$_SESSION['lang'].".php");
    $_SESSION['lang']=isset($_GET['lang'])?$_GET['lang']:"fr";
    Je te recommande vivement de tester la présence de $_GET['lang'] dans une liste blanche, sur ce principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $langues = array('fr', 'en', 'de');
    if(!empty($_SESSION['lang']) and in_array($langues, $_SESSION['lang'])){
       $_SESSION['lang'] = $_GET['lang'];
    }
    else{
       $_SESSION['lang'] = 'fr';
    }
    include_once('lang/'.$_SESSION['lang'].'.php');
    Fais attention à ta variable $lang : tu sembles l'utiliser pour 3 choses différentes !

    De plus, avec cette ligne, tu annules l'effet de l'include() précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lang=$_SESSION['lang'];
    Je te recommande de ne pas la mettre du tout.


    Essaie de prendre du recul par rapport à ce que nous te proposons car nous ne te donnerons pas de solutions toutes faites, plutôt des pistes pour t'orienter dans la bonne direction.
    En l'occurence, ta variable $lang est systématiquement mal utilisée. Essaie de réfléchir à son utilisation et à ne l'utiliser qu'après l'avoir initialisée.

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Cette méthode des variables est excellente pour une application, c'est à dire pour des messages courts et peu nombreux.
    Si ton site est un site de contenus, avec des articles, textes..., je pense à 2 autres solutions :
    1) les textes stockés en bdd
    2) une page différente par langue.
    Pour choisir la langue, tout a été dit plus haut.

  15. #15
    HwRZxLc4
    Invité(e)
    Par défaut
    Sa fonctionne nikel, merci pour cette aide...

Discussions similaires

  1. Méthode pour lancer une appli Java au démarrage
    Par Bridou dans le forum Linux
    Réponses: 2
    Dernier message: 11/11/2006, 15h40
  2. Recherche méthode pour formater une chaine pour JS
    Par mittim dans le forum Langage
    Réponses: 1
    Dernier message: 05/09/2006, 10h04
  3. Méthode pour dimensionner une architecture ?
    Par ericlemoustic dans le forum Autres
    Réponses: 3
    Dernier message: 11/05/2006, 16h14
  4. Méthode pour marquer une carte
    Par Space Cowboy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 27/03/2006, 13h15
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

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