YII2怎么切換多語言包
1、配置組件
'components'?=>?[ ????????'i18n'?=>?[ ????????????'translations'?=>?[ ????????????????'*'?=>?[ ????????????????????'class'?=>?'yiii18nphpMessageSource', ????????????????????//'basePath'?=>?'/messages', ????????????????????'fileMap'?=>?[ ????????????????????????'app'?=>?'app.php', ????????????????????], ????????????????], ????????????], ????????], ]
2、創建messages目錄
在web同級目錄下創建messages目錄,此目錄存放語言配置文件
創建messages/zh-CN/app.php,zh-CN為語言標識( Yii::$app->Session[‘language’] = ‘zh-CN’ 即配置為zh-CN語言),app.php中存放語言配置數組(app.php的名字由配置組件時‘app’選項確定)
下面時app.php文件內容
<?php return [ //常用 'Action' =>?'操作', ????'Search'?=>?'搜索', ????'Reset'?=>?'重置', ];
3、實現語言切換
有兩種方法:
a)需要給每個controller進行初始化(都寫上init函數),在init函數中主要就是給Yii::$app->language 賦值。例如:Yii::$app->language = ‘zh-CN’。
b)在web/index.php(入口文件)中,將創建應用的代碼改為下面的代碼
$application?=?new?yiiwebApplication($config); $application->language?=?isset(Yii::$app->session['language'])???Yii::$app->session['language']?:?'en'; $application->run();
4、編寫控制器方法,實現語言切換
public?function?actionLanguage(){??????? ????$language=??Yii::$app->request->get('lang');?? ????if(isset($language)){?? ????????Yii::$app->session['language']=$language;?? ????}?? ????//切換完語言哪來的返回到哪里 ????$this->goBack(Yii::$app->request->headers['Referer']);?? }
要想實現語言的切換,只要帶’lang’參數調用此方法就可以了!
更多關于yii的使用技巧,建站教程,請關注網站建設教程。??
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END