你能解释一下ugettext和ugettext_lazy的主要区别。
当我尝试
时return HttpResponse(ugettext_lazy("Hello"))
我什么也没看到,但是
return HttpResponse(ugettext("Hello"))
正在运作。
为什么?
感谢。
答案 0 :(得分:38)
ugettext
用于加载字符串的翻译。 ugettext_lazy
返回一个最终可以转换为字符串的对象。如果在设置正确的语言环境之前评估ugettext_lazy
调用,则需要这样做。
ugettext_lazy
。仔细检查您的HTML输出,它可能如下所示:
<django.utils.functional...>
并且浏览器将其全部忽略为无法识别的标记。
在这种情况下,您不需要延迟翻译,因为您正在使用该字符串。如果你真的想因某种原因继续使用ugettext_lazy,试试这个:
return HttpResponse(ugettext_lazy("Hello").encode('utf-8'))
有关详细信息,请参阅docs。