Автоматически генерировать перевод SiteTree в Silverstripe

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

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


person Benedikt    schedule 11.09.2010    source источник
comment
Вы имеете в виду передачу дерева сайта в Google Translate и отображение его на возвращаемом языке или что-то в этом роде?   -  person markus    schedule 18.01.2011
comment
Нет. Я хочу подготовить всю структуру сайта к переводу. Поэтому мне пришлось инициализировать аналог каждой из существующих страниц, но с другим флагом lang.   -  person Benedikt    schedule 04.03.2011


Ответы (3)


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

person kilbot    schedule 12.04.2011

Наконечник:

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

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

Для создания Stage и Live-Pages вам необходимо:

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

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

person Daniel    schedule 04.08.2011

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

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

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

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

person Shane Garelja    schedule 14.02.2011
comment
Да, но система создает (связанную) копию этой страницы с другим флагом языка. - person Benedikt; 04.03.2011
comment
ОК, значит, вам просто нужен способ сделать это автоматически, а не путем редактирования каждой страницы? Если да - я добавил к своему ответу выше. - person Shane Garelja; 07.03.2011