silverstripe-translatable:如何使dataobjects可翻译(幻灯片)?

时间:2017-01-07 18:57:13

标签: php silverstripe

我正在Silverstripe创建一个多语言网站,目标是以三种语言提供整个内容。我正在使用可翻译模块,现在工作正常。

某些页面包含幻灯片,这意味着我将一堆图像和标题与这些页面相关联。看起来像这样:

class Slide extends DataObject {

    private static $db = array(
        'Caption'     => 'Varchar(255)',
        'SortIndex'   => 'Int'
    );

    private static $has_one = array(
        'ParentPage' => 'Page',
        'Image' => 'Image'
    );

    public static $default_sort = 'SortIndex';

    public function getCMSFields() {
        // parent::getCMSFields() does all the hard work and creates the fields for Title, IsActive and Content.
        $fields = parent::getCMSFields();
        $fields->dataFieldByName('Caption')->setTitle('Titel');
        $fields->dataFieldByName('Image')->setTitle('Bild');
        $fields->dataFieldByName('Index')->setTitle('Reihenfolge');

        $fields->push(new TextField('Caption', 'Titel'));
        $fields->push(new UploadField('Image', 'Profile Image'));

        // Apply Translatable modifications
        $this->applyTranslatableFieldsUpdate($fields, 'updateCMSFields');

        return $fields;
    }
}


class SlideShowPage extends Page {

    private static $has_many = array(
        'Slides' => 'Slide'
    );

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

        $conf = GridFieldConfig_RelationEditor::create(10);
        $conf->addComponent(new GridFieldSortableRows('SortIndex'));

        $fields->addFieldToTab('Root.Slideshow', new GridField('Slide', 'Slides', $this->Slides(), $conf));

        // Apply Translatable modifications
        $this->applyTranslatableFieldsUpdate($fields, 'updateCMSFields');

        return $fields;
    }
}

我想让这些幻灯片也可以翻译。这意味着我想用主要语言准备幻灯片一次,然后点击“创建新翻译”按钮,并在翻译版本中获得幻灯片,并准备好翻译字幕(类似于正文)内容)。根据{{​​3}},这是可能的。我已将这些调用添加到applyTranslatableFieldsUpdate()(请参阅上面的代码中),并将这些行添加到我的_config.php文件中:

SlideShowPage::add_extension('Translatable');
Slide::add_extension('Translatable');

Slide_translationgroups甚至已成功创建,并为每个翻译填充了新条目。但表Slide的内容不会被复制。

我错过了什么?

谢谢! 扎赫尔

0 个答案:

没有答案