Учитывая простой шаблон, я пытаюсь добавить некоторый i18n. Но я получаю следующую ошибку:Tornado locale.translate
File "login_xhtml.generated.py", line 5, in _tt_execute
_tt_tmp = _('Welcome') # login.xhtml:4
UnboundLocalError: local variable '_' referenced before assignment
(<class 'UnboundLocalError'>, UnboundLocalError("local variable '_' referenced before assignment",), <traceback object at 0x7ffc50c957a0>)
По какой-то причине «_» не задано в генераторе шаблонов. Хуже того, он становится неопределенным где-то в этом процессе. Я попытался добавить «_» в пространство имен моего обработчика. Я пробовал печатать пространство имен шаблонов из кода торнадо прямо перед вызовом «execute» для вызова шаблона - «_» присутствует в пространстве имен, но не в шаблоне.
Если я определяю что-то еще как псевдоним для «locale.translate», он работает должным образом. Кажется, что проблема связана только с «_».
Моей последняя (довольно отчаянная) попытка была добавить следующую строку в смерч шаблона кода:
def generate(self, writer):
writer.write_line("def _tt_execute():", self.line)
with writer.indent():
+ writer.write_line("_ = locale.translate", self.line)
writer.write_line("_tt_buffer = []", self.line)
writer.write_line("_tt_append = _tt_buffer.append", self.line)
self.body.generate(writer)
writer.write_line("return _tt_utf8('').join(_tt_buffer)", self.line)
И что сделало работу на самом деле. Однако это не кажется правильным решением.
У меня есть последняя версия торнадо (не менее pip
говорит так) - 3.1.1.
Что может быть причиной этого?
Примечание: Я использую python3. Может ли это быть причиной проблемы?
Python3, Tornado 3.1.1 отлично подходит для меня. –
Я подозреваю, что проблема в другом месте в моей настройке. Но у меня нет идей, куда искать. – aragaer