yii: internacionalización (i18n) y administrador dinámico de url
Me gustaría saber una mejor manera de implementar la "internacionalización (i18n)" y la "gestión dinámica de URL" en el marco de Yii.
Una solución temporal (difícil de mantener):
// protected/config/main.php
'language' => 'es',
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName' => false,
'rules'=>array(
// pages
'es/turismo/<slug:>' => array('visit/page', 'defaultParams' => array('lang' => 'es'), 'urlSuffix' => '.html'),
'it/visita/<slug:>' => array('visit/page', 'defaultParams' => array('lang' => 'it'), 'urlSuffix' => '.html'),
'en/travel/<slug:>' => array('visit/page', 'defaultParams' => array('lang' => 'en'), 'urlSuffix' => '.html'),
'turismo/<slug:>' => array('visit/page', 'urlSuffix' => '.html'),
// home
'es/turismo' => array('visit/index', 'defaultParams' => array('lang' => 'es'), 'urlSuffix' => '.html'),
'it/visita' => array('visit/index', 'defaultParams' => array('lang' => 'it'), 'urlSuffix' => '.html'),
'en/travel' => array('visit/index', 'defaultParams' => array('lang' => 'en'), 'urlSuffix' => '.html'),
// contact us
'es/contactenos' => array('site/contact', 'defaultParams' => array('lang' => 'es'), 'urlSuffix' => '.html'),
'it/contattaci' => array('site/contact', 'defaultParams' => array('lang' => 'it'), 'urlSuffix' => '.html'),
'en/contact-us' => array('site/contact', 'defaultParams' => array('lang' => 'en'), 'urlSuffix' => '.html'),
),
),
...
// protected/controllers/VisitController.php
...
public function actionIndex($lang = 'es'){
Yii::app()->language = $lang;
...
}
public function actionPage($slug, $lang = 'es'){
Yii::app()->language = $lang;
...
}
...
Esto implica nuevas reglas de configuración 'urlManager' para cada controlador y siempre pasa el parámetro $ lang para cada acción del controlador. Un ejemplo en vivo:
Probé algunas otras opciones sin éxito:
Yii Framework Forum: Rutas dinámicas del gestor de URL
¡Gracias!