我正在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
的内容不会被复制。
我错过了什么?
谢谢! 扎赫尔