From 666b7d1cd2c91379a1dba75cde6307463f4e9125 Mon Sep 17 00:00:00 2001 From: liaofei <136327134@qq.com> Date: Mon, 27 Feb 2023 14:16:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=8E=B7=E5=8F=96code?= =?UTF-8?q?=E7=A0=81=E4=B8=8D=E5=9C=A8=E6=8A=9B=E5=87=BA=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crmeb/app/common.php | 102 ++++++++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 45 deletions(-) diff --git a/crmeb/app/common.php b/crmeb/app/common.php index 72c84a734..e329293df 100644 --- a/crmeb/app/common.php +++ b/crmeb/app/common.php @@ -22,6 +22,7 @@ use app\services\system\lang\LangTypeServices; use app\services\system\lang\LangCodeServices; use app\services\system\lang\LangCountryServices; use think\facade\Config; +use think\facade\Log; if (!function_exists('getWorkerManUrl')) { @@ -922,61 +923,72 @@ 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); + //确保获取语言的时候不会报错 + try { - $request = app()->request; - //获取接口传入的语言类型 - if (!$range = $request->header('cb-lang')) { - //没有传入则使用系统默认语言显示 - $range = $langTypeServices->cacheDriver()->remember('range_name', function () use ($langTypeServices) { - return $langTypeServices->value(['is_default' => 1], 'file_name'); - }); - if (!$range) { - //系统没有设置默认语言的话,根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文 - if ($request->header('accept-language') !== null) { - $range = explode(',', $request->header('accept-language'))[0]; - } else { - $range = 'zh-CN'; + /** @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')) { + //没有传入则使用系统默认语言显示 + $range = $langTypeServices->cacheDriver()->remember('range_name', function () use ($langTypeServices) { + return $langTypeServices->value(['is_default' => 1], 'file_name'); + }); + if (!$range) { + //系统没有设置默认语言的话,根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文 + if ($request->header('accept-language') !== null) { + $range = explode(',', $request->header('accept-language'))[0]; + } else { + $range = 'zh-CN'; + } } } - } - // 获取type_id - $typeId = $langCountryServices->cacheDriver()->remember('type_id_' . $range, function () use ($langCountryServices, $range) { - return $langCountryServices->value(['code' => $range], 'type_id') ?: 1; - }, 3600); + // 获取type_id + $typeId = $langCountryServices->cacheDriver()->remember('type_id_' . $range, function () use ($langCountryServices, $range) { + return $langCountryServices->value(['code' => $range], 'type_id') ?: 1; + }, 3600); - // 获取类型 - $langData = CacheService::remember('lang_type_data', function () use ($langTypeServices) { - return $langTypeServices->getColumn(['status' => 1, 'is_del' => 0], 'file_name', 'id'); - }, 3600); + // 获取类型 + $langData = CacheService::remember('lang_type_data', function () use ($langTypeServices) { + return $langTypeServices->getColumn(['status' => 1, 'is_del' => 0], 'file_name', 'id'); + }, 3600); - // 获取缓存key - $langStr = 'lang_' . str_replace('-', '_', $langData[$typeId]); + // 获取缓存key + $langStr = 'lang_' . str_replace('-', '_', $langData[$typeId]); - //读取当前语言的语言包 - $lang = CacheService::remember($langStr, function () use ($typeId, $range, $langCodeServices) { - return $langCodeServices->getColumn(['type_id' => $typeId, 'is_admin' => 1], 'lang_explain', 'code'); - }, 3600); - //获取返回文字 - $message = (string)($lang[$code] ?? 'Code Error'); + //读取当前语言的语言包 + $lang = CacheService::remember($langStr, function () use ($typeId, $range, $langCodeServices) { + return $langCodeServices->getColumn(['type_id' => $typeId, 'is_admin' => 1], 'lang_explain', 'code'); + }, 3600); + //获取返回文字 + $message = (string)($lang[$code] ?? 'Code Error'); - //替换变量 - if (!empty($replace) && is_array($replace)) { - // 关联索引解析 - $key = array_keys($replace); - foreach ($key as &$v) { - $v = "{:{$v}}"; + //替换变量 + if (!empty($replace) && is_array($replace)) { + // 关联索引解析 + $key = array_keys($replace); + foreach ($key as &$v) { + $v = "{:{$v}}"; + } + $message = str_replace($key, $replace, $message); } - $message = str_replace($key, $replace, $message); - } - return $message; + return $message; + } catch (\Throwable $e) { + Log::error('获取语言code:' . $code . '发成错误,错误原因是:' . json_encode([ + 'file' => $e->getFile(), + 'message' => $e->getMessage(), + 'line' => $e->getLine() + ])); + return $code; + } } }