Wagtail StreamField块名称翻译问题

时间:2018-05-30 07:38:54

标签: translation wagtail

我在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是翻译的内容。

有没有办法正确翻译名称?

1 个答案:

答案 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"))),
    ])