Ho bisogno di estrarre messaggi dai file .po. C'è un modulo Python per farlo? Scrivo un parser, ma dipende dalla piattaforma (come \ r \ n, \ n), quindi forse c'è un modo normale per farlo?analizzando i file gettext .po con python
risposta
Babel include un parser file .po scritto in Python:
Il modulo incorporato gettext funziona solo con file .mo binari.
Usa modulo gettext integrato: http://docs.python.org/library/gettext.html
è apparso per me come il primo risultato di ricerca in Google dopo aver fornito python gettext
. Se ti chiedessi se questo è quello che hai cercato, allora sì, lo è.
Nella maggior parte dei casi non è necessario analizzare personalmente i file .po
. Gli sviluppatori danno ai traduttori un file modello .pot
, lo rinominano in xx_XX.po
e traducono le stringhe. Allora voi come sviluppatore deve solo "compilazione" loro di .mo
file utilizzando gettext
strumenti di GNU (o la sua implementazione di Python, pygettext
)
Ma, se si vuole/bisogno di analizzare i file del Po da soli, invece di compilazione, ho consiglia vivamente di utilizzare polib
, una libreria Python nota per gestire i file po
. E 'utilizzato da numerosi progetti su larga scala, come Mercurial e Ubuntu del motore di traduzione Launchpad:
pacchetto Cheese Shop casa: http://pypi.python.org/pypi/polib/
repository di codice: https://bitbucket.org/izi/polib/wiki/Home
Documentazione: http://polib.readthedocs.org
Il modulo di importazione è un singolo file, con licenza MIT, quindi puoi facilmente inserirlo nel tuo codice come questo:
import polib
po = polib.pofile('path/to/catalog.po')
for entry in po:
print entry.msgid, entry.msgstr
Non può essere più facile di così;)
@saeedgnu: forse si potrebbe aiutarlo a migliorarlo? 'polib' è la libreria più utilizzata per manipolare i file po ed è attivamente mantenuta, quindi qualsiasi miglioramento andrà a beneficio di un * lotto * di software – MestreLion
Penso che sia stato pensato per essere così, il programma che lo utilizza potrebbe aggiungere alcune voci dopo caricamento di file po (o creazione di un nuovo oggetto pofile), è tutto in memoria – saeedgnu
'gettext' è impressionante, ma funziona solo con compilati' file mo', non semplice testo 'quelli po' – MestreLion