Internacionalización

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!

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!

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