Django / i18n:如何在模板中转换方法结果?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django / i18n:如何在模板中转换方法结果?相关的知识,希望对你有一定的参考价值。
我正在致力于项目的国际化。即使阅读Django文档,我还是不了解某些内容
我有一个传递上下文(列表)的视图
在我的模板中,我在此列表上循环并在列表的每个元素上运行一个方法此方法返回一个字符串(“ string#1”或“ string#2”,取决于元素)
我想翻译(zh / fr),但我不知道该怎么做?我应该在模型或模板中应用翻译吗?
下面是一个简化的代码
models.py
class mymodel(models.Model)
def mymethod(self):
condition = othermodel.objects.get(pk=self.ide)
if condition == 1 :
return 'string#1' # the string I want to translate
else:
return 'string#2' # the string I want to translate
return ''
views.py
def test(request):
mylist= _(["elt#1","elt#2","elt#3","elt#4","elt#5"])
return render(request, 'myapp/test.html', 'mylist': mylist)
test.html
% for element in mylist %
element.mymethod
% endfor %
答案
您可以选择一个选项
如果您要翻译为[[model]
from django.utils.translation import ugettext_lazy as _
class mymodel(models.Model)
def mymethod(self):
condition = othermodel.objects.get(pk=self.ide)
if condition == 1 :
return _('string#1') # the string I want to translate
else:
return _('string#2') # the string I want to translate
return ''
如果您想在中翻译view
from django.utils.translation import ugettext as _
def test(request):
mylist= [_("elt#1"), _("elt#2"), _("elt#3"), _("elt#4"), _("elt#5")]
return render(request, 'myapp/test.html', 'mylist': mylist)
如果您想用翻译template
% load i18n %
% for element in mylist %
% trans element.mymethod %
% endfor %
以上是关于Django / i18n:如何在模板中转换方法结果?的主要内容,如果未能解决你的问题,请参考以下文章