TP5.1多语言切换遇到的大坑,谨记
干货分享 · 2020-04-24
TP提供了多语言切换的语言包功能,默认情况下,系统载入的是配置的默认语言包,并且不会自动侦测当前系统的语言。
进入主题,要使用多语言切换首先需要配置项目config->app.php的如下字段:
// 是否开启多语言
'lang_switch_on' => true,不开启此功能,切换不了,接着设置默认语言:
// 默认语言
'default_lang' => 'zh-cn',重点来了,在控制器中写如下代码:
//获取语言
$lang = request()->param('lang');
switch($lang){
case 'en':
cookie('think_var','en-us');
$lang = 'cn';
break;
case 'cn':
cookie('think_var','zh-cn');
$lang = 'en';
break;
default:
$lang = 'en';
cookie('think_var','zh-cn');
break;
}
Lang::load(Env::get('APP_PATH').'home/lang/'.cookie('think_var').'.php');
$this->assign('lang', $lang);这句是重点中的重点,没有这句可以切换但是需要手动刷新浏览器,配置才会有作用,否则切换不了
Lang::load(Env::get('APP_PATH').'home/lang/'.cookie('think_var').'.php');
基本大功告成了,前端给URL传参即可,如下:
"{:url('home/index/index',['lang'=>$lang])}" class="language switch">{:lang('lang')}</a>