Silverstripe 4: настройка Fluent, чтобы сделать поля виджетов переводимыми - PullRequest
1 голос
/ 10 июля 2019

Я настраиваю проект SS и хочу добавить локали на основе URL (/en, /gb и т. Д.) С помощью аддона Silverstripe-Fluent (https://github.com/tractorcow-farm/silverstripe-fluent). Я успешно установил его и могудобавить локали, используя cms, но переводимые поля работают только для основного контента. Как сделать так, чтобы другие виджеты и объекты данных тоже переводились?

Я пытался заставить его работать для виджетов, следуя документации на github и выполняя перечисленные ниже действия.ниже.

mysite.yml

Silverstripe\SiteConfig\SiteConfig:
  extensions:
    - TCM\SiteConfig\Extensions\LdaUrlExtension
    - TractorCow\Fluent\Extension\FluentExtension
SiteTree:
  extensions:
    - TractorCow\Fluent\Extension\FluentFilteredExtension
Widget:
  extensions:
    - TractorCow\Fluent\Extension\FluentVersionedExtension
  translate:
    - HTMLTitle
    - HTMLContent
ContentWidget:
  extensions:
    - TractorCow\Fluent\Extension\FluentVersionedExtension
  translate:
    - HTMLTitle
    - HTMLContent
Page:
  translate:
    - 'Heading'
    - 'Description'
---
Name: myfluentconfig
---
TractorCow\Fluent\Extension\FluentDirectorExtension:
  disable_default_prefix: false
---
Name: fluentfieldconfig
---
TractorCow\Fluent\Extension\FluentExtension:
  field_include:
    - Varchar(100)
    - DBHTMLText
    - HTMLTitle
    - HTMLContent

PHP в widget.php или contentwidget.php

private static $db = array(
        'HTMLTitle'       => 'HTMLVarchar',
        'HTMLContent'     => 'HTMLText',
        'PreviewBgImg'    => 'HTMLText',
        'TextPosition'    => 'Varchar(6)',
        'TextColour'      => 'Varchar(5)',
        'BackgroundColour' => 'Varchar(5)'
    );

private static $translate = [
        'HTMLTitle',
        'HTMLText',
        'HTMLContent'
    ];

Я ожидал, что это сделает мои поля виджетов контента также переводимыми, но, к сожалению, содержимое виджетов остается одинаковым для всех локалей.

Я также убедился, что я сделал dev/build?flush=all и вручную даже очистил содержимое папки silverstripe-cache.

Буду признателен за любую помощь. Спасибо.

1 Ответ

2 голосов
/ 15 июля 2019

В SS4 вам нужен FQCN (полное имя класса) для конфигурации, имя класса включает полное пространство имен.Это должно работать в вашей конфигурации:

SilverStripe\Widgets\Model\Widget:
  extensions:
    - TractorCow\Fluent\Extension\FluentVersionedExtension
  translate:
    - HTMLTitle
    - HTMLContent

Аналогично для ContentWidget

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...