Yii2 学习日志------多语言

网上有许多的方法,这里只是自己总结一下。

 

大致分为3种吧。

1.用cookie保存,在服务端操作。

2.用cookie保存,在本地浏览器操作。

3.用session保存。

方法:

设置message文件夹

里面文件

 

然后

方式一:在index.php页面添加

$application->language = \Yii::$app->request->cookies->get('locale')?\Yii::$app->request->cookies->get('locale'):'en-US';

方式二:在配置文件中添加

'on beforeRequest' => function ($event) {
        $l_saved = null;
        $l_saved = Yii::$app->request->cookies->get('locale');
        $l = ($l_saved)?$l_saved:'en-US';
        Yii::$app->sourceLanguage = 'en';
        Yii::$app->language = $l;
        return; 
    }。
上述都是用cookie操作。session一样的。

还差一步 就是设置cookie或者session

cookie可以在浏览器或者服务端操作。session在服务的

浏览器cookie:
<script>
    function changeLanguage(lang){
        $.cookie('language',lang);
        window.location.reload();
    }
</script>

服务器cookie:

public function actionLanguage()
{
$language= \Yii::$app->request->get('language');
if(isset($language)){
$l_cookie = new yii\web\Cookie(['name' => 'locale', 'value' => $language, 'expire' => 3600*24*30,]);
$l_cookie->expire = time() + 3600*24*30;
Yii::$app->response->cookies->add($l_cookie);
}
//切换完语言哪来的返回到哪里
$this->goBack(\Yii::$app->request->headers['Referer']);
}

服务器session和cookie类似。


在页面上加上
<a href="<?php echo Yii::$app->urlManager->createUrl(['/ebay/user/language','lang'=>'zh-CN']);?>">中文</a>  
<a href="<?php echo Yii::$app->urlManager->createUrl(['/ebay/user/language','lang'=>'en']);?>">英文</a>  

测试。。。。


 

posted @ 2015-06-19 16:11  dingddd  阅读(235)  评论(0)    收藏  举报