网上有许多的方法,这里只是自己总结一下。
大致分为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>
测试。。。。
时间: 2024-10-12 21:12:22