Django中的ugettext和ugettext_lazy
您能解释一下ugettext
和ugettext_lazy
的主要区别是什么。
当我尝试
return HttpResponse(ugettext_lazy("Hello"))
我什么都没看见,但是
return HttpResponse(ugettext("Hello"))
正在工作。
为什么?
谢谢。
-
ugettext
用来加载一个字符串的解释现在。ugettext_lazy
返回一个最终可以转换为字符串的对象。如果在ugettext_lazy
设置正确的语言环境之前对呼叫进行了评估,则需要此设置。ugettext_lazy
可以在使用Unicode对象的地方使用。仔细检查您的HTML输出,看起来可能像这样:<django.utils.functional...>
浏览器将其忽略为无法识别的标签。
在这种情况下,您不需要延迟翻译,因为您将立即使用字符串。如果您出于某些原因确实想要继续使用
ugettext_lazy
,请尝试以下操作:return HttpResponse(ugettext_lazy("Hello").encode('utf-8'))