Silverstripe 如何翻译$url\u处理程序?

Silverstripe 如何翻译$url\u处理程序?,silverstripe,Silverstripe,我的情况是,我需要为不同的国家翻译以下$url\u处理程序 因此,在英文网站上,URL如下所示: 我需要能够翻译“团体培训”的网址的一部分。我已经用\u t()方法翻译了网站的其余部分 我当前的设置: class GymLocationPage_Controller extends Page_Controller { private static $allowed_actions = array( 'currentSpecials', 'sevenDay

我的情况是,我需要为不同的国家翻译以下
$url\u处理程序

因此,在英文网站上,URL如下所示:

我需要能够翻译“团体培训”的网址的一部分。我已经用
\u t()
方法翻译了网站的其余部分

我当前的设置:

class GymLocationPage_Controller extends Page_Controller {

    private static $allowed_actions = array(
        'currentSpecials',
        'sevenDayFreeTrial',
        'groupTraining'
    );

    private static $url_handlers = array(
        'current-specials' => 'currentSpecials',
        'trial' => 'sevenDayFreeTrial',
        'group-training' => 'groupTraining'
    );


}

如何实现这一点?

您可以在控制器的init()函数中更新配置,如下所示:

public function init(){
父::init();
//定义你的动作。
$translatedCurrentSpecials=\u t('Actions.CURRENT\u SPECIALS','aktuella kampanjer');
$translatedSevenDayFreeTrial=\u t('Actions.Sevenday\u TRIAL','sjudagars prova pa period');
//定义url处理程序。
$urlHandlers=$this->config()->url\u处理程序;
$translatedUrlHandlers=[
$translatedCurrentSpecials=>currentSpecials,
$translatedSevenDayFreeTrial=>“sevenDayFreeTrial”
];
//更新配置文件。
Config::inst()->更新(
$this->class,
“url_处理程序”,
$translatedUrlHandlers+$urlHandlers//对于前置而非追加很重要。
);
}

我对此很感兴趣,因为我不确定你是否能……完美!我发现我不需要在
init
中设置
$allowed\u actions
。我只是像您通常在
私有静态$allowed\u actions
中那样设置允许的操作,但在init中根据您的代码设置$url\u处理程序。非常感谢!:)两年前,我们在奥地利林茨的第一届StripeCon上进行了讨论,我编写了一个工作示例,请参见