Babel 的上游似乎很不活跃, 我有根据之前一个 Pull Request 添加测试后再次提交这个更改, 但是没有得到任何回应… 因为急用, 就先采用了这个临时的方法.
如你所料, 这又是一个丑陋的 monkey-patch 😀
使用这个脚本来执行 pybabel extract, update, compile 等操作时, 如果用 -l 参数正确指定了语言, 生成的相应 .po/.mo 文件里就能保留相应的 Language 字段了.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/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')() ) |