带有参数的i18n

时间:2014-08-09 14:59:09

标签: php codeigniter internationalization

我已经在我的项目国际化(i18n)库中集成了,我在第二段中遇到了一些问题。我有路线:

$route['^(en|ru)/services'] = 'services';
$route['^(en|ru)/services/(:any)/(:any)'] = 'services/showcat/$1/$2';
$route['^(en|ru)/services/(:any)'] = 'services/showcat/$1';

当我输入site.pc/en/servicessite.pc/en/services/private_service时,某些链接可以完美地用于site.pc/en/services/private_service/idart蝙蝠。我无法获得我所知道的参数,它给了我

public function showcat($idCat, $idart = '') {
        echo ' id: ' . $idCat;      // en

        //and for http://site.pc/en/services/private_service/3
        echo ' idart: ' . $idServise;     // empty
}

为什么我无法获得idCat = private_service和idart = 3

如果我将数组控制器服务添加到未本地化的

//特殊URI(未本地化)     var $ special = array(         "信息中心&#34 ;,         "设置&#34 ;,         "服务"     ); 在MY_Lang班,然后我得到好的参数得到idCat = private_service和idart = 3

要获取我的参数,我需要在路线第3段中添加广告

$route['^(en|ru)/services/(:any)/(:any)/(:any)'] = 'services/showcat/$1/$2/$3';

和功能

//url is site.pc/en/services/private_service/3/anyvars    
function showcat($idCat, $idart = '', $k = '') {
    //idCat is en
    //idart is private_service
    //k is 3
    }

为什么第一个参数是get lang

1 个答案:

答案 0 :(得分:0)

<强>解决!

似乎溃败中的第一个ID是其中一个(en | ru)所以在我的路线中它必须是那个

$route['^(en|ru)/services/(:any)/(:any)/(:any)'] = 'services/showcat/$2/$3/$4';