【问题标题】:Translating a DataObject using the _t() method?使用 _t() 方法翻译 DataObject?
【发布时间】:2016-08-02 03:55:55
【问题描述】:

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

我一直在 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;
    }
}

mysite/lang/de.yml

de:
  SliderItem:
    Title: 'I want to change this'
    Summary: 'And this..'

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

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    确保将FormField constructor中的变量名定义为第一个参数,将可翻译的标题定义为第二个参数。

    这个:

    TextField::create(_t('SliderItem.Title', 'Title'))
    

    应该是这样的:

    TextField::create('Title', _t('SliderItem.Title', 'Title'))
    

    您的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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多