在Django中哪里翻译表单字段标签?

ix0qys7i  于 2023-06-25  发布在  Go
关注(0)|答案(2)|浏览(139)

我正在努力让我的网站翻译加快速度,我有.po/.mo文件与我所有的{% trans %}标签在我的模板,但我不知道如何让我的表格翻译好。这些字段在我的.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

但它不填充这些字段

ikfrs5lh

ikfrs5lh1#

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

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

from django.utils.translation import ugettext_lazy
ugettext_lazy('Subject') # this string will be marked for translation
    • 编辑**

Django在幕后使用xgettext来翻译makemessages,并且有一个非常具体的关键字列表,它可以选择这些关键字进行翻译:

--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

查看https://github.com/django/django/blob/1.9/django/core/management/commands/makemessages.py的第489行及以后的行

yvfmudvl

yvfmudvl2#

你应该使用gettext_lazy()作为_或者像这样,而不是tran,它不工作,如下所示。* _推荐:

from django.utils.translation import gettext_lazy as _

class ContactForm(forms.Form):                   # ↓ Here
    subject = forms.CharField(required=True, label=_('Subject'))
    ...

或者:

from django.utils.translation import gettext_lazy

class ContactForm(forms.Form):                   # ↓ ↓ Here ↓ ↓
    subject = forms.CharField(required=True, label=gettext_lazy('Subject'))
    ...

相关问题