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

JavaScript Discussion :

Structure pour multi-langue


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Par défaut Structure pour multi-langue
    Bonjour à tous,

    je dois créer plusieurs sites web PHP et je me pose une question pour structurer mon code proprement pour javascript / ajax.

    J'ai 2 folders :
    ajax : qui contient les fichiers php qui vont communiquer avec la D.B.
    js : qui contient mes fichiers javascript
    --------------------------------

    Je vais prendre comme exemple le cas d'un formulaire ou on doit ajouter une nouvelle catégorie, (pas de doublon sur le nom).



    dans mon fichier js, j'ai une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function categoryAdd(nom)
    {
         // appel avec jquery de mon fichier php, le résultat va se mettre dans ma variable retour
     
    ensuite :
     
    switch(retour){
      case "1" : getId('message') = 'Catégorie ajouté';
      case "2" : getId('message') = 'Catégorie déja existante';
    }
     
    // getId est une function que j'ai créer pour changer le contenu d'un div
    }
    le problème dans cet exemple, est vous l'avez compris, le texte est en français dans cette fonction.
    Si le site est en 8 langues différentes, je ne vais pas m'amuser à créer 8 fichier js différents, surtout dans le cas ou je devrais modifier une function javascript je devrais faire à chaque faire 8 fois le travail.

    Je me demandais donc si quelqu'un à déja été dans mon cas, tout en gardant mon code javascript dans un fichier séparé.

    Merci d'avance :-)

  2. #2
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut
    oui effectivement, je suis dans ton cas, bon, je n'ai que trois langue, mais le principe est le même :

    j'ai une variable de session qui contient un indicateur de la langue en cours, ensuite, tous les textes qui sont a traduire sont stockés en tête de fichier

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($_SESSION['langue_en_cours']="fr") {
      $texte_a='Mon texte français';
    }
    if ($_SESSION['langue_en_cours']="en") {
      $texte_a='My english text';
    }
    etc...


    dans un premier temps, pour la facilité du développement, je fonctionne de cette manière, une fois finis, alors je cré une base de donnée pour stocker tout ça

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Par défaut
    salut,

    oui biensur je comprend ce que tu peux dire,

    mais une petite astuce que je peux te donner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($_SESSION['langue_en_cours']="fr") {
      $texte_a='Mon texte français';
    }
    if ($_SESSION['langue_en_cours']="en") {
      $texte_a='My english text';
    }
    c'est pas l'idéal des IF dans un fichier

    moi j'ai un folder LANGUE qui contient les fichier php de langue (avec des define)
    et au début des fichiers php je fais l'include du bon fichier

    et là ou je dois afficher le texte traduit c'est plutot :
    -------------------

    mais pour en revenir à mon soucis, tu vois, mes fonctions javascript se trouve dans un fichier .js
    et évidement je ne peux pas utiliser de code php dans un fichier .js
    ça ne vas pas l'interpréter.
    Tu comprend ?

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Une solution: transformer ton fichier js en fichier PHP dans lequel tu externalises les textes à traduire vers un fichier de langue à inclure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="js/fichier_js.php?lang=fr" type="text/javascript"></script>
    dans fichier_js.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $langage = $_GET["lang"];
    include_once("lang/lang_$langage.inc");
    ?>
    switch(retour){
    case "1" : getId('message') = '<?= $msg["add_cat_ok"] ?>';
    case "2" : getId('message') = '<?= $msg["add_cat_err"] ?>';
    }
    ...
     
    ?>
    et lang_fr.inc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $msg["add_cat_ok"]="Catégorie ajouté";
    $msg["add_cat_err"]="Catégorie déja existante";
    //ensuite les autres textes concernés par les autres scripts: 
    ...
     
    ?>
    puis lang_en.inc, etc...
    Au final un seul fichier à traduire pour tous les messages.

    ERE

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 61
    Par défaut
    si c'est possible,

    j'ai de nombreuses fonction javascripts qui se generent grace au php

    change l'extension de ton fichier par php

    ou bien integre ta fonction js dans ton fichier php

    enfin bref je vais pas t'apprendre comment faire, je suis sur que tu sais déjà

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Par défaut
    alors là je dis chapeau !

    c'est vrai que c'est beaucoup mieux comme ça

    mais une petite question au niveau du cache

    les fichier .js (le mien ici fait déja 2.500 lignes, 70 ko) se télécharge une fois et puis reste dans le cache

    mais dans ce cas, si je change l'extension en .php, ça va toujours retélécharger l'intégralité du fichier ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Par défaut
    une autre solution que je viens de penser

    est de supprimer le
    switch(retour) de la fonction js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function categoryAdd(nom)
    {
    // appel en jquery, mettre le résultat dans retour
     
    displayMessage(retour);
    }
    et la fonction displayMessage se trouve dans le head de chaque page php, codé en fonction du message à envoyé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function displayMessage(retour)
    {
    switch(retour){
       case "1" : getId('message') = '<?=ADD_OK?>';
       case "2" : getId('message') = '<?=ADD_PAS_OK?>';
    }
    }
    ça permet de garder un seul fichier .js et de mettre uniquement une fonction en plus

  8. #8
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    mais dans ce cas, si je change l'extension en .php, ça va toujours retélécharger l'intégralité du fichier ?
    Non il restera en cache.

    ERE

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

Discussions similaires

  1. Structure d'un site multi-langue
    Par afrosimon dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 15/08/2009, 00h29
  2. [SP-2007] Package multi-langues pour MOSS
    Par gracouille dans le forum SharePoint
    Réponses: 2
    Dernier message: 03/06/2009, 13h25
  3. Réponses: 4
    Dernier message: 28/05/2009, 10h11
  4. Support pour multi langue.
    Par sboffin dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/03/2008, 15h31
  5. Utilisation XML/XSL pour un site multi langues
    Par bigsister dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 22/01/2007, 16h36

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