SilverStripe Fluent mod似乎会自动翻译DataExtension
内的所有字段。要禁用此功能,我必须使用:private static $translate = 'none';
。
这是奇怪的,因为当涉及到DataObjects
时,它的工作方式相反:没有任何内容会自动翻译,只有您明确指出要翻译的字段。
是否可以禁用 SS-Fluent mod的自动翻译行为?了解Fluent自动翻译的其他内容也很有趣。
答案 0 :(得分:3)
在代码中......
在silverstripe中,可以在代码中设置任何静态数组,所以是的,将它添加到_confip.php
MyDataObject:
translate:
- 'FieldOne'
- 'SomeOtherField'
...将确保设置所需的值!
如果你想在config.yml中添加相同的东西,那么......
{{1}}
...... https://github.com/tractorcow/silverstripe-fluent/blob/master/docs/en/configuration.md
详细介绍了这一点答案 1 :(得分:2)
以巴里的答案为基础; Fluent不会转换扩展,它会转换DataObjects,默认情况下会自动转换数据对象上与Fluent.data_include
规则匹配的字段。可以把它想象为将字段推入数据对象本身的扩展,它可以看作是由扩展对象拥有的,而不是扩展本身。
您遇到的问题是自动翻译行为,其中未定义translate
。您可以按照Barry的回答为单个对象解决此问题。
如果要全局禁用所有自动字段翻译,可以将值从Fluent.data_include
复制到Fluent.data_exclude
。此列表中的字段类型不会包含在本地化中(即使在Fluent.data_include
中)。
---
Name: myfluentconfig
After: '#fluentconfig'
---
Fluent:
data_exclude:
- 'Text'
- 'Varchar'
- 'HTMLText'
- 'HTMLVarchar'
这意味着如果您拥有如下所示的数据对象(或扩展程序),则不会自动翻译。
class MyObject extends DataObject {
private static $db = [
'Name' => 'Text'
];
}