Cakephp url中的自动前缀
我正在我的应用程序中使用语言前缀:Cakephp url中的自动前缀,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我正在我的应用程序中使用语言前缀: Router::connect('/:language/:controller/:action/*', array(), array('language' => '[a-z]{3}')); 当我使用$this->Html->link('title',$url\u array)时,我必须手动设置语言前缀。 我想要的是,当前缀出现在当前url中时,当我使用->lin
Router::connect('/:language/:controller/:action/*',
array(),
array('language' => '[a-z]{3}'));
当我使用$this->Html->link('title',$url\u array)
时,我必须手动设置语言前缀。
我想要的是,当前缀出现在当前url中时,当我使用->link(…)
时,它应该自动将此前缀添加到url中。只有当我设置这个前缀时,它才应该是不同的
有可能吗?如果要在应用程序范围内(而不是每个用户)管理区域设置,则应检查AppController的beforeFilter()中URL中的当前区域设置。
路由器中的:language前缀将确保为不同本地化内容提供唯一的URL
$this->Html->link()
因此,在您的AppController::beforeFilter()
中,使用if()语句来检测请求的语言环境,并根据请求执行以下操作:
Configure::write('Config.language', 'fre');
或
这样做将确保I18n和访问相同的语言值
如果要管理每个用户的应用程序区域设置,可以在会话中存储当前区域设置:
class AppController extends Controller {
public function beforeFilter() {
Configure::write('Config.language', $this->Session->read('Config.language'));
}
}
当然,您也应该使用。看看蛋糕书的那一部分。
哦,是的,那篇文章的“小字”中提到了一些非常重要的东西:
本地化应用程序的另一个方面不包括在翻译函数的使用中,那就是日期/货币格式。不要忘记CakePHP是PHP:),因此要设置这些内容的格式,需要使用setlocale。
如果将计算机上不存在的区域设置传递给setlocale,则该设置将无效。通过在终端中运行命令locale-a
,可以找到可用语言环境的列表
如果要管理整个区域设置应用程序(而不是每个用户),应检查AppController的beforeFilter()中URL中的当前区域设置。路由器中的:language前缀将确保为不同本地化内容提供唯一的URL
$this->Html->link()
因此,在您的AppController::beforeFilter()
中,使用if()语句来检测请求的语言环境,并根据请求执行以下操作:
Configure::write('Config.language', 'fre');
或
这样做将确保I18n和访问相同的语言值
如果要管理每个用户的应用程序区域设置,可以在会话中存储当前区域设置:
class AppController extends Controller {
public function beforeFilter() {
Configure::write('Config.language', $this->Session->read('Config.language'));
}
}
当然,您也应该使用。看看蛋糕书的那一部分。
哦,是的,那篇文章的“小字”中提到了一些非常重要的东西:
本地化应用程序的另一个方面不包括在翻译函数的使用中,那就是日期/货币格式。不要忘记CakePHP是PHP:),因此要设置这些内容的格式,需要使用setlocale。
如果将计算机上不存在的区域设置传递给setlocale,则该设置将无效。通过在终端中运行命令locale-a
,可以找到可用语言环境的列表