码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-06-19 16:41:59      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

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

 

大致分为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>  

测试。。。。


 

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

标签:

原文地址:http://www.cnblogs.com/dingxp/p/4589021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!