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 :

gettext : parser un fichier INI


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Points : 95
    Points
    95
    Par défaut gettext : parser un fichier INI
    J'ai un projet en PHP5 / MVC
    J'utilise gettext avec PoEdit pour parser les sources pour l'i18n. ca mache nickel.
    La où ca se complique :
    Je souhaite, pour mes classes de vues, placer certaines valeurs dans un fichier INI. Ca fonctionne tres bien pour tout, sauf ce qui concerne les titre de vue, labels de boutons HTML, bref tout ce qui touche a la langue.
    La est mon probleme.
    J'aimerais placer les titres de mes vues dans le fichier INI
    mais je ne vois pas comment faire pour que gettext parse mon fichier INI et extraie les titres, labels de boutons, etc.. a traduire.
    Le seul moyen que je vois pour l'instant c'est d'abandonner le format INI et faire un tableau de config PHP que gettexte pasera sans probleme.

    une solution ?
    merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    utilise autre chose que gettext, pour parser les ini y'a parse_ini_file

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Points : 95
    Points
    95
    Par défaut
    le parsage du INI ne pose aucun probleme.
    J'utilise parse_ini_file().
    Mon probleme c'est que je veux mettre des expression en francais dans mon INI mais gettext ne va pas les parser pour les ajouter a son dictionnaire .po
    puisque c'est un .ini et pas un .php.
    A moins que j'arrive a forcer le parsage du .INI et que je mette dedans des expression du type :

    [views]
    myView.title = _('le titre de la vue')

    est ce plus clair ?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est a faire dans ta function pour récupérer le ini ça

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Points : 95
    Points
    95
    Par défaut
    en fait faut que les expression gettext soient écrite en dur dans un fichier parsable par le moteur gettext.
    Ca peut pas etre dynamique (ou alors j'ai une connaissance limitée de gettext)

    Je cite l'exemple d'un conteneur statique au format INI mais ca pourrait tout aussi bien etre un YAML ou XML.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est à toi de faire un adaptateur prévu pour, et de passer pas une autre fonction que directement gettext

    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [views]
    myView.title = 'le titre de la vue'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function _ini($text)
    {
        $ini = parse_ini_file('truc.ini');
        return _($ini->myView->title);
    }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Points : 95
    Points
    95
    Par défaut
    Tu utilise gettext ?
    les expression ajoutées au fichier .po sont uniquement celles contenues dans un fichier PHP, marquées en tant que argument de la fonction native '_()'
    Il faut que ces expression existent en dur. dans le fichier a parser (parser au sens du moteur gettext, pas au sens du parsage INI)
    En gros il faudrait que le mtoeur gettext puisse aussi parser d'autres fichiers que des .php
    Je vais voir , simplement en changeant l'extension du .ini en .php, si moteur peut le parser. Puis ensuite je remet l'extension .ini

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    mais non gettext accepte aussi les variables heureusement d'ailleurs...
    rien ne t’empêche de faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $msg = 'le titre de la vue';
    echo _($msg);

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Points : 95
    Points
    95
    Par défaut
    oui bien sur que gettext accepte les variables.
    Mais la question avant tout est : comment ajouter la valeur 'titre de ma vue' au dictionnaire du .po ?

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est pas du-tout le but de gettext, php ne compile pas les .po, c'est a toi des les rajouter dans ton logiciel, ou alors utilise un autre systeme

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Points : 95
    Points
    95
    Par défaut
    en effet :
    le moteur gettext parse les sources PHP et ajout les expressions dans le dictionnaire .po et compile le .po en .mo.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 87
    Points : 95
    Points
    95
    Par défaut
    Je vais tenter d’être plus clair :

    j'ai donc créé une classe FooView
    dans laquelle y a un membre nommé $titre

    Je crée la valeur du titre dans mon fichier INI :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [views]
    FooView.titre = _('Bienvenue);
    qui sera chargé tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class FooView
    { 
       private $titre;
       public function setTitre()
       {
          $this->titre = _( IniConfig::get(__CLASS__, 'titre') );
       }
     
    }
    Je charge PoEdit, je met a jour le catalogue
    il ne me trouve aucune expression a ajouter dans son dictionnaire.

    Pour aller jusqu'au bout de la problématique,
    je transpose la config du fichier INI dans un tableau classique PHP.
    Et la bien sur PoEdit trouve de nouvelles entrées.

    Conclusion : je n'ai aucun moyen d'ajouter dans le dictionnaire .po des expressions issues d'un fichier INI.
    Ça marche qu'avec des fichier .php

    Y a t-il moyen de trouver une solution a ce problème ?
    merci

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FooView.titre = 'Bienvenue';

Discussions similaires

  1. Lecture d'un fichier ini et parser un fichier
    Par turbo_chess dans le forum C
    Réponses: 2
    Dernier message: 07/03/2009, 10h53
  2. Parser un fichier de configuration de type ini
    Par arnaudperfect dans le forum Débuter
    Réponses: 7
    Dernier message: 17/03/2008, 14h10
  3. Parser un fichier INI
    Par 78alex78 dans le forum Langage
    Réponses: 1
    Dernier message: 09/01/2007, 16h28
  4. Parser un fichier .ini
    Par t_om84 dans le forum Linux
    Réponses: 11
    Dernier message: 21/07/2005, 15h43
  5. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06

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