ugettext и ugettext_lazy в Django - PullRequest
       2

ugettext и ugettext_lazy в Django

23 голосов
/ 22 декабря 2010

Не могли бы вы объяснить, в чем принципиальное отличие ugettext и ugettext_lazy.

Когда я пытаюсь

return HttpResponse(ugettext_lazy("Hello"))

я ничего не видел, но

return HttpResponse(ugettext("Hello"))

работает.

Почему?

Спасибо.

1 Ответ

38 голосов
/ 22 декабря 2010

ugettext используется для загрузки перевода строки прямо сейчас .ugettext_lazy возвращает объект, который в конечном итоге можно превратить в строку.Вам нужно, чтобы, если вызов ugettext_lazy был оценен до того, как была установлена ​​правильная локаль,

ugettext_lazy можно использовать там, где вы используете объект Unicode.Дважды проверьте вывод HTML, он может выглядеть следующим образом:

<django.utils.functional...>

и браузер игнорирует все это как нераспознанный тег.

Вам не нужен ленивый перевод в этомслучай, потому что вы сразу используете строку.Если вы действительно хотите продолжить с ugettext_lazy по какой-либо причине, попробуйте это:

return HttpResponse(ugettext_lazy("Hello").encode('utf-8'))

См. документы для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...