Автоматически генерировать перевод SiteTree в Silverstripe - PullRequest
2 голосов
/ 11 сентября 2010

Есть ли способ (автоматически) создать или «продублировать» дерево сайта для перевода на другой язык? Например, с помощью команды url или чего-то подобного.

С уважением, Бенедикта

Ответы [ 3 ]

1 голос
/ 12 апреля 2011

вы, вероятно, уже нашли решение к настоящему времени ... но для дальнейшего использования пользователь SilverStripe drx создал пакетное действие для переводов, как обсуждалось здесь: http://silverstripe.org/customising-the-cms/show/7318

1 голос
/ 04 августа 2011

Совет:

->createTranslation() создает только живую запись, даже если вы вызываете ее для объекта сцены, созданного с помощью:

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

Для создания сцены и Live-страниц вам необходимо:

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

Сохранение выполняется автоматически в обоих случаях.

0 голосов
/ 15 февраля 2011

Вы бы не дублировали дерево сайта для создания перевода.SilverStripe поддерживает многоязычные сайты.Вы можете прочитать об этом здесь: http://doc.silverstripe.org/sapphire/en/topics/translation

Если вы хотите способ автоматизировать это, нет встроенной поддержки, но это не составит труда.По URL можно просто добавить функцию в свой Page_Controller или, что еще лучше, вы можете написать простой модуль, если вы собираетесь этим заниматься регулярно (просто посмотрите на модуль googlesitemaps для примера, когда он просматривает циклстраниц, как вам нужно).Вы можете получить все страницы, позвонив по номеру:

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

Затем вы создадите свой перевод (переводы) по мере прохождения.Вы также можете сделать это через командную строку, используя утилиту CMDline SilverStripe "sake": http://doc.silverstripe.org/sapphire/en/topics/commandline

...