babel.messages.pofile
Reading and writing of files in the gettext PO (portable object) format.
see: The Format of PO Files unescape(string)Reverse escape the given string.
>>> print unescape('"Say:\\n \\"hello, world!\\"\\n"') Say: "hello, world!" <BLANKLINE>param string: the string to unescape return: the unescaped string rtype: str or unicode denormalize(string)Reverse the normalization done by the normalize function.
>>> print denormalize(r'''"" ... "Say:\n" ... " \"hello, world!\"\n"''') Say: "hello, world!" <BLANKLINE>
>>> print denormalize(r'''"" ... "Say:\n" ... " \"Lorem ipsum dolor sit " ... "amet, consectetur adipisicing" ... " elit, \"\n"''') Say: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " <BLANKLINE>
param string: the string to denormalize return: the denormalized string rtype: unicode or str 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 "quux %(name)s" ... ... # A user comment ... #. An auto comment ... #: main.py:3 ... msgid "bar" ... msgid_plural "baz" ... msgstr[0] "bar" ... msgstr[1] "baaz" ... ''') >>> 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'quux %(name)s') ([(u'main.py', 1)], set([u'fuzzy', u'python-format'])) ([], []) ((u'bar', u'baz'), (u'bar', u'baaz')) ([(u'main.py', 3)], set([])) ([u'A user comment'], [u'An auto comment'])
param fileobj: the file-like object to read the PO file from param 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) param domain: the message domain param ignore_obsolete: whether to ignore obsolete messages in the input return: a catalog object representing the parsed PO file rtype: Catalog escape(string)Escape the given string so that it can be included in double-quoted strings in PO files.
>>> escape('''Say: ... "hello, world!" ... ''') '"Say:\\n \\"hello, world!\\"\\n"'param string: the string to escape return: the escaped string rtype: str or unicode normalize(string, prefix='', width=76)Convert a string into a format that is appropriate for .po files.
>>> print normalize('''Say: ... "hello, world!" ... ''', width=None) "" "Say:\n" " \"hello, world!\"\n">>> print normalize('''Say: ... "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " ... ''', width=32) "" "Say:\n" " \"Lorem ipsum dolor sit " "amet, consectetur adipisicing" " elit, \"\n"param string: the string to normalize param prefix: a string that should be prepended to every line param width: the maximum line width; use None, 0, or a negative number to completely disable line wrapping return: the normalized string rtype: unicode 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',)) <Message...> >>> catalog.add((u'bar', u'baz'), locations=[('main.py', 3)]) <Message...> >>> 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>param fileobj: the file-like object to write to param catalog: the Catalog instance param width: the maximum line width for the generated output; use None, 0, or a negative number to completely disable line wrapping param no_location: do not emit a location comment for every message param omit_header: do not include the msgid "" entry at the top of the output param sort_output: whether to sort the messages in the output by msgid param sort_by_file: whether to sort the messages in the output by their locations param ignore_obsolete: whether to ignore obsolete messages and not include them in the output; by default they are included as comments param include_previous: include the old msgid as a comment when updating the catalog
See ApiDocs, Documentation
