【问题标题】:Automatically generate SiteTree translation in Silverstripe在 Silverstripe 中自动生成 SiteTree 翻译
【发布时间】:2010-09-11 16:05:39
【问题描述】:

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

最好的问候, 本尼迪克特

【问题讨论】:

  • 您的意思是将站点树提供给谷歌翻译并以返回的语言或类似的方式显示它?
  • 没有。我想为翻译准备整个网站结构。因此,我必须初始化每个现有页面的对应项,但使用另一个 lang 标志。

标签: php localization translation silverstripe


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    提示:

    ->createTranslation() 仅创建实时记录,即使您在使用以下方法创建的舞台对象上调用它:

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

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

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

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

    【讨论】:

      【解决方案3】:

      您不会复制站点树来创建翻译。 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

      【讨论】:

      • 是的,但是系统会使用另一个语言标志创建此页面的(相关)副本。
      • 好的 - 所以您只是想要一种自动执行此操作而不是编辑每个页面的方法?如果是这样 - 我已经添加到上面的答案中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      相关资源
      最近更新 更多