2010-09-11 116 views
2

有沒有辦法,(自動)生成或「複製」網站樹以翻譯成其他語言? 例如通過url命令或類似的東西。在Silverstripe中自動生成SiteTree翻譯

最好的問候, 貝內迪克特

+0

你的意思是喂網站樹谷歌翻譯和顯示它在返回的語言或類似的東西? – markus 2011-01-18 17:31:08

+0

不可以。我想準備翻譯的整個網站結構。因此,我需要爲每個現有頁面初始化一個對應的對象,但使用另一個lang標誌。 – Benedikt 2011-03-04 20:23:00

回答

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

+0

是的,但系統用另一個lang標誌創建了這個頁面的一個(相關的)副本。 – Benedikt 2011-03-04 20:20:45

+0

好的 - 所以你只是想要一種方法來自動執行此操作,而不是通過編輯每個頁面?如果是這樣 - 我已經在上面添加了我的答案。 – 2011-03-07 00:47:59

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(); 

保存在這兩種情況下自動完成。