gettext: как избежать сбоя при юникоде? - PullRequest
0 голосов
/ 02 октября 2018

Вот файл python, который приводит к сбою gettext при коде символа Unicode \u2191.

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 голосов
/ 03 октября 2018

Обходной путь - удалить коды из строк для перевода

# 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')
}
...