CakePHP 2.x i18n路线 [英] CakePHP 2.x i18n route

查看:184
本文介绍了CakePHP 2.x i18n路线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

$ p

现在我的代码如下,但我想要更好一些:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆