【问题标题】:wagtail StreamField block name translation issuewagtail StreamField 块名称翻译问题
【发布时间】:2018-05-30 07:38:53
【问题描述】:

我在文档中找到的内容如下:

StreamField 的参数是 (name, block_type) 元组的列表。 'name' 用于标识模板中的块类型和内部 JSON 表示(并且应该遵循变量名的标准 Python 约定:小写和下划线,没有空格)和 'block_type' 应该是如下所述的块定义对象。 (或者,可以将 StreamField 传递给单个 StreamBlock 实例 - 请参阅结构块类型。)

'name' 将在 wagtail 管理界面中显示为块的名称。

现在我想翻译 StreamField 中块的名称。

我尝试使用 gettextugettext_lazy 来包装 name

如果使用gettext,则管理界面上的显示文本将是“settings/base.py”中“LANGUAGE_CODE”的语言。管理界面中用户指定的语言首选项不会产生影响。

如果使用 ugettext_lazy 并且用户指定的语言与 'settings/base.py' 中的 LANGUAGE_CODE 不同,则会出现 keyerrors 其中 key是翻译后的内容。

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

【问题讨论】:

    标签: translation wagtail


    【解决方案1】:

    所有块类型accept a label argument 用于在管理员中显示的名称;你应该在那里应用翻译功能。

    from django.utils.translation import ugettext_lazy as _
    
    class MyPage(Page):
        body = StreamField([
            ('heading', blocks.CharBlock(label=_("Heading"))),
        ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多