gettext:如何避免在unicode字符上失败?

时间:2018-10-02 13:31:44

标签: python unicode translation gettext pot

这是一个导致gettext在Unicode字符代码\u2191失败的python文件。

texts = {
    'first': _(u'Hello world'),
    'fails': _(u'Arrow: \u2191'),  # This code causes problems for gettext
    'omitted': _(u'Innocent string here')
}

在命令行中运行C:\Python27\pythonw.exe C:\Python27\Tools\i18n\pygettext.py -d string_file string_file.py时,结果POT文件包含正确的头,但是在遇到unicode箭头时失败:

#: translate.py:2
msgid "Hello world"
msgstr ""

#: translate.py:3
msgid

如何使它与Unicode字符代码一起使用?

1 个答案:

答案 0 :(得分:0)

一种解决方法是从待翻译的字符串中删除代码

# Not wrapped in _() so does not enter gettext
arrrow_char = u'\u2191'

# These are now accessible to gettext
texts = {
    'first': _(u'Hello world'),
    'fails': _(u'Arrow: %s') %arrow_char,  # No longer causes a problem
    'omitted': _(u'Innocent string here')
}