From ea91cbb12332c608d56bbdeff9a97ac01f535c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=98=8A=E5=A4=A9?= <442384644@qq.com> Date: Fri, 16 Dec 2022 16:56:55 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=A8=8B=E5=BA=8F=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E3=80=91=E4=BC=98=E5=8C=96=E5=A4=9A=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/v1/PublicController.php | 27 ++++++++++++----- crmeb/app/api/route/v1.php | 2 ++ crmeb/app/common.php | 29 +++++++++++-------- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/crmeb/app/api/controller/v1/PublicController.php b/crmeb/app/api/controller/v1/PublicController.php index 7c716f955..7110865c2 100644 --- a/crmeb/app/api/controller/v1/PublicController.php +++ b/crmeb/app/api/controller/v1/PublicController.php @@ -618,14 +618,15 @@ class PublicController $request = app()->request; //获取接口传入的语言类型 if (!$range = $request->header('cb-lang')) { -// //根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文 -// if ($request->header('accept-language') !== null) { -// $range = explode(',', $request->header('accept-language'))[0]; -// } else { -// $range = 'zh-CN'; -// } //没有传入则使用系统默认语言显示 - $range = $langTypeServices->value(['is_default'=>1],'file_name'); + if (!$range = $langTypeServices->value(['is_default' => 1], 'file_name')) { + //系统没有设置默认语言的话,根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文 + if ($request->header('accept-language') !== null) { + $range = explode(',', $request->header('accept-language'))[0]; + } else { + $range = 'zh-CN'; + } + } } // 获取type_id $typeId = $langCountryServices->value(['code' => $range], 'type_id') ?: 1; @@ -643,6 +644,18 @@ class PublicController return app('json')->success([$range => $lang]); } + /** + * 获取当前后台设置的默认语言类型 + * @return mixed + */ + public function getDefaultLangType() + { + /** @var LangTypeServices $langTypeServices */ + $langTypeServices = app()->make(LangTypeServices::class); + $lang_type = $langTypeServices->value(['is_default' => 1], 'file_name'); + return app('json')->success(compact('lang_type')); + } + /** * 获取版本号 * @return mixed diff --git a/crmeb/app/api/route/v1.php b/crmeb/app/api/route/v1.php index ddcb8bec2..5f6ae984f 100644 --- a/crmeb/app/api/route/v1.php +++ b/crmeb/app/api/route/v1.php @@ -386,6 +386,8 @@ Route::group(function () { Route::get('get_lang_type_list', 'v1.PublicController/getLangTypeList')->name('getLangTypeList'); //获取当前语言json Route::get('get_lang_json', 'v1.PublicController/getLangJson')->name('getLangJson'); + //获取当前后台设置的默认语言类型 + Route::get('get_default_lang_type', 'v1.PublicController/getDefaultLangType')->name('getLangJson'); })->middleware(\app\http\middleware\AllowOriginMiddleware::class)->middleware(\app\api\middleware\StationOpenMiddleware::class)->middleware(\app\api\middleware\AuthTokenMiddleware::class, false); Route::miss(function () { diff --git a/crmeb/app/common.php b/crmeb/app/common.php index 75364fd0d..322a3d2d3 100644 --- a/crmeb/app/common.php +++ b/crmeb/app/common.php @@ -921,25 +921,32 @@ if (!function_exists('getLang')) { */ function getLang($code, array $replace = []) { + /** @var LangCountryServices $langCountryServices */ + $langCountryServices = app()->make(LangCountryServices::class); + /** @var LangTypeServices $langTypeServices */ + $langTypeServices = app()->make(LangTypeServices::class); + /** @var LangCodeServices $langCodeServices */ + $langCodeServices = app()->make(LangCodeServices::class); + $request = app()->request; //获取接口传入的语言类型 if (!$range = $request->header('cb-lang')) { - if ($request->header('accept-language') !== null) { - $range = explode(',', $request->header('accept-language'))[0]; - } else { - $range = 'zh-CN'; + //没有传入则使用系统默认语言显示 + if (!$range = $langTypeServices->value(['is_default' => 1], 'file_name')) { + //系统没有设置默认语言的话,根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文 + if ($request->header('accept-language') !== null) { + $range = explode(',', $request->header('accept-language'))[0]; + } else { + $range = 'zh-CN'; + } } } // 获取type_id - /** @var LangCountryServices $langCountryServices */ - $langCountryServices = app()->make(LangCountryServices::class); $typeId = $langCountryServices->value(['code' => $range], 'type_id') ?: 1; // 获取类型 - $langData = CacheService::redisHandler()->remember('lang_type_data', function () { - /** @var LangTypeServices $langTypeServices */ - $langTypeServices = app()->make(LangTypeServices::class); + $langData = CacheService::redisHandler()->remember('lang_type_data', function () use ($langTypeServices) { return $langTypeServices->getColumn(['status' => 1, 'is_del' => 0], 'file_name', 'id'); }, 3600); @@ -947,9 +954,7 @@ if (!function_exists('getLang')) { $langStr = 'lang_' . str_replace('-', '_', $langData[$typeId]); //读取当前语言的语言包 - $lang = CacheService::redisHandler()->remember($langStr, function () use ($typeId, $range) { - /** @var LangCodeServices $langCodeServices */ - $langCodeServices = app()->make(LangCodeServices::class); + $lang = CacheService::redisHandler()->remember($langStr, function () use ($typeId, $range, $langCodeServices) { return $langCodeServices->getColumn(['type_id' => $typeId, 'is_admin' => 1], 'lang_explain', 'code'); }, 3600); //获取返回文字