一.配置
1.开启语言包功能
'lang_switch_on' => true,
2.支持的语言列表
'lang_list' => ['zh-cn','en-us'],
二.语言定义
3.语言定义
框架或模块目录\lang\zh-cn.php
return [
'zhongwen'=>'中文',//表示模板内使用{:lang('zhongwen')}获得的字符在中文状态下显示为'中文'
'yingwen' =>'英文',
]
框架或模块目录\lang\en-us.php
return [
'zhongwen'=>'chinese',//表示模板内使用{:lang('zhongwen')}获得的字符在英文状态下显示为'chinese'
'yingwen' =>'english',
]
三.自动侦测语言
路径:thinkphp\library\think\Lang.php修改函数detect()如下:
public static function detect() {
// 自动侦测设置获取语言选择
$langSet = Config::get('default_lang');
if (isset($_GET[self::$langDetectVar])) {
// url中设置了语言变量
$langSet = strtolower($_GET[self::$langDetectVar]);
Cookie::set(self::$langCookieVar, $langSet, 3600);
} elseif (Cookie::get(self::$langCookieVar)) {
// 获取上次用户的选择
$langSet = strtolower(Cookie::get(self::$langCookieVar));
} elseif ($langSet) {
// 获取默认语言
Cookie::set(self::$langCookieVar, $langSet, 3600);
} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// 自动侦测浏览器语言
preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$langSet = strtolower($matches[1]);
Cookie::set(self::$langCookieVar, $langSet, 3600);
}
if (empty(self::$allowLangList) || in_array($langSet, self::$allowLangList)) {
// 合法的语言
self::$range = $langSet;
}
}
四.控制器方法编写:
public function changelang() {
$lang=input('lang');
switch ($lang) {
case 'en':
cookie('think_var', 'en-us');
break;
case 'zn':
cookie('think_var', 'zh-cn');
break;
default:
cookie('think_var','zh-cn');
break;
}
}
五.html代码部分:
<button class='n layui-btn' type="button" lang='en'>{:lang('yingwen')}</button>
<button class='n layui-btn layui-btn-danger' lang='zn' type="button">{:lang('zhongwen')}</button>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.js"></script>
<script>
$('.n').click(function(){
var data={'lang':$(this).attr('lang')};
$.get("{:url('Index/changelang')}",data,function(){
location.reload();
})
})
</script>