DaniH
(Dan Her Alf)
August 14, 2012, 5:11pm
1
Hola,
no consigo comprender cómo funciona la internacionalizacion.
He creado una carpeta bajo "protectec/messages" llamada "en_us", y un fichero llamado "layout.php" que contiene lo siguiente:
<?php
return array(
'mensaje1' => 'message1'
);
?>
Ejecutando el siguiente código:
<?php
echo Yii::t('layout', 'mensaje1', null, "es_es", "en_us");
?>
Y este otro
<?php
Yii::app()->language = 'en_us';
echo Yii::t('layout', 'mensaje1');
?>
No consigo que el mensaje sea traducido. ¿Qué hago mal? Gracias!
ramabarca
(Ramabarca)
August 16, 2012, 6:53am
2
en tu "controller" y "messages" intenta solo con el "en" o "es":
// protected/messages/en/layout.php
return array(
'mensaje1' => 'message1',
);
// protected/controllers/MyController.php
class MyController extends Controller {
public function actionIndex(){
// setting language
Yii::app->language = 'en';
// get translated message
print_r(Yii::t('layout', 'mensaje1'));
}
}
espero sea de ayuda!
hula_fran
(Frodriguezfierro)
August 23, 2012, 6:55pm
3
Hola! te cuento que yo tb estuve buscando esto hace algunos dias y es mucho más sencillo de lo que parece.
En el archivo config/main.php
return array(
//......
'language' => 'es',
//......
);
En todos tus controladores insertas lo sgte:
function init()
{
if(isset(Yii::app()->session['lang']))
Yii::app()->setLanguage(Yii::app()->session['lang']);
else{
Yii::app()->setLanguage('es');
Yii::app()->session['lang']='es';
}
parent::init();
}
Debes tener cuidado de que tu variable de lenguaje se llame como tu carpeta, protected/messages/es /nombre.php
Esta es mi funcion para cambiar de idioma
public function actionsetLanguage(){
$lang=$_GET['lang'];
Yii::app()->session['lang']=$lang;
Yii::app()->setLanguage($lang);
Yii::app()->language=$lang;
echo Yii::app()->language;
$this->redirect($_GET['url']);//esta ultima linea es para que se mantenga en la misma pagina
}
Espero q te sirva, saludos