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 :

Créer un fichier de langue pour les expressions usuelles


Sujet :

Langage PHP

  1. #1
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut Créer un fichier de langue pour les expressions usuelles
    Bonjour à tous.

    Je cherche pour mon site à créer des fichiers (un par langue) contenant la traduction des expressions usuelles sur mon site (download, mentions légales, ...) un peu à la manière de SPIP.
    Cela me permettrait d'épurer mon code qui est pour l'instant plein de conditions en fonction de la langue choisie.

    Dand l'idéal, j'aimerait pouvoir mettre une 'expression' du genre :dl:, et qu'il me le remplace tout seul en fonction de la langue choisie en allant piocher dans le bon fichier.

    Mon soucis est que je ne sait pas du tout comment lui faire "parser" mes fichiers PHP une première fois pour faire les remplacement avant de me renvoyer le résultat qu client.

    Si vous avez des idées, je suis preneur ;-)

    Merci d'avance

  2. #2
    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

    Connais-tu l'extension gettext() ?
    Le sujet a été évoqué ici.

  3. #3
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Sinon ce que j'ai vu pour un site, il utilisait l'héritage
    il y avait une classe principale avec le texte comme attribut
    par exemple
    var $nom = nom;

    et pour les autres language il héritait de cette classe et l'attribut $this->nom devenenait :
    $this->nom = "name";

    ensuite selon la langue il faisait un include du fichier correspondant a la langue et pour afficher le texte il faisait
    echo $lang->nom;

    J'ai trouve le principe correcte, donc si ca peut t'inspirer.

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Merci à vous deux pour ces pistes

    Je vais de ce pas me pencher dessus, mais gettext me semble bien contraignant ...

    Merci encore :-)

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Donc je suis passé par les tableaux :

    fichier fr.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $traduction = array(
        'accueil' => 'accueil',
        'cond_sce' => 'Conditions de service'
    );
    ?>
    en.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $traduction = array(
        'accueil' => 'home',
        'cond_sce' => 'terms of use'
    );
    ?>
    index.php (en fonction de la langue, j'inclus un des deux fichier de langue)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo $traduction['accueil'];
    ?>
    Ca marche très bien ainsi, mais l'appel de echo $traduction['accueil']; est un peu lourd... n'y aurait-il pas moyen de le "remplacer" par un #accueil# ou toute autre formulation 'simple' ?

    Merci d'avance

  6. #6
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    je pense que c'est possible de mettre #montexte# mais on moment de l'affichage, il te faudrait tout le texte pour les retrouver, trouver leur equivalence, et remplacer. Donc la dessus faudra jouer sur les expressions regulieres.

  7. #7
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    chic, que des choses que je ne connait pas :o)

    je vais donc regarder comment exécuter mon php, récupérer son exécution dans une variable, puis le parser

    Merci à tous.

  8. #8
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Perso je passerais par des fichiers de langue contenant un tableau de mes expressions, puis en fonction de la langue choisie je chargerais le fichier correspondant.

    Puis avec un simple sprintf sur la valeur de l'expression lorsque celle-çi est complexe, ou un echo lorsque celle-çi est simple.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Et avec un fichier de constante par langue ?

    Fichier "constante_inc_fra.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    define("__Nom","nom");
    define("__Prenom", "prénom");
    ..
    .
    Fichier "constante_inc_eng.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    define("__Nom","name");
    define("__Prenom", "first name");
    ..
    .
    Et dans ta page php tu charges avec include_once

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include_once '/chemin/constante_inc_' . $LANGUE_SELECTIONNE . '.php';
    et apres l'include tu peux faire ..

    echo __Nom;

  10. #10
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    effectivement, ta solution me plait bien :-)

    je ne m'était jamais servi des constantes, mais ca semble correspondre parfaitement à mon besoin :-)

    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/01/2008, 12h49
  2. Réponses: 14
    Dernier message: 10/04/2007, 07h59
  3. Partage de fichier : Marche sauf pour les exe
    Par JolyLoic dans le forum Windows XP
    Réponses: 2
    Dernier message: 27/08/2006, 17h24
  4. pb avec le fichier de def pour les tiles
    Par benoizette75 dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/08/2006, 09h09
  5. Réponses: 7
    Dernier message: 21/05/2004, 17h13

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