wagtail StreamField проблема с переводом имен блоков - PullRequest
0 голосов
/ 30 мая 2018

В документах я обнаружил следующее:

Параметр StreamField представляет собой список ( name , block_type) кортежей.«name» используется для идентификации типа блока в шаблонах и во внутреннем представлении JSON (и должно следовать стандартным соглашениям Python для имен переменных: строчные и подчеркивания, без пробелов ), а «block_type» должно бытьопределение блока объекта, как описано ниже.(В качестве альтернативы StreamField может быть передан один экземпляр StreamBlock - см. Типы структурных блоков.)

'name' будет отображаться в интерфейсе администратора трясогузки в качестве имени блока.

Теперь я хочу перевести название блоков в StreamField.

Я пытался использовать gettext и ugettext_lazy , чтобы обернуть имя .

Если используется gettext , то отображаемый текст на интерфейсе администратора будет языком « LANGUAGE_CODE » в «settings / base.py».Заданные пользователем языковые предпочтения в интерфейсе администратора не будут иметь значения.

Если используется ugettext_lazy и указанный пользователем язык отличается от LANGUAGE_CODE в 'settings / base.py', будет keyerrors , где ключ - переведенный контент.

Есть ли способ правильно перевести имя?

1 Ответ

0 голосов
/ 30 мая 2018

Все типы блоков принимают аргумент label для имени, отображаемого в админке;Вы должны применить там функцию перевода.

from django.utils.translation import ugettext_lazy as _

class MyPage(Page):
    body = StreamField([
        ('heading', blocks.CharBlock(label=_("Heading"))),
    ])
...