# 前台Mobile端多语言支持实现总结 ## 实现内容 已成功为前台mobile端所有接口添加中英双语支持,确保所有错误消息和响应文本都能根据 `Accept-Language` 头部自动切换语言。 ## 修改的文件 ### 1. 语言文件 #### 中文语言文件 (`lang/zh-CN/mobile.php`) ```php [ 'code_required' => 'code必填', 'code_invalid' => 'code异常', 'update_success' => '更新成功', 'mobile_required' => 'code必填', 'id_required' => 'Id必填', ], // 拜访管理 'visit' => [ 'name_required' => '名称必填', 'visit_area_id_required' => '区域id必填', 'accept_admin_id_required' => '接待人必填', 'accompany_id_required' => '陪同人必填', 'accept_admin_department_not_exists' => '接待人部门不存在', 'accept_admin_department_manager_not_exists' => '接待人部门不存在负责人', 'update_success' => '更新成功', 'type_required' => '类型必填', 'not_studied' => '未学习', 'study_expired' => '学习过期', 'study_valid' => '学习有效中', 'idcard_required' => '身份证数组必填', ], // 通用 'common' => [ 'mobile_required' => '手机号必填', 'mobile_numeric' => '手机号格式错误', 'type_required' => '类型必填', 'send_too_frequent' => '请勿频繁发送', 'send_success' => '发送成功', 'send_failed' => '发送失败', ], ]; ``` #### 英文语言文件 (`lang/en/mobile.php`) ```php [ 'code_required' => 'Code is required', 'code_invalid' => 'Code is invalid', 'update_success' => 'Update successful', 'mobile_required' => 'Code is required', 'id_required' => 'Id is required', ], // Visit Management 'visit' => [ 'name_required' => 'Name is required', 'visit_area_id_required' => 'Visit area id is required', 'accept_admin_id_required' => 'Accept admin is required', 'accompany_id_required' => 'Accompany person is required', 'accept_admin_department_not_exists' => 'Accept admin department does not exist', 'accept_admin_department_manager_not_exists' => 'Accept admin department manager does not exist', 'update_success' => 'Update successful', 'type_required' => 'Type is required', 'not_studied' => 'Not studied', 'study_expired' => 'Study expired', 'study_valid' => 'Study is valid', 'idcard_required' => 'Id card array is required', ], // Common 'common' => [ 'mobile_required' => 'Mobile is required', 'mobile_numeric' => 'Mobile format error', 'type_required' => 'Type is required', 'send_too_frequent' => 'Please do not send too frequently', 'send_success' => 'Send successful', 'send_failed' => 'Send failed', ], ]; ``` ### 2. 控制器修改 #### UserController.php - 修正了所有硬编码的中文错误消息 - 使用 `__('mobile.user.xxx')` 格式调用多语言文本 - 修正了 `Config::get()` 为 `Config::all()` 的调用错误 #### VisitController.php - 修正了所有硬编码的中文错误消息 - 使用 `__('mobile.visit.xxx')` 格式调用多语言文本 - 包括验证消息、业务错误消息和成功消息 #### CommonController.php - 修正了所有硬编码的中文错误消息 - 使用 `__('mobile.common.xxx')` 格式调用多语言文本 ### 3. 路由配置修改 #### routes/api.php ```php // 前台 Route::get('mobile/user/login', [\App\Http\Controllers\Mobile\UserController::class, 'login'])->middleware('set.locale'); Route::get('mobile/user/config', [\App\Http\Controllers\Mobile\UserController::class, 'config'])->middleware('set.locale'); Route::group(["namespace" => "Mobile", "prefix" => "mobile", "middleware" => ["sanctum.jwt:mobile", "set.locale"]], function () { // ... 其他路由 }); ``` ## 支持的接口 ### 用户管理接口 - `GET /api/mobile/user/login` - 用户登录 - `GET /api/mobile/user/config` - 获取配置信息 - `POST /api/mobile/user/save` - 更新用户信息 - `GET /api/mobile/user/mobile` - 获取手机号 - `GET /api/mobile/user/show` - 获取用户信息 - `GET /api/mobile/user/my-visit` - 我的拜访列表 - `GET /api/mobile/user/my-visit-detail` - 我的拜访详情 ### 拜访管理接口 - `POST /api/mobile/visit/visit-save` - 保存拜访 - `GET /api/mobile/visit/get-ask` - 获取学习内容 - `GET /api/mobile/visit/visit-area` - 拜访区域列表 - `GET /api/mobile/visit/visit-time` - 拜访时间段列表 - `GET /api/mobile/visit/ask-log` - 获取学习记录 - `POST /api/mobile/visit/ask-save` - 保存学习记录 - `POST /api/mobile/visit/idcard-check` - 身份证检查 ### 通用接口 - `GET /api/mobile/common/send-sms` - 发送短信 ## 多语言使用方式 ### 客户端请求 ```javascript // 中文请求 fetch('/api/mobile/user/login', { headers: { 'Accept-Language': 'zh-CN' } }); // 英文请求 fetch('/api/mobile/user/login', { headers: { 'Accept-Language': 'en' } }); ``` ### 响应示例 #### 中文响应 ```json { "errcode": 10001, "errmsg": "code必填" } ``` #### 英文响应 ```json { "errcode": 10001, "errmsg": "Code is required" } ``` ## 测试结果 ✅ **所有测试通过** - ✅ mobile login endpoint supports multilingual - ✅ mobile config endpoint supports multilingual - ✅ mobile visit area endpoint supports multilingual - ✅ mobile visit time endpoint supports multilingual ## 技术实现 1. **中间件支持**: 所有mobile端路由都应用了 `set.locale` 中间件 2. **语言检测**: 通过 `Accept-Language` 头部自动检测语言 3. **统一响应**: 使用 `ApiResponse` trait 确保响应格式一致 4. **错误码标准化**: 使用 `ResponseCode` 常量确保错误码统一 ## 优势 1. **国际化支持**: 完整的中英双语支持 2. **用户体验**: 根据用户语言偏好自动切换 3. **维护性**: 集中的语言文件管理 4. **一致性**: 与系统其他部分保持统一的响应格式 5. **扩展性**: 易于添加更多语言支持 ## 总结 前台mobile端已成功实现完整的中英双语支持,所有接口都能根据 `Accept-Language` 头部自动切换语言,提供更好的国际化用户体验。