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 -- 是否应将标记为“模糊”的翻译包括在输出中