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