如何翻译$ url_handlers?

ifu*_*ion 3 silverstripe

我有一种情况需要$url_handlers为不同国家翻译以下内容.

因此,在英文网站上,URL如下所示:http://website.com/gyms/boston/group-training

我需要能够翻译URL的"组训练"部分.我已经使用整个_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'
    );


}
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

jjj*_*jjj 6

您可以更新控制器的init()函数内的配置,执行以下操作:

public function init() {

    parent::init();

    // Define your translated actions.
    $translatedCurrentSpecials   = _t('Actions.CURRENT_SPECIALS', 'aktuella-kampanjer');
    $translatedSevenDayFreeTrial = _t('Actions.SEVEN_DAY_TRIAL',  'sjudagars-prova-pa-period');

    // Define your url handlers.
    $urlHandlers           = $this->config()->url_handlers;
    $translatedUrlHandlers = [
        $translatedCurrentSpecials   => 'currentSpecials',
        $translatedSevenDayFreeTrial => 'sevenDayFreeTrial'
    ];

    // Update the config.
    Config::inst()->update(
        $this->class, 
        'url_handlers', 
        $translatedUrlHandlers + $urlHandlers // Important to prepend and not append.
    );

}
Run Code Online (Sandbox Code Playgroud)

  • 两年前我们在奥地利林茨的第一个StripeCon进行了这次讨论,我编写了一个工作示例,请参阅https://github.com/wernerkrauss/silverstripe-translatable-actions (3认同)