优化语言获取和加载

pull/406/head
Karson 2022-05-27 15:30:05 +08:00
parent b3e172ddce
commit 1a07280f79
6 changed files with 33 additions and 12 deletions

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="{$config.language}">
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

View File

@ -9,6 +9,12 @@ use think\Loader;
class Common
{
public function appInit()
{
$allowLangList = Config::get('allow_lang_list') ?? ['zh-cn', 'en'];
Lang::setAllowLangList($allowLangList);
}
public function appDispatch(&$dispatch)
{
$pathinfoArr = explode('/', request()->pathinfo());
@ -56,8 +62,11 @@ class Common
Config::set('app_trace', false);
}
// 切换多语言
if (Config::get('lang_switch_on') && $request->get('lang')) {
\think\Cookie::set('think_var', $request->get('lang'));
if (Config::get('lang_switch_on')) {
$lang = $request->get('lang');
if (preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang)) {
\think\Cookie::set('think_var', $lang);
}
}
// Form别名
if (!class_exists('Form')) {
@ -68,8 +77,10 @@ class Common
public function addonBegin(&$request)
{
// 加载插件语言包
$lang = request()->langset();
$lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
Lang::load([
APP_PATH . 'common' . DS . 'lang' . DS . $request->langset() . DS . 'addon' . EXT,
APP_PATH . 'common' . DS . 'lang' . DS . $lang . DS . 'addon' . EXT,
]);
$this->moduleInit($request);
}

View File

@ -153,7 +153,9 @@ class Api
protected function loadlang($name)
{
$name = Loader::parseName($name);
Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
$lang = $this->request->langset();
$lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
Lang::load(APP_PATH . $this->request->module() . '/lang/' . $lang . '/' . str_replace('.', '/', $name) . '.php');
}
/**

View File

@ -190,7 +190,8 @@ class Backend extends Controller
}
// 语言检测
$lang = strip_tags($this->request->langset());
$lang = $this->request->langset();
$lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
$site = Config::get("site");
@ -236,7 +237,9 @@ class Backend extends Controller
protected function loadlang($name)
{
$name = Loader::parseName($name);
Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
$lang = $this->request->langset();
$lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
Lang::load(APP_PATH . $this->request->module() . '/lang/' . $lang . '/' . str_replace('.', '/', $name) . '.php');
}
/**

View File

@ -88,7 +88,8 @@ class Frontend extends Controller
$this->view->assign('user', $this->auth->getUser());
// 语言检测
$lang = strip_tags($this->request->langset());
$lang = $this->request->langset();
$lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
$site = Config::get("site");
@ -126,8 +127,10 @@ class Frontend extends Controller
*/
protected function loadlang($name)
{
$name = Loader::parseName($name);
Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
$name = Loader::parseName($name);
$lang = $this->request->langset();
$lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
Lang::load(APP_PATH . $this->request->module() . '/lang/' . $lang . '/' . str_replace('.', '/', $name) . '.php');
}
/**

View File

@ -47,6 +47,8 @@ return [
'default_filter' => '',
// 默认语言
'default_lang' => 'zh-cn',
// 默认语言
'allow_lang_list' => ['zh-cn', 'en'],
// 应用类库后缀
'class_suffix' => false,
// 控制器类后缀
@ -264,7 +266,7 @@ return [
//会员注册验证码类型email/mobile/wechat/text/false
'user_register_captcha' => 'text',
//登录验证码
'login_captcha' => true,
'login_captcha' => false,
//登录失败超过10次则1天后重试
'login_failure_retry' => true,
//是否同一账号同一时间只能在一个地方登录
@ -294,7 +296,7 @@ return [
//允许跨域的域名,多个以,分隔
'cors_request_domain' => 'localhost,127.0.0.1',
//版本号
'version' => '1.3.3.20220121',
'version' => '1.3.4.20220527',
//API接口地址
'api_url' => 'https://api.fastadmin.net',
],