2016-08-02 56 views
3

我正在嘗試使用_t()方法翻譯DataObject使用_t()方法翻譯DataObject?

我一直在頁面上使用它,沒有問題,但它似乎不適用於數據對象。

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 /郎/ de.yml

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

爲什麼這個例子不工作?

回答

5

確保將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; 
}