2012-03-06 7 views
7

J'ai besoin d'extraire les messages des fichiers .po. Y a-t-il un module python pour faire ça? J'écris un analyseur, mais cela dépend de la plate-forme (comme \ r \ n, \ n), alors peut-être y a-t-il un moyen normal de le faire?analyse des fichiers gettext .po avec python

Répondre

0

Babel comprend un analyseur de fichiers .po écrit en Python:

http://babel.edgewall.org/

Le module gettext intégré fonctionne uniquement avec des fichiers binaires .mo.

-2

Utilisez le module builtin gettext: http://docs.python.org/library/gettext.html

Il est apparu pour moi que le premier résultat de recherche dans Google après avoir fourni python gettext. Si vous vous demandiez si c'est ce que vous avez cherché, alors oui, c'est.

+1

'gettext' est génial, mais il ne fonctionne qu'avec les fichiers compilés' mo', pas de texte clair ONES 'po' – MestreLion

17

Dans la plupart des cas, vous n'avez pas besoin d'analyser vous-même les fichiers .po. Les développeurs donnent aux traducteurs un fichier modèle .pot, ils le renomment en xx_XX.po et traduisent les chaînes. Ensuite, vous en tant que développeur il suffit de « compiler » qu'ils .mo fichiers à l'aide gettext outils GNU (ou son implémentation Python, pygettext)

Mais, si vous voulez/besoin d'analyser le po-vous des fichiers, au lieu de les compiler, je vous suggère fortement d'utiliser polib, une bibliothèque python bien connue pour gérer les fichiers po. Il est utilisé par plusieurs projets de grande envergure, tels que Mercurial et le moteur de traduction Launchpad Ubuntu:

maison paquet PyPI: http://pypi.python.org/pypi/polib/

référentiel de code: https://bitbucket.org/izi/polib/wiki/Home

Documentation: http://polib.readthedocs.org

Le module d'importation est un fichier unique, avec une licence MIT, donc vous pouvez facilement l'incorporer dans votre code comme ceci:

import polib 
po = polib.pofile('path/to/catalog.po') 
for entry in po: 
    print entry.msgid, entry.msgstr 

Il ne peut pas être plus facile que cela;)

+1

de @saeedgnu: vous pourriez peut-être aider à l'améliorer? 'polib' est la bibliothèque la plus utilisée pour manipuler les fichiers po, et elle est activement maintenue, donc toutes les améliorations bénéficieront à un * lot * de logiciels. – MestreLion

+0

Je pense que ça devait être ainsi, le programme qui l'utilise peut ajouter des entrées après chargement du fichier po (ou création d'un nouvel objet pofile), tout est en mémoire – saeedgnu

Questions connexes