我在docs中找到的内容如下:
StreamField的参数是( name ,block_type)元组的列表。 'name'用于标识模板中的块类型和内部JSON表示(并且应该遵循变量名称的标准Python约定:小写和下划线,没有空格)和'block_type'应该是块定义对象,如下所述。 (或者,StreamField可以传递一个StreamBlock实例 - 请参阅结构块类型。)
' name' 将在wagtail管理界面中显示为块名称。
现在我想在StreamField中翻译块的名称。
我尝试使用 gettext 和 ugettext_lazy 来包装名称。
如果使用 gettext ,则管理界面上的显示文字将为" LANGUAGE_CODE " in' settings / base.py'。管理界面中用户指定的语言首选项不会产生任何影响。
如果使用 ugettext_lazy 且用户指定的语言与&#39; settings / base.py&#39;中的 LANGUAGE_CODE 不同,则会有 keyerrors < / strong>其中key是翻译的内容。
有没有办法正确翻译名称?
答案 0 :(得分:2)
要在admin中显示的名称的所有块类型accept a label
argument;你应该在那里应用翻译功能。
from django.utils.translation import ugettext_lazy as _
class MyPage(Page):
body = StreamField([
('heading', blocks.CharBlock(label=_("Heading"))),
])