【程序目录】优化多语言

This commit is contained in:
吴昊天 2022-12-16 16:56:55 +08:00
parent 9bb9fe5b48
commit ea91cbb123
3 changed files with 39 additions and 19 deletions

View File

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

View File

@ -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 () {

View File

@ -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);
//获取返回文字