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=None, domain=None, ignore_obsolete=False) 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=False, omit_header=False, sort_output=False, sort_by_file=False, ignore_obsolete=False, include_previous=False) 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=None, domain=None, ignore_obsolete=False) |
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=False, omit_header=False, sort_output=False, sort_by_file=False, ignore_obsolete=False, include_previous=False) |
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