使用_t()方法翻译DataObject?

ifu*_*ion 3 silverstripe

我正在尝试DataObject使用该_t()方法翻译.

我一直在Pages上使用它没有问题,但它似乎不适用于数据对象.

class SliderItem extends DataObject {

    private static $default_sort = 'Sort';

    private static $db = array(
        'Sort' => 'Int',
        'Title' => 'Varchar(255)',
        'Summary' => 'Text'
    );


    public function getCMSFields() {
        $fields = parent::getCMSFields();
        $fields->addFieldsToTab('Root.Main', array(
            TextField::create(_t('SliderItem.Title', 'Title')),
            TextareaField::create(_t('SliderItem.Summary', 'Summary'))
        ));
        $fields->removeByName(array('HomePageID', 'Sort'));
        return $fields;
    }
}
Run Code Online (Sandbox Code Playgroud)

mysite的/郎/ de.yml

de:
  SliderItem:
    Title: 'I want to change this'
    Summary: 'And this..'
Run Code Online (Sandbox Code Playgroud)

为什么这个例子不起作用?

3dg*_*goo 5

确保在FormField构造函数中将变量名称定义为第一个参数,将可翻译标题定义为第二个参数.

这个:

TextField::create(_t('SliderItem.Title', 'Title'))
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

TextField::create('Title', _t('SliderItem.Title', 'Title'))
Run Code Online (Sandbox Code Playgroud)

你的getCMSFields功能应该是这样的:

public function getCMSFields() {
    $fields = parent::getCMSFields();

    $fields->addFieldsToTab('Root.Main', array(
        TextField::create('Title', _t('SliderItem.Title', 'Title')),
        TextareaField::create('Summary', _t('SliderItem.Summary', 'Summary'))
    ));

    $fields->removeByName(array('HomePageID', 'Sort'));

    return $fields;
}
Run Code Online (Sandbox Code Playgroud)