MO文件支持

MO文件支持可以读写MO文件。它会把它们读入 Catalog 对象,并且还写出目录。

babel.messages.mofile.read_mo(fileobj: SupportsRead[bytes]) Catalog

从给定的类似文件的对象中读取二进制MO文件,并返回相应的 Catalog 对象。

参数:

fileobj -- 要从中读取MO文件的类似文件的对象

笔记:

此函数的实现在很大程度上基于 GNUTranslations._parse 方法 gettext 标准库中的模块。

babel.messages.mofile.write_mo(fileobj: SupportsWrite[bytes], catalog: Catalog, use_fuzzy: bool = False) None

使用GNU MO文件格式将目录写入指定的类似文件的对象。

>>> 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'
参数:
  • fileobj -- 要写入的类似文件的对象

  • catalog -- 这个 Catalog 实例

  • use_fuzzy -- 是否应将标记为“模糊”的翻译包括在输出中