MO File Support¶
The MO file support can read and write MO files. It reads them into
Catalog
objects and also writes catalogs
out.
- babel.messages.mofile.read_mo(fileobj)¶
Read a binary MO file from the given file-like object and return a corresponding Catalog object.
- Parameters
fileobj – the file-like object to read the MO file from
- Note
The implementation of this function is heavily based on the
GNUTranslations._parse
method of thegettext
module in the standard library.
- babel.messages.mofile.write_mo(fileobj, catalog, use_fuzzy=False)¶
Write a catalog to the specified file-like object using the GNU MO file format.
>>> import sys >>> from babel.messages import Catalog >>> from gettext import GNUTranslations >>> from io import BytesIO
>>> catalog = Catalog(locale='en_US') >>> catalog.add('foo', 'Voh') <Message ...> >>> catalog.add((u'bar', u'baz'), (u'Bahr', u'Batz')) <Message ...> >>> catalog.add('fuz', 'Futz', flags=['fuzzy']) <Message ...> >>> catalog.add('Fizz', '') <Message ...> >>> catalog.add(('Fuzz', 'Fuzzes'), ('', '')) <Message ...> >>> buf = BytesIO()
>>> write_mo(buf, catalog) >>> x = buf.seek(0) >>> translations = GNUTranslations(fp=buf) >>> if sys.version_info[0] >= 3: ... translations.ugettext = translations.gettext ... translations.ungettext = translations.ngettext >>> translations.ugettext('foo') u'Voh' >>> translations.ungettext('bar', 'baz', 1) u'Bahr' >>> translations.ungettext('bar', 'baz', 2) u'Batz' >>> translations.ugettext('fuz') u'fuz' >>> translations.ugettext('Fizz') u'Fizz' >>> translations.ugettext('Fuzz') u'Fuzz' >>> translations.ugettext('Fuzzes') u'Fuzzes'
- Parameters
fileobj – the file-like object to write to
catalog – the Catalog instance
use_fuzzy – whether translations marked as “fuzzy” should be included in the output