CakePHP i18n 的路由
我正在尝试使用以下格式国际化 CakePHP 网站上的所有页面:
- /en/about
- /zh/about(中文版)
- 等。
我已经在 router.php 中定义了所有路由,例如。
Router::connect('/about/*', array('controller' => 'pages', 'action' => 'about'));
Router::connect('/login/*', array('controller' => 'users', 'action' => 'login'));
// etc...
如何使 /language/ 前缀自动应用于所有 Router::connect() ?
在 CakePHP 库的 router.php 中,有一个类似路由的示例,并给出如下:
Router::connect('/:lang/:controller/:action/:id',
array(), array('id' => '[0-9]+', 'lang' => '[a-z]{2}'));
然而,这仅适用于默认路由类型(例如 /pages/about/),而不是像 /about 这样专门定义的路由类型我的例子。
换句话说,当用户访问 /zh/pages/about 时它会工作,但当用户访问 /zh/about 时它不会工作。
有什么建议吗?或者我是否必须手动重写所有 Router::connect() 以包含 lang?
I'm trying to internationalize all the pages on my CakePHP site with the following format:
- /en/about
- /zh/about (for Chinese version)
- etc.
I already have all the routes defined at router.php, eg.
Router::connect('/about/*', array('controller' => 'pages', 'action' => 'about'));
Router::connect('/login/*', array('controller' => 'users', 'action' => 'login'));
// etc...
How do I make it so that /language/ prefix is automatically applied to all the Router::connect()s?
At CakePHP library's router.php, there is an example for the similar routing and is given as such:
Router::connect('/:lang/:controller/:action/:id',
array(), array('id' => '[0-9]+', 'lang' => '[a-z]{2}'));
This however, only works for the default routing type (eg. /pages/about/) and not a specially defined one like /about for my example.
In other words, it would work when user visits /zh/pages/about but not when user visits /zh/about
Any suggestions or do I have to manually rewrite all my Router::connect()s to include lang?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这个:
Try this: