Package babel :: Package messages :: Module pofile

Module pofile



Reading and writing of files in the gettext PO (portable object) format.


See Also: The Format of PO Files

Functions
iterator
read_po(fileobj, locale={'territory_zones': {'001': ['Etc/GMT', 'Etc/GMT-1', 'Etc/GMT-..., domain={'territory_zones': {'001': ['Etc/GMT', 'Etc/GMT-1', 'Etc/GMT-..., ignore_obsolete=True)
Read messages from a gettext PO (portable object) file from the given file-like object and return a Catalog.
 
write_po(fileobj, catalog, width=76, no_location=True, omit_header=True, sort_output=True, sort_by_file=True, ignore_obsolete=True, include_previous=True)
Write a gettext PO (portable object) template file for a given message catalog to the provided file-like object.
Function Details

read_po(fileobj, locale={'territory_zones': {'001': ['Etc/GMT', 'Etc/GMT-1', 'Etc/GMT-..., domain={'territory_zones': {'001': ['Etc/GMT', 'Etc/GMT-1', 'Etc/GMT-..., ignore_obsolete=True)

 

Read messages from a gettext PO (portable object) file from the given file-like object and return a Catalog.

>>> from StringIO import StringIO
>>> buf = StringIO('''
... #: main.py:1
... #, fuzzy, python-format
... msgid "foo %(name)s"
... msgstr ""
...
... # A user comment
... #. An auto comment
... #: main.py:3
... msgid "bar"
... msgid_plural "baz"
... msgstr[0] ""
... msgstr[1] ""
... ''')
>>> catalog = read_po(buf)
>>> catalog.revision_date = datetime(2007, 04, 01)
>>> for message in catalog:
...     if message.id:
...         print (message.id, message.string)
...         print ' ', (message.locations, message.flags)
...         print ' ', (message.user_comments, message.auto_comments)
(u'foo %(name)s', '')
  ([(u'main.py', 1)], set([u'fuzzy', u'python-format']))
  ([], [])
((u'bar', u'baz'), ('', ''))
  ([(u'main.py', 3)], set([]))
  ([u'A user comment'], [u'An auto comment'])
Parameters:
  • fileobj - the file-like object to read the PO file from
  • locale - the locale identifier or Locale object, or None if the catalog is not bound to a locale (which basically means it's a template)
  • domain - the message domain
  • ignore_obsolete - whether to ignore obsolete messages in the input
Returns: iterator
an iterator over (message, translation, location) tuples

write_po(fileobj, catalog, width=76, no_location=True, omit_header=True, sort_output=True, sort_by_file=True, ignore_obsolete=True, include_previous=True)

 

Write a gettext PO (portable object) template file for a given message catalog to the provided file-like object.

>>> catalog = Catalog()
>>> catalog.add(u'foo %(name)s', locations=[('main.py', 1)],
...             flags=('fuzzy',))
>>> catalog.add((u'bar', u'baz'), locations=[('main.py', 3)])
>>> from StringIO import StringIO
>>> buf = StringIO()
>>> write_po(buf, catalog, omit_header=True)
>>> print buf.getvalue()
#: main.py:1
#, fuzzy, python-format
msgid "foo %(name)s"
msgstr ""
<BLANKLINE>
#: main.py:3
msgid "bar"
msgid_plural "baz"
msgstr[0] ""
msgstr[1] ""
<BLANKLINE>
<BLANKLINE>
Parameters:
  • fileobj - the file-like object to write to
  • catalog - the Catalog instance
  • width - the maximum line width for the generated output; use None, 0, or a negative number to completely disable line wrapping
  • no_location - do not emit a location comment for every message
  • omit_header - do not include the msgid "" entry at the top of the output
  • sort_output - whether to sort the messages in the output by msgid
  • sort_by_file - whether to sort the messages in the output by their locations
  • ignore_obsolete - whether to ignore obsolete messages and not include them in the output; by default they are included as comments
  • include_previous - include the old msgid as a comment when updating the catalog