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>


 
联系客服