优化多语言支持,url参数变量及cookie名称可通过配置更换

This commit is contained in:
huangdijia
2015-12-21 11:29:26 +08:00
parent 2bd097072b
commit 050735d8c9
2 changed files with 10 additions and 7 deletions

View File

@@ -27,6 +27,10 @@ return [
'lang_switch_on' => false,
// 支持的多语言列表
'lang_list' => ['zh-cn'],
// 语言变量
'lang_detect_var' => 'lang',
// 语言cookie变量
'lang_cookie_var' => 'think_lang',
// +----------------------------------------------------------------------
// | 模块设置

View File

@@ -17,8 +17,6 @@ class Lang
private static $lang = [];
// 语言作用域
private static $range = 'zh-cn';
// 语言变量
private static $var = 'lang';
// 设定语言参数的作用域(语言)
public static function range($range = '')
@@ -112,17 +110,18 @@ class Lang
public static function detect()
{
// 自动侦测设置获取语言选择
if (isset($_GET[self::$var])) {
$langSet = $_GET[self::$var]; // url中设置了语言变量
if (isset($_GET[Config::get('lang_detect_var')])) {
// url中设置了语言变量
$langSet = $_GET[Config::get('lang_detect_var')];
\think\Cookie::set('think_language', $langSet, 3600);
} elseif (\think\Cookie::get('think_language')) {
} elseif (\think\Cookie::get(Config::get('lang_cookie_var'))) {
// 获取上次用户的选择
$langSet = \think\Cookie::get('think_language');
$langSet = \think\Cookie::get(Config::get('lang_cookie_var'));
} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// 自动侦测浏览器语言
preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$langSet = $matches[1];
\think\Cookie::set('think_language', $langSet, 3600);
\think\Cookie::set(Config::get('lang_cookie_var'), $langSet, 3600);
}
if (in_array($langSet, \think\Config::get('lang_list'))) {
// 合法的语言