Mostrare la lingua nell'url

Ci sto provando da un’ora. Non ci riesco.

Con questa regola le richieste funzionano, ma tutti gli url vengono scritti senza lingua. Come posso fare a far comparire la lingua?




                '<lang:[a-z]{2,}>/<controller:\w+>/<action:\w+>' => '<controller>/<action>',



Ho fatto un solo sito multilingua ed ammetto che me ne sono sempre fregato del link. Adesso però … ne sento il bisogno.

Ho provato anche a sovrascrivere createUrl. Non va =(




    public function createUrl($route, $params = array(), $ampersand = '&') {

        return parent::createUrl(Yii::app()->language . $route, $params, $ampersand);

    }



E il codice che hai usato per fare il link?

La tua regola dice che la lingua viene nel parametro "lang"…

Percio il codice:


$this->createUrl('site/contact',array('lang'=>'it'));

darebbe il link "/it/site/contact"

Per accedere al parametro ‘lang’ puoi usare $_GET[‘lang’]

Mmmm. E’ per caso possibile aggiungere il parametro lang automaticamente? Io fino adesso ho utilizzato link del tipo:


$this->createUrl('site/contact');

E’ possibile lasciare le cose così ed avere sempre la lingua nell’url? Oppure devo andare ad aggiungere sempre il parametro lang? Ma sopratutto, devo cambiare le regole nell’urlManager aggiungendo sempre <lang:\w+> in tutte le rules?

Il fatto è questo: vorrei rendere SEMPRE esplicita la lingua.

Bisogna analizare tuttle le possibili rules che ti servono e vedere cosa si puo fare… e possibile che questa rule sia sufficiente…

Qui ce un extension che usa una rule simile - http://www.yiiframework.com/extension/langhandler

Per non aggiungere il parametro "lang" ogni volta… puoi sovrascrivere il createUrl o usare uno custom dove userai automaticamente il parametro lang