调整获取code码不在抛出错误信息

This commit is contained in:
liaofei 2023-02-27 14:16:06 +08:00
parent 3c32971b0d
commit 666b7d1cd2

View File

@ -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;
}
}
}