Не могли бы вы объяснить, в чем принципиальное отличие ugettext и ugettext_lazy.
Когда я пытаюсь
return HttpResponse(ugettext_lazy("Hello"))
Я ничего не видел, но
return HttpResponse(ugettext("Hello"))
работает.
Почему?
Спасибо.
Ответ 1
ugettext используется для загрузки перевода строки прямо сейчас. ugettext_lazy возвращает объект, который в конечном итоге может быть превращен в строку. Вам нужно, чтобы вызов ugettext_lazy был оценен до того, как был установлен правильный языковой стандарт.
ugettext_lazy можно использовать, когда вы используете объект Unicode. Дважды проверьте свой вывод HTML, он может выглядеть так:
<django.utils.functional...>
и браузер игнорирует все это как непризнанный тег.
В этом случае вам не нужен ленивый перевод, потому что вы немедленно используете строку. Если вы действительно хотите продолжить работу с ugettext_lazy по какой-либо причине, попробуйте следующее: