CakePHP i18n的路由

时间:2011-09-16 16:07:47

标签: php cakephp localization internationalization cakephp-1.3

我正在尝试使用以下格式将CakePHP网站上的所有页面国际化:

  • / EN /约
  • / zh / about(中文版)

我已经在router.php中定义了所有路由,例如。

Router::connect('/about/*', array('controller' => 'pages', 'action' => 'about'));
Router::connect('/login/*', array('controller' => 'users', 'action' => 'login'));
// etc...

如何使/ language / prefix自动应用于所有Router :: connect()?

在CakePHP库的router.php中,有一个类似路由的例子,如下所示:

 Router::connect('/:lang/:controller/:action/:id', 
                 array(), array('id' => '[0-9]+', 'lang' => '[a-z]{2}'));

然而,这仅适用于默认路由类型(例如/ pages / about /),而不适用于我的示例中特定定义的路由类型。

换句话说,当用户访问/ zh / pages / about时,它会起作用,但是当用户访问/ zh / about时

有任何建议或我是否必须手动重写我的所有Router :: connect()以包含lang?

1 个答案:

答案 0 :(得分:2)

试试这个:

    Router::connect('/:lang/:controller', array(), array('lang' => '[a-z]{2}'));
    Router::connect('/:lang/:controller/:action', array(), array('lang' => '[a-z]{2}'));
    Router::connect('/:lang/:controller/:action/*', array(), array('lang' => '[a-z]{2}'));