diff --git a/library/think/Lang.php b/library/think/Lang.php index d52f1947..ab7b3870 100644 --- a/library/think/Lang.php +++ b/library/think/Lang.php @@ -26,6 +26,8 @@ class Lang // 允许语言列表 protected static $allowLangList = []; + private static $acceptLanguage = ['zh-hans-cn'=>'zh-cn']; + // 设定当前的语言 public static function range($range = '') { @@ -34,6 +36,7 @@ class Lang } else { self::$range = $range; } + return self::$range; } /** @@ -93,7 +96,6 @@ class Lang /** * 获取语言定义(不区分大小写) * @param string|null $name 语言变量 - * @param array $vars 变量替换 * @param string $range 语言作用域 * @return mixed */ @@ -152,26 +154,26 @@ class Lang { // 自动侦测设置获取语言选择 $langSet = ''; + if (isset($_GET[self::$langDetectVar])) { // url中设置了语言变量 $langSet = strtolower($_GET[self::$langDetectVar]); - Cookie::set(self::$langCookieVar, $langSet, self::$langCookieExpire); - } elseif (Cookie::get(self::$langCookieVar)) { - // 获取上次用户的选择 - $langSet = strtolower(Cookie::get(self::$langCookieVar)); - } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { + } + 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, self::$langCookieExpire); + $header_accept_lang_config = Config::get('header_accept_lang'); + if(isset($header_accept_lang_config[$langSet])){ + $langSet =$header_accept_lang_config[$langSet]; + }elseif(isset(self::$acceptLanguage[$langSet])){ + $langSet =self::$acceptLanguage[$langSet]; + } } if (empty(self::$allowLangList) || in_array($langSet, self::$allowLangList)) { // 合法的语言 self::$range = $langSet ?: self::$range; } - if ('zh-hans-cn' == self::$range) { - self::$range = 'zh-cn'; - } return self::$range; }