CakePHP 2.x i18n路线 [英] CakePHP 2.x i18n route
问题描述
现在我的代码如下,但我想要更好一些:
if(Configure :: read('Config.language')!=='en'){// en是默认语言
$ language ='/:language';
} else {
$ language ='';
}
Router :: connect($ language。'/'。__('register',true),array(
'controller'=>'users'
'action'=>'register'));
这段代码工作得很好,但是我仍然必须通过url()方法在AppHelper中设置语言。 p>
在旧版应用中,我总是重复Router :: connect:
:: connect('/:language /'。__('register',true),array(
'controller'=>'users',
'action'=>'register') ); // for all languages without default language
Router :: connect('/'。__('register',true),array(
'controller'=>'users',
'action'=>'register')); //仅用于默认语言(en)
也许有最简单的解决方案?
您需要使用2个路由,但为您的基于语言的路由添加'persist'选项。添加persist将避免在每次生成url时指定language键。
语言。
Router :: connect(
'/:lang /'。__('register',true),
array(
'controller'=>'users',
'action'=>'register'
),
array(
'persist'=> array('lang')
)
) ;
//仅用于默认语言(en)
Router :: connect(
'/'。__('register',true),
array b $ b'controller'=>'users',
'action'=>'register'
)
);
您可能还想要结帐 CakeDC的I18n 插件。
There is some solution for using CakePHP route with params only when are not empty?
Now I code below, but I would like some better:
if(Configure::read('Config.language') !== 'en') { // en is default language
$language = '/:language';
} else {
$language = '';
}
Router::connect($language .'/'. __('register', true), array(
'controller' => 'users',
'action' => 'register'));
This code works perfectly, but I still must set language in AppHelper by url() method.
In older apps I was always duplicate Router::connect:
Router::connect('/:language/'. __('register', true), array(
'controller' => 'users',
'action' => 'register')); // for all languages without default language
Router::connect('/'. __('register', true), array(
'controller' => 'users',
'action' => 'register')); // only for default language (en)
Maybe there is simplest solutions?
You need to use 2 routes but add the 'persist' option for your language based routes. Adding 'persist' will avoid having to specify 'language' key each time when generating urls.
// for all languages without default language.
Router::connect(
'/:lang/'. __('register', true),
array(
'controller' => 'users',
'action' => 'register'
),
array(
'persist' => array('lang')
)
);
// only for default language (en)
Router::connect(
'/'. __('register', true),
array(
'controller' => 'users',
'action' => 'register'
)
);
You might also want to checkout CakeDC's I18n plugin.
这篇关于CakePHP 2.x i18n路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!