yii2怎么切換多語言包
1、配置組件
'components' => [ 'i18n' => [ 'translations' => [ '*' => [ 'class' => 'yiii18nPhpMessageSource', //'basePath' => '/messages', 'fileMap' => [ 'app' => 'app.php', ], ], ], ], ]
2、創(chuàng)建messages目錄
在web同級目錄下創(chuàng)建messages目錄,此目錄存放語言配置文件
創(chuàng)建messages/zh-CN/app.php,zh-CN為語言標識( Yii::$app->session['language'] = 'zh-CN' 即配置為zh-CN語言),app.php中存放語言配置數(shù)組(app.php的名字由配置組件時‘a(chǎn)pp’選項確定)
下面時app.php文件內(nèi)容
<?php return [ //常用 'Action' => '操作', 'Search' => '搜索', 'Reset' => '重置', ];
3、實現(xiàn)語言切換
有兩種方法:
a)需要給每個controller進行初始化(都寫上init函數(shù)),在init函數(shù)中主要就是給Yii::$app->language 賦值。例如:Yii::$app->language = 'zh-CN'。
b)在web/index.php(入口文件)中,將創(chuàng)建應(yīng)用的代碼改為下面的代碼
$application = new yiiwebApplication($config); $application->language = isset(Yii::$app->session['language']) ? Yii::$app->session['language'] : 'en'; $application->run();
4、編寫控制器方法,實現(xiàn)語言切換
public function actionLanguage(){ $language= Yii::$app->request->get('lang'); if(isset($language)){ Yii::$app->session['language']=$language; } //切換完語言哪來的返回到哪里 $this->goBack(Yii::$app->request->headers['Referer']); }
要想實現(xiàn)語言的切換,只要帶'lang'參數(shù)調(diào)用此方法就可以了!