在django中转换表单字段标签的位置

在django中转换表单字段标签的位置,django,internationalization,translation,Django,Internationalization,Translation,我正在努力提高网站翻译的速度,我的.po/.mo文件使用了我模板中所有的{%trans%}标记,但我不知道如何让我的表单翻译好。这些字段不会显示在my.po文件中 app/forms.py from django import forms from django.utils.translation import ugettext_lazy as trans class ContactForm(forms.Form): subject = forms.CharField(required

我正在努力提高网站翻译的速度,我的
.po/.mo
文件使用了我模板中所有的
{%trans%}
标记,但我不知道如何让我的表单翻译好。这些字段不会显示在my.po文件中

app/forms.py

from django import forms
from django.utils.translation import ugettext_lazy as trans

class ContactForm(forms.Form):
    subject = forms.CharField(required=True, label=trans(u'Subject'))
    name = forms.CharField(required=True, label=trans(u'Name'))
    email = forms.EmailField(required=True, label=trans(u'Email'))
    content = forms.CharField(required=True, widget=forms.Textarea, label=trans(u'Content'))
我不确定我还需要在这里包括什么,如果我还需要什么,请告诉我。我试着跑

django-admin makemessages -l lang

但是它没有填充这些字段

不幸的是,您不能使用
trans
作为别名来标记需要翻译的字符串。您必须使用函数的原始名称或
\uu
。例如

from django.utils.translation import ugettext_lazy as _
_('Subject') # this string will be marked for translation

编辑

Django在幕后使用
xgettext
来生成消息,并且有一个非常具体的关键字列表,用于翻译:

--keyword=gettext_noop
--keyword=gettext_lazy
--keyword=ngettext_lazy:1,2
--keyword=ugettext_noop
--keyword=ugettext_lazy
--keyword=ungettext_lazy:1,2
--keyword=pgettext:1c,2
--keyword=npgettext:1c,2,3
--keyword=pgettext_lazy:1c,2
--keyword=npgettext_lazy:1c,2,3

查看第489行及其后的

尝试使用
python manage.py makemessages-l
not
django admin
--keyword=gettext_noop
--keyword=gettext_lazy
--keyword=ngettext_lazy:1,2
--keyword=ugettext_noop
--keyword=ugettext_lazy
--keyword=ungettext_lazy:1,2
--keyword=pgettext:1c,2
--keyword=npgettext:1c,2,3
--keyword=pgettext_lazy:1c,2
--keyword=npgettext_lazy:1c,2,3