diff --git a/.example.env b/.example.env index 93e5c287..898b7ea9 100644 --- a/.example.env +++ b/.example.env @@ -47,8 +47,8 @@ REFRESH_TOKEN_LIFETIME = 1209600; # 刷新令牌有效期 RESOURCE_IMAGES_DOMAIN = http://local.orico.com; # 图片资源服务器地址 RESOURCE_VIDEOS_DOMAIN = http://local.orico.com; # 视频资源服务器地址 -# 视图模板规则配置 -[VIEW_TPL] +# 前台视图模板规则配置 +[INDEX_VIEW_TPL] # 视图目录 # query 规则:URL参数 mtpl=1 表示移动端访问 # 例如:http://xxxx.com?mtpl=1 @@ -63,4 +63,20 @@ RULE_QUERY_VALUE = 1 RULE_DOMAIN_SCHEME[] = http RULE_DOMAIN_SCHEME[] = https # domain 规则域名 -RULE_DOMAIN_HOST = mobile.orico.cn \ No newline at end of file +RULE_DOMAIN_HOST = mobile.orico.cn + +# 前台语言检测配置 +[INDEX_LANG_DETECT] +# 是否启用域名检测方式来检测语言 +DOMAIN_DETECT = true +# 域名规则 +# 格式:域名=语言 +# 例如:mobile.orico.cn=zh-cn +DOMAIN_RULE[] = orico.cn=zh-cn +DOMAIN_RULE[] = orico.com.cn=zh-cn +DOMAIN_RULE[] = www.orico.cn=zh-cn +DOMAIN_RULE[] = www.orico.com.cn=zh-cn +DOMAIN_RULE[] = ow.f2b211.com=zh-cn +DOMAIN_RULE[] = orico.cc=en-us +DOMAIN_RULE[] = www.orico.cc=en-us +DOMAIN_RULE[] = ow.us.f2b211.com=en-us diff --git a/app/index/common.php b/app/index/common.php index 63d2a364..2e8ad20e 100644 --- a/app/index/common.php +++ b/app/index/common.php @@ -194,14 +194,14 @@ if (!function_exists('get_platform')) { } else { // 在非移动端环境,根据配置规则判断是否要显示移动端 $view_cfg = $view_cfg = [ - 'rule' => env('VIEW_TPL.RULE', 'query'), + 'rule' => env('INDEX_VIEW_TPL.RULE', 'query'), 'query' => [ - 'name' => env('VIEW_TPL.RULE_QUERY_NAME', 'mtpl'), - 'value' => env('VIEW_TPL.RULE_QUERY_VALUE', '1'), + 'name' => env('INDEX_VIEW_TPL.RULE_QUERY_NAME', 'mtpl'), + 'value' => env('INDEX_VIEW_TPL.RULE_QUERY_VALUE', '1'), ], 'domain' => [ - 'scheme' => env('VIEW_TPL.RULE_DOMAIN_SCHEME', ['http']), - 'host' => env('VIEW_TPL.RULE_DOMAIN_HOST'), + 'scheme' => env('INDEX_VIEW_TPL.RULE_DOMAIN_SCHEME', ['http']), + 'host' => env('INDEX_VIEW_TPL.RULE_DOMAIN_HOST'), ], ]; if ($view_cfg['rule'] == 'query') { diff --git a/app/index/middleware.php b/app/index/middleware.php index bf7bb315..91580e28 100644 --- a/app/index/middleware.php +++ b/app/index/middleware.php @@ -2,7 +2,8 @@ // 这是系统自动生成的middleware定义文件 return [ // 启用多语言支持 - think\middleware\LoadLangPack::class, + // think\middleware\LoadLangPack::class, + app\index\middleware\LoadLangPack::class, // 确认请求来源 app\index\middleware\ConfirmRequestFrom::class, ]; diff --git a/app/index/middleware/LoadLangPack.php b/app/index/middleware/LoadLangPack.php new file mode 100644 index 00000000..098f9e33 --- /dev/null +++ b/app/index/middleware/LoadLangPack.php @@ -0,0 +1,39 @@ +getLangSet($request, env('INDEX_LANG_DETECT.DOMAIN_RULE', [])); + if ($lang != '') { + return $lang; + } + } + + return parent::detect($request); + } + + // 根据请求及规则获取语言 + private function getLangSet(Request $request, array $rules): string + { + $map = []; + foreach ($rules as $v) { + $val = str_replace(',', ',', $v); + $item = explode(',', $v); + foreach ($item as $val) { + $it = explode('=', $val); + $map[$it[0]] = $it[1]; + } + } + + return $map[$request->host()] ?? ''; + } +}