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 :

[Tableaux] Internationaliser un script php/html [Fait]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 43
    Points
    43
    Par défaut [Tableaux] Internationaliser un script php/html
    Hello,

    J'ai un petit script en html et php dont je voudrais y mettre deux langues possibles.

    Actuellement, l'anglais est affiché par défaut, et par un jeu de masquage/affichage en css/javascript, on peut sélectionner le français ou l'anglais en cliquant sur une icone... pas très pratique.

    - comment optimiser tout cela avec un système simple de clés de langues?
    - comment diriger l'internaute sur son language (selon la localisation) directement lorsqu'il arrive sur la page?

    ++

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Personnellement, je m'étais inspiré de ce que faisait phpbb (v2), à savoir un fichier pour chaque langue contenant le tableau de mes traductions.
    Par exemple:
    lang_fr.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $langue['welcome']="bienvenue";
    lang_en.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $langue['welcome']="welcome";
    Ensuite pour detecter la langue, je me servais de la variable serveur HTTP_ACCEPT_LANGUAGE , qui , par une fonction, me permettait de définir la langue à appliquer. En gros, si HTTP_ACCEPT_LANGUAGE renvoit fr alors j'inclue le fichier "lang_fr.php", sinon "lang_en.php" .

    Ensuite dans le code, tu remplaces tout les textes par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $langue['la_variable_pour_le_texte'];

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    merci

    j'ai encore quelques questions:
    - comment intégrer les deux fichiers de langue dans le code php?
    - comment intégrer la possibilité de changer de langue en cours de navigation?

    mes codes actuels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $lang=substr($_ENV['HTTP_ACCEPT_LANGUAGE'],0,2);
    switch ($lang)
    {
    case "fr":
    $session[language]=1;
    break;
    case "en":
    $session[language]=2;
    break;
     
    default :
    $session[language]=2;
    }
    mon truc actuel (du js + du css, anglais se met par défaut)
    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
    <div id="header">
     
    <p>
    <a class="no" href="#" onclick="montre('langue1');">
    <img src="images/en.png" alt="en" />
    </a>
    <a class="no" href="#" onclick="montre('langue2');">
    <img src="images/fr.png" alt="fr" />
    </a>
    </p>
     
    <h1>
    <span class="langue1">Download!</span>
    <span class="langue2">Téléchargez!</span>
    </h1>
     
    </div>

  4. #4
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    Je verrai qq chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($session[language]==1)
    include(lang_fr.php);
    else ...
    ensuite tu fais qu'un seul span
    <span class="langue1"><?=$langue["telechargez"]?>span>

  5. #5
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 464
    Points : 4 646
    Points
    4 646
    Par défaut
    salut,

    juste 2 question Raideman :
    1) tes arrays sont-ils surénormes ? (je crois que oui ^^)
    2) est-ce pour traduire des page ou juste des grandes lignes

    si c'est pour traduire des pages entières ton system ateint ses limites asser rapidement :
    "i love you" deviendrais "je aime tu" (si j'ai bien compris)

    je dirais qu'il serait peu etre plus efficasse de faire 2 fois ton site (copié/collé) un en anglais l'autre ne francais ... (mais peu etre que je me trompes)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Bonsoir,
    Pour ma part, je fais un mix de plusieurs solutions.

    Je récupère la langue en fonction de celle du navigateur.

    Pour tout ce qui est interface, je fais comme Raideman.

    Pour tout ce qui est contenu, je le stock en base avec une table spécifique par langue.
    Par exemple, j'aurais une table nommée 'table_fr' et une autre nommée 'table_en', et toutes les deux auront strictement les mêmes champs.

    Pour changer en cours de visite, il suffit de mettre un lien (genre un drapeau) comme ceci (sans la balise image car j'ai la flemme...) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo $_SERVER['REQUEST_URI']; ?>&amp;lang=en">En anglais</a>
    et en début de page, on vérifie la langue, et si changement on redéclare la variable de session :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    session_start();
    if(isset($_GET['lang']) && trim($_GET['lang']) != '' && strlen($_GET['lang']) == 2){
      $_SESSION['lang'] = $_GET['lang'];
    }
    if(!isset($_SESSION['lang'])){
      $_SESSION['lang'] = 'fr';  // par défaut...
    }

    Et voilà !
    Maintenant, je vous renvoie au très bon tuto de Vincent Flauder sur l'internationalisation d'une site avec PHP et XML pour aller plus loin..

    A+
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Citation Envoyé par DEMMOTTE Voir le message
    salut,

    juste 2 question Raideman :
    1) tes arrays sont-ils surénormes ? (je crois que oui ^^)
    2) est-ce pour traduire des page ou juste des grandes lignes

    si c'est pour traduire des pages entières ton system ateint ses limites asser rapidement :
    "i love you" deviendrais "je aime tu" (si j'ai bien compris)

    je dirais qu'il serait peu etre plus efficasse de faire 2 fois ton site (copié/collé) un en anglais l'autre ne francais ... (mais peu etre que je me trompes)
    Excuse moi pour le retard de ma réponse, je viens à peine de retomber sur ce topic.
    1) Mes "array" ne sont pas surénormes, mais évidemment, tout dépend du portail que tu développes. Si tu stockes tes données en dur (sans bdd), et que tu as plusieurs centaines de page sans contenu similaire, oui le tableau devient grand mais dans la plupart des cas, celà suffit. Dans mon cas, j'ai mis cette solution en oeuvre sur un site de location de biens immobiliers et au final, j'ai un tableau à un peu plus de 100 entrées et il se charge sans problèmes.

    2)Disons que je traduis seulement le texte non dynamique (ce que j'appelle "en dur"). Tout ce qui est dynamique je le mets en base de données et la traduction est faite par l'administrateur du site lorsqu'il ajoute des nouvelles entrées dans la base. Donc au final j'ai des champs propres à la langue fr et d'autres propres à la langue anglaise dans mon cas. (comme dans la solution proposée par mathieugamin)

    Quant à la solution de faire un copié collé, disons que trouve ça horrible à maintenir et des que y'a de la base de données, c'est délicat. Par contre, mais là ca dépend de la stratégie, tu peux faire deux portail chacun dans une langue si le contenu proposé est différent. Par exemple dans mon cas, si j'avais fait la distinction entre des locations destinés seulement à des anglophones et d'autres à des francophones, j'aurais fait deux portails différents.

  8. #8
    Membre confirmé Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Points : 627
    Points
    627
    Par défaut
    Citation Envoyé par Raideman Voir le message
    Quant à la solution de faire un copié collé, disons que trouve ça horrible à maintenir
    +1, surtout quand le nombre de pages devient vraiment conséquent....

    La traduction des sites est un sujet toujours un peu délicat, notamment quand on utilise un seul site mais que le contenu des pages sont différents...
    GAMIN !!!!
    _______________________________________________
    PHP 5.2 | Apache 2 | MySQL 5 | WinXP Pro | Mac OSX

  9. #9
    Membre actif
    Inscrit en
    Février 2006
    Messages
    522
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 522
    Points : 282
    Points
    282
    Par défaut
    En déclarant x "classes" langues c'est mieux ou moins bien que les array?

    Dans chaque "classe", il y aurait que des variables de type texte.

    et ensuite selon la langue on instancie une classe ou l'autre ?

    Je ne sais pas si c'est mieux que le tableau j'avoue :p

Discussions similaires

  1. Script php + html
    Par Boubou382002 dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2009, 23h33
  2. Réponses: 1
    Dernier message: 21/11/2007, 09h04
  3. Réponses: 5
    Dernier message: 21/02/2006, 19h21
  4. Appeler une fonction d'un script PHP depuis HTML
    Par barthelv dans le forum Langage
    Réponses: 31
    Dernier message: 27/12/2005, 11h25
  5. [Sécurité] Script PHP pour valider du HTML
    Par marcha dans le forum Langage
    Réponses: 2
    Dernier message: 06/11/2005, 14h57

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