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:如何在模板中转换方法结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何在EJS和gulp中实现i18n本地化?

Django i18n:如何不翻译管理站点?

如何在 Angular 中将 i18n 模板用于 eslint?

如何在 django 模板中创建文件

Mandrill 支持 i18n 吗?

如何将 django 变量正确转换为模板中的 json