切换语言

This commit is contained in:
2025-03-20 11:32:40 +08:00
parent f3fdad93ba
commit a5713b1adf
5 changed files with 55 additions and 15 deletions
+34 -1
View File
@@ -101,6 +101,7 @@ class UserController
$password = Util::getParam($request, 'password'); $password = Util::getParam($request, 'password');
$mobile = Util::getParam($request, 'mobile'); $mobile = Util::getParam($request, 'mobile');
$id = Util::getParam($request, 'id'); $id = Util::getParam($request, 'id');
$language = Util::getParam($request, 'language');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return Util::fail([], 'email' . $email . trans('not_null')); return Util::fail([], 'email' . $email . trans('not_null'));
@@ -146,6 +147,7 @@ class UserController
} }
unset($res['password']); unset($res['password']);
locale($language);
if ($res) { if ($res) {
return Util::success($res, trans('register_success')); return Util::success($res, trans('register_success'));
} else { } else {
@@ -153,5 +155,36 @@ class UserController
} }
} }
/**
* 注册
* @param Request $request
* @return \support\Response
* @throws \Random\RandomException
*/
public function language(Request $request)
{
$id = Util::getParam($request, 'id');
$language = Util::getParam($request, 'language');
if (Util::isEmpty($id)) {
return Util::fail([], 'id' . trans('not_null'));
}
if (Util::isEmpty($language)) {
return Util::fail([], 'language' . trans('not_null'));
}
if (!in_array($language,['en','zh_CN'])) {
return Util::fail([], trans('param_error'));
}
$data = [
'language' => $language,
];
$res = User::where('id', $id)
->update($data);
locale($language);
if ($res) {
return Util::success(null, trans('language_success'));
} else {
return Util::fail(null, trans('language_fail'));
}
}
} }
+2 -1
View File
@@ -70,7 +70,7 @@ class AuthMiddleware implements MiddlewareInterface
$userId = $decoded->sub; $userId = $decoded->sub;
$user = User::select(['id','name','sex','role','avatar','email','password']) $user = User::select(['id','name','sex','role','avatar','email','password','language'])
->find($userId); ->find($userId);
if(!$user){ if(!$user){
return Util::fail(['user'=>$user],trans('user_none')); return Util::fail(['user'=>$user],trans('user_none'));
@@ -80,6 +80,7 @@ class AuthMiddleware implements MiddlewareInterface
// 将用户ID存入请求对象,供后续使用 // 将用户ID存入请求对象,供后续使用
// $request->user = ['id' => $userId]; // $request->user = ['id' => $userId];
$request->user = $user; $request->user = $user;
locale($user['language']);
return $handler($request); return $handler($request);
} catch (BusinessException $e) { } catch (BusinessException $e) {
return json(['code' => 401, 'msg' => $e->getMessage()]); return json(['code' => 401, 'msg' => $e->getMessage()]);
+2 -2
View File
@@ -17,9 +17,9 @@
*/ */
return [ return [
// 默认语言 // 默认语言
'locale' => 'zh_CN', 'locale' => 'en',
// 回退语言,当前语言中无法找到翻译时则尝试使用回退语言中的翻译 // 回退语言,当前语言中无法找到翻译时则尝试使用回退语言中的翻译
'fallback_locale' => ['zh_CN', 'en'], 'fallback_locale' => ['en', 'zh_CN'],
// Folder where language files are stored // Folder where language files are stored
'path' => base_path() . '/resource/translations', 'path' => base_path() . '/resource/translations',
]; ];
+3
View File
@@ -14,4 +14,7 @@ return [
'save_fail' => 'save fail', 'save_fail' => 'save fail',
'register_success' => 'register success', 'register_success' => 'register success',
'register_fail' => 'register fail', 'register_fail' => 'register fail',
'language_success' => 'Successfully switched languages',
'language_fail' => 'Language switching failed',
'param_error' => 'param error',
]; ];
+3
View File
@@ -14,4 +14,7 @@ return [
'save_fail' => '保存失败', 'save_fail' => '保存失败',
'register_success' => '注册成功', 'register_success' => '注册成功',
'register_fail' => '注册失败', 'register_fail' => '注册失败',
'language_success' => '切换语言成功',
'language_fail' => '切换语言失败',
'param_error' => '参数错误',
]; ];