【问题标题】:How to translate native SiteConfig with silverstripe-fluent如何使用 silverstripe-fluent 翻译本机 SiteConfig
【发布时间】:2018-10-04 15:09:03
【问题描述】:
我正在使用带有 silverstripe-fluent 模块的 silverstripe 4。我无法翻译本机 SiteConfig(网站名称和标语/口号)怎么办?
感谢您的帮助!
奥雷利安
【问题讨论】:
-
-
@Jones1220:我刚刚将我的 DataExtension 写为documentation 写。但我找不到方法告诉 fluent 翻译这些字段(FooterContent、SiteName 和 Slogan)
标签:
config
silverstripe
fluent
silverstripe-4
【解决方案1】:
我遇到了同样的问题。仅翻译特定变量。
模拟解决了:
YML (config.yml)
SilverStripe\SiteConfig\SiteConfig:
extensions:
- Pixelparker\Extensions\SiteConfigExtension
- TractorCow\Fluent\Extension\FluentExtension
SiteConfigExtension.php
private static $translate = [
'CookieMessage'
];
就是这样。
【解决方案2】:
解决了!
在Silverstripe\SiteConfig\SiteConfig 中添加TractorCow\Fluent\Extension\FluentExtension :
---
Name: myproject
---
SilverStripe\Core\Manifest\ModuleManifest:
project: app
Silverstripe\SiteConfig\SiteConfig:
extensions:
- TractorCow\Fluent\Extension\FluentExtension
- CustomSiteConfig
并在您的配置扩展类中扩展 FluentExtension 而不是 DataExtension:
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
use TractorCow\Fluent\Extension\FluentExtension;
class CustomSiteConfig extends FluentExtension
{
private static $db = [
'FooterContent' => 'HTMLText'
];
public function updateCMSFields(FieldList $fields)
{
$fields->addFieldToTab("Root.Main",
new HTMLEditorField("FooterContent", "Footer Content")
);
parent::updateCMSFields($fields);
}
}
【解决方案3】:
如果您只想翻译 SiteConfig 的默认 Title 和 Tagline DB 字段,那么您可以应用 Fluent 扩展并在 .yml 配置文件中定义要翻译的 DB 字段,例如这个:
SilverStripe\SiteConfig\SiteConfig:
extensions:
- TractorCow\Fluent\Extension\FluentExtension
translate:
- Title
- Tagline