Silverstripe 4:配置 Fluent 以使 Widget 字段可翻译

Silverstripe 4: Configuring Fluent to make Widget fields translatable

我正在建立一个 SS 项目,并希望使用 silverstripe-fluent 插件(https://github.com/tractorcow-farm/silverstripe-fluent).我已经成功安装它并可以使用 cms 添加语言环境,但可翻译字段仅适用于主要内容。我如何使其他小部件和数据对象也可翻译?

我已尝试按照 github 文档并执行下面列出的操作,使其适用于 Widgets。

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 或内容widget.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 文件夹的内容。

如有任何帮助,我们将不胜感激。谢谢。

在 SS4 中,您需要 FQCN(完全限定的 class 名称)进行配置,class 名称包括完整的命名空间。这应该适用于您的配置:

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

类似于ContentWidget