在Silverstripe中自动生成SiteTree转换

时间:2010-09-11 16:05:39

标签: php localization translation silverstripe

是否有办法(自动)生成或“复制”网站树以便翻译成另一种语言? 例如通过url命令或类似的东西。

祝你好运, 本尼迪克特

3 个答案:

答案 0 :(得分:1)

您现在可能已经找到了解决方案......但是为了将来参考,SilverStripe用户 drx 已经为翻译创建了批处理操作,如下所述:http://silverstripe.org/customising-the-cms/show/7318

答案 1 :(得分:1)

提示:

->createTranslation()只会在使用以下内容创建的舞台对象上调用此内容时创建实时记录:

$a = Versioned::get_one_by_stage($this->ClassName, 'Stage', $this->ClassName.".ID = ".$this->ID);

要创建舞台和实时页面,您必须:

$translation_GB = $this->createTranslation('en_GB');
$translation_GB->doRestoreToStage();

在两种情况下都会自动保存。

答案 2 :(得分:0)

您不会复制站点树以创建翻译。 SilverStripe支持多语言网站。您可以在此处阅读:http://doc.silverstripe.org/sapphire/en/topics/translation

如果您想要一种自动化方法,那么就没有原生支持,但这并不难。通过URL只需要向你的Page_Controller添加一个函数,或者更好的是,你可以写一个简单的模块,如果它是你将要定期做的事情(只需看看googlesitemaps模块,因为它循环通过您需要的页面)。您可以通过以下方式获取所有页面:

Versioned::get_by_stage('SiteTree', 'Live', $filter);

然后,当您循环播放时,您将创建您的翻译。你也可以通过命令行使用SilverStripe的CMDline实用程序“清酒”来做到这一点:http://doc.silverstripe.org/sapphire/en/topics/commandline