pybabel 不支持 PO 文件 “Language” 字段的临时解决方法

Babel 的上游似乎很不活跃, 我有根据之前一个 Pull Request 添加测试后再次提交这个更改, 但是没有得到任何回应… 因为急用, 就先采用了这个临时的方法.

如你所料, 这又是一个丑陋的 monkey-patch 😀

使用这个脚本来执行 pybabel extract, update, compile 等操作时, 如果用 -l 参数正确指定了语言, 生成的相应 .po/.mo 文件里就能保留相应的 Language 字段了.

#!/usr/bin/env python
import sys
from pkg_resources import load_entry_point

import babel.messages.catalog
_get_mime_headers = babel.messages.catalog.Catalog._get_mime_headers


def _get_mime_headers_with_language(self):
    headers = _get_mime_headers(self)
    if self.locale is not None:
        headers.append(('Language', str(self.locale)))
    return headers

babel.messages.catalog.Catalog.mime_headers = property(_get_mime_headers_with_language, babel.messages.catalog.Catalog._set_mime_headers)

if __name__ == '__main__':
    sys.exit(
        load_entry_point('Babel', 'console_scripts', 'pybabel')()
    )
QR Code Business Card