Есть ли способ (автоматически) создать или «дублировать» дерево сайта для перевода на другой язык? Например, с помощью команды URL или чего-то подобного.
С уважением, Бенедикт
Есть ли способ (автоматически) создать или «дублировать» дерево сайта для перевода на другой язык? Например, с помощью команды URL или чего-то подобного.
С уважением, Бенедикт
возможно, вы уже нашли решение... но на будущее: пользователь SilverStripe drx создал пакетное действие для переводов, как описано здесь: http://silverstripe.org/customising-the-cms/show/7318
Наконечник:
->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();
Сохранение происходит автоматически в обоих случаях.
Вы не стали бы дублировать дерево сайта для создания перевода. 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