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

C++ Discussion :

A propos d'internationalisation


Sujet :

C++

  1. #1
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut A propos d'internationalisation
    Bonjour à tous

    Ce sujet est plus un débat qu'une question. Je voulais discuter d'internationalisation. Pas au sens "std::locale" du terme, mais au sens "gettext", je veux dire par là, gérer les fichiers de ressources, les charger/parser, etc.

    Gettext est assez répandu mais ne me plaît guère, pour les raisons suivantes:
    - Phase de "compilation" lourde et sans intérêt à mon sens
    - Pas de chargement dynamique de la langue (redémarrage obligatoire)
    - Multiplateforme pas top, je n'ai pas encore réussi à faire du gettext proprement dans un environnement purement windows.

    En fait, je trouve gettext un peu obsolète, comme le sont les autotools comparés à CMake (ou équivalent). On se prend pas mal le chou avec, pour une opération qui est structurellement parlant simple.

    N'existe-t-il pas un outil générique qui fait un travail similaire, uniquement dédié à cela (j'exclus par là les outils internes à certains frameworks comme Qt) ?

    Qu'en pensez vous ? Comment faites vous ?

    J'envisage pour l'instant m'écrire mon système maison et d'ouvrir le code pour ceux à qui ça pourrait servir.
    Find me on github

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Bonjour à tous

    Ce sujet est plus un débat qu'une question. Je voulais discuter d'internationalisation. Pas au sens "std::locale" du terme, mais au sens "gettext", je veux dire par là, gérer les fichiers de ressources, les charger/parser, etc.

    Gettext est assez répandu mais ne me plaît guère, pour les raisons suivantes:
    - Phase de "compilation" lourde et sans intérêt à mon sens
    Quelle phase de compilation ? Celle qui te sors toutes le chaines que tu as défini ? Je ne considère pas ça comme étant sans intérêt, puisque du coup, tu n'as pas besoin de le faire à la main. C'est plutôt une bonne chose, non ?
    Citation Envoyé par jblecanard Voir le message
    - Pas de chargement dynamique de la langue (redémarrage obligatoire)
    C'est possible (encore que j'ai un doute). Si tu le faisais - dans une application GUI - comment t'y prendrais tu pour que ça soit multiplateforme ?

    Citation Envoyé par jblecanard Voir le message
    - Multiplateforme pas top, je n'ai pas encore réussi à faire du gettext proprement dans un environnement purement windows.
    La lib est multiplateforme. Par contre, elle se base sur la locale courante. Et le format des noms de locale n'est pas le même sous Windows.

    Citation Envoyé par jblecanard Voir le message
    En fait, je trouve gettext un peu obsolète, comme le sont les autotools comparés à CMake (ou équivalent). On se prend pas mal le chou avec, pour une opération qui est structurellement parlant simple.
    Pour avoir travaillé le sujet il y a quelques années, je peux t'assurer que c'est tout sauf simple. Et que l'interface de gettext est l'une des meilleures.

    Citation Envoyé par jblecanard Voir le message
    N'existe-t-il pas un outil générique qui fait un travail similaire, uniquement dédié à cela (j'exclus par là les outils internes à certains frameworks comme Qt) ?
    Pas à ma connaissance (mais en même temps, tout le monde utilise gettext)

    Citation Envoyé par jblecanard Voir le message
    Qu'en pensez vous ? Comment faites vous ?
    gettext

    Citation Envoyé par jblecanard Voir le message
    J'envisage pour l'instant m'écrire mon système maison et d'ouvrir le code pour ceux à qui ça pourrait servir.
    C'est une valeureuse initiative. Je te souhaite de réussir.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    - Pas de chargement dynamique de la langue (redémarrage obligatoire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setlocale(LC_MESSAGES, ...);
    ne change pas la langue?

    On se prend pas mal le chou avec, pour une opération qui est structurellement parlant simple.
    J'ai l'impression qu'ou tu sous-estimes la complexite de la chose, ou tu ne l'envisages pas dans son ensemble.

    N'existe-t-il pas un outil générique qui fait un travail similaire, uniquement dédié à cela (j'exclus par là les outils internes à certains frameworks comme Qt) ?
    Le C++ a une interface pour ca dans <locale> et POSIX a un systeme aussi, mais je ne les ai jamais vu utilises, gettext etant en pratique nettement mieux...
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Quelle phase de compilation ? Celle qui te sors toutes le chaines que tu as défini ? Je ne considère pas ça comme étant sans intérêt, puisque du coup, tu n'as pas besoin de le faire à la main. C'est plutôt une bonne chose, non ?
    Celle la oui, mais je parlais de la génération des msg catalog. Il me paraît logique d'ajouter ça à ma chaîne de compilation et de ne pas versionner les catalogues. Je n'y arrive pas autrement qu'en faisant une sorte de "exec(commande système)", et je ne trouve pas ça très propre.

    De plus je ne sais pas comment installer les commandes correspondantes sur windows sans gettext for win32 (http://gettext.sourceforge.net/) et la dernière release date de 2004. J'ai tendance à me méfier des outils qui n'ont pas l'air maintenus. Je veux éviter d'utilise MinGW si possible.

    Citation Envoyé par Emmanuel Deloget Voir le message
    C'est possible (encore que j'ai un doute). Si tu le faisais - dans une application GUI - comment t'y prendrais tu pour que ça soit multiplateforme ?
    Effectivement, il faut reconstruire la GUI. Soit redémarrer le soft pour la plupart. Je n'avais pas bien réfléchi à ça.

    Citation Envoyé par Emmanuel Deloget Voir le message
    La lib est multiplateforme. Par contre, elle se base sur la locale courante. Et le format des noms de locale n'est pas le même sous Windows.
    Ca c'est pas très grave, on doit pouvoir s'en tirer avec des define ou bien std::locale.

    Citation Envoyé par Emmanuel Deloget Voir le message
    Pour avoir travaillé le sujet il y a quelques années, je peux t'assurer que c'est tout sauf simple. Et que l'interface de gettext est l'une des meilleures.
    Merci c'est ce genre de retour que je cherche. Mais qu'en est il maintenant ? Est ce toujours bien maintenu ?

    Au final, c'est vraiment le premier point (de ce message) qui me gêne encore.
    Find me on github

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Merci c'est ce genre de retour que je cherche. Mais qu'en est il maintenant ? Est ce toujours bien maintenu ?
    Tu sais, tout ce sur quoi on travaille n'est pas nécessairement open source
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Tu sais, tout ce sur quoi on travaille n'est pas nécessairement open source
    D'accord, alors rajoutons une contrainte Je cantonne le débat aux outils open source !
    Find me on github

  7. #7
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    Je suis assez d'accord avec jblecanard: c'est une problématique plutôt simple, qui n'a curieusement pas à ma connaissance de solution standard (au sens où cela pourrait être inclus dans le standard du C++, par exemple).

    Nous n'utilisons pas gettext, pour les raisons citées mais aussi pour des raisons de licence, et parce que cela ne permet pas de paramétrer la disposition graphique des éléments de l'UI qui sont parfois affectés par la langue choisie (par exemple par le sens d'écriture). Nous avons en interne une petite infrastructure qui nous permet sans problème ceci en plus du reste attendu d'une lib d'internationalisation, validée sur les distributions asiatiques et cyrilliques/arabiques. Le chargement est dynamique, ce qui ne sert effectivement à rien pour le client mais est extrêmement utile pour les traducteurs et les développeurs. La totalité couvre moins de 2k lignes, et se trouve être mono-plateforme de par notre métier (embarqué), mais il n'y aurait pas de difficulté particulière à cibler par exemple Cocoa au lieu de VCL.

    La solution dont je parle est en place depuis 8 ans, et passe tr_s bien l'épreuve du temps et des changements d'équipe. Je pense donc qu'il est tout à fait viable de développer un outil spécifique léger.
    "Maybe C++0x will inspire people to write tutorials emphasizing simple use, rather than just papers showing off cleverness." - Bjarne Stroustrup
    "Modern C++11 is not your daddy’s C++" - Herb Sutter

  8. #8
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Cette discussion (a laquelle j'ai participé) a propos de Boost::Locale (qui n'est pas dans boost, future candidate) pourrait t'interesser :
    http://groups.google.com/group/boost...8f6310de0ca1a8

  9. #9
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par ac_wingless Voir le message
    Je suis assez d'accord avec jblecanard
    Je me disais bien que je ne devais pas être le seul !

    Citation Envoyé par ac_wingless Voir le message
    La totalité couvre moins de 2k lignes.
    Voilà qui est encourageant, surtout que je ne vise en rien l'embarqué et que par conséquent, je ne me gênerais pas pour utiliser boost à fond si j'écrit quelque chose. Je dis bien si car mon but est quand même de trouver quelque chose de tout fait.

    Edit: Je vais lire ton lien Klaim.
    Find me on github

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par ac_wingless Voir le message
    Je suis assez d'accord avec jblecanard: c'est une problématique plutôt simple, qui n'a curieusement pas à ma connaissance de solution standard (au sens où cela pourrait être inclus dans le standard du C++, par exemple).
    La facette std::message<> est équivalente à gettext, sans les outils pour les traducteurs.

    Citation Envoyé par ac_wingless Voir le message
    Nous n'utilisons pas gettext, pour les raisons citées mais aussi pour des raisons de licence, et parce que cela ne permet pas de paramétrer la disposition graphique des éléments de l'UI qui sont parfois affectés par la langue choisie (par exemple par le sens d'écriture). Nous avons en interne une petite infrastructure qui nous permet sans problème ceci en plus du reste attendu d'une lib d'internationalisation, validée sur les distributions asiatiques et cyrilliques/arabiques. Le chargement est dynamique, ce qui ne sert effectivement à rien pour le client mais est extrêmement utile pour les traducteurs et les développeurs. La totalité couvre moins de 2k lignes, et se trouve être mono-plateforme de par notre métier (embarqué), mais il n'y aurait pas de difficulté particulière à cibler par exemple Cocoa au lieu de VCL.

    La solution dont je parle est en place depuis 8 ans, et passe tr_s bien l'épreuve du temps et des changements d'équipe. Je pense donc qu'il est tout à fait viable de développer un outil spécifique léger.
    2K lignes de code pour un seul système, pour une seule GUI. Le développement d'un outil spécifique léger est toujours possible, à partir du moment où on maitrise bien tout ce qui a rapport avec les jeux de caractère (notamment les conversion UNICODE <--> non UNICODE qui peuvent se révéler nécessaire).

    Je n'ai pas dit que c'était infaisable - juste que ce n'était pas trivial. La création + mise au point de notre système nous a demandé 2 x 1 mois/homme, en prenant en compte la question de l'OS (à la base, WinNT4 English ; il a évolué vers Win2k Multilingual ; mais encore faut-il le configurer correctement...) (et deux fois parce que le premier batch a supporté précisait que le Russe, on s'en moquait et qu'on ne ferait jamais de produits en Russe ; et que le deuxième batch précisait que le Russe, on le voulait, vu qu'en fait on allait vendre des produits en Russie). C'est définitivement faisable, et à un coût correct - dès lors qu'on ne vise pas le multiplateforme (et qu'on ne s'attache pas trop à des problèmes de GUI multiplateforme ; à ce propos, GTK+ a Pango, qui est très bien pour le rendu multilingue - et qui n'a pas nécessairement besoin de GTK+).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  11. #11
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Ce que je comprend de tout ça, c'est qu'il n'y a quand même pas de consensus autour d'un outil donné !

    J'ai l'impression que le système des facettes imaginé par la lib standard est pas si mal pour ça. Non pas qu'il fournit des outils de base, mais il permet d'étendre avec du code maison ce qu'il y a déjà en créant des facettes, et donc de se donner la possibilité de supporter "à priori" n'importe quel dialecte pour peut qu'on dispose de quelqu'un qui puisse implémenter la facette correspondante.

    De plus std::message possède un wrapper sur gettext, ce qui permettrait apparemment de tourner sur une interface à base de std::message et de pouvoir choisir son backend de gestion de catalogue soi-même, et y compris d'implémenter le sien propre.
    Find me on github

Discussions similaires

  1. A propos depth buffer
    Par j.yves dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h41
  2. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22
  3. Fonctionnement de la compression DivX
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/09/2002, 14h10
  4. A propos du composant DBGrid
    Par _Rico_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/07/2002, 09h18
  5. [CR] internationalisation d'un report
    Par osoudee dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 24/06/2002, 16h54

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