2012-03-06 43 views
7

Necesito extraer mensajes de los archivos .po. ¿Hay un módulo de python para hacer eso? Escribo un analizador sintáctico, pero depende de la plataforma (como \ r \ n, \ n), así que tal vez haya alguna manera normal de hacerlo.analizando archivos gettext .po con python

Respuesta

0

Babel incluye un analizador de archivos .po escrito en Python:

http://babel.edgewall.org/

El módulo incorporado gettext sólo funciona con archivos .mo binarios.

-2

Uso módulo de gettext orden interna: http://docs.python.org/library/gettext.html

Apareció por mí como el primer resultado de búsqueda en Google después de proporcionar python gettext. Si te preguntaste si esto es lo que buscaste, entonces sí, así es.

+1

'gettext' es impresionante, pero sólo funciona con archivos compilados' mo', no sin formato de texto 'queridos po' – MestreLion

17

En la mayoría de los casos, no necesita analizar los archivos .po usted mismo. Los desarrolladores dan a los traductores un archivo de plantilla .pot, lo renombran a xx_XX.po y traducen las cadenas. A continuación, como desarrollador sólo tiene que "compilar" a .mo archivos usando gettext herramientas de GNU (o su aplicación Python, pygettext)

Pero, si quieres/necesidad de analizar archivos de la po ti mismo, en lugar de compilar ellos, Le sugiero encarecidamente que use polib, una conocida biblioteca de python para manejar los archivos po. Es utilizado por varios proyectos a gran escala, como Mercurial y de Ubuntu motor de traducción Launchpad:

paquete PyPi casa: http://pypi.python.org/pypi/polib/

Código repositorio: https://bitbucket.org/izi/polib/wiki/Home

Documentación: http://polib.readthedocs.org

El módulo de importación es un archivo único, con licencia MIT, por lo que puede incorporarlo fácilmente en su código de esta manera:

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

No puede ser más fácil que eso;)

+1

@saeedgnu: Tal vez usted podría ayudar a mejorarlo? 'polib' es la biblioteca más utilizada para manipular archivos po, y se mantiene de forma activa, por lo que cualquier mejora beneficiará a un * lote * de software – MestreLion

+0

Creo que fue así, el programa que lo usa puede agregar algunas entradas después cargando archivo po (o creando un nuevo objeto pofile), todo está en la memoria – saeedgnu

Cuestiones relacionadas