# 多语言API接口文档 ## 概述 本系统已实现完整的中英双语多语言支持,所有API接口都支持通过HTTP头动态语言切换。 ## 支持的语言 - `zh-CN`: 简体中文(默认) - `en`: 英文 ## 语言切换方式 ### 通过HTTP头切换 ```bash # 设置Accept-Language头为中文 Accept-Language: zh-CN # 设置Accept-Language头为英文 Accept-Language: en ``` ## 接口示例 ### 门岗端接口 #### 获取拜访列表(中文) ```bash GET /api/gate/visits?date=2024-01-15 Accept-Language: zh-CN ``` 响应: ```json { "code": 200, "message": "success", "data": { "current_page": 1, "data": [...], "total": 10 } } ``` #### 获取拜访列表(英文) ```bash GET /api/gate/visits?date=2024-01-15 Accept-Language: en ``` ### 后台管理接口 #### 获取拜访日志列表(中文) ```bash GET /api/admin/visit-logs/index?token=your_token Accept-Language: zh-CN ``` #### 获取拜访日志列表(英文) ```bash GET /api/admin/visit-logs/index?token=your_token Accept-Language: en ``` ## 错误消息多语言 所有错误消息都支持多语言: ### 中文错误消息 ```json { "code": 400, "message": "拜访ID不能为空", "data": null } ``` ### 英文错误消息 ```json { "code": 400, "message": "Visit ID is required", "data": null } ``` ## 语言文件结构 ``` lang/ ├── zh-CN/ │ ├── common.php # 通用消息 │ ├── gate.php # 门岗端消息 │ ├── visit.php # 拜访相关消息 │ ├── visit_log.php # 拜访日志消息 │ └── ... └── en/ ├── common.php # Common messages ├── gate.php # Gate interface messages ├── visit.php # Visit related messages ├── visit_log.php # Visit log messages └── ... ``` ## 测试多语言功能 可以通过设置不同的Accept-Language头来测试多语言功能: ```bash # 测试中文响应 curl -H "Accept-Language: zh-CN" http://your-domain/api/gate/visits # 测试英文响应 curl -H "Accept-Language: en" http://your-domain/api/gate/visits ``` ## 中间件说明 系统使用 `SetLocale` 中间件自动处理语言切换: 1. 检查HTTP头 `Accept-Language` 2. 验证语言是否支持(zh-CN, en) 3. 默认使用 `zh-CN` ## 前端集成建议 ### JavaScript示例 ```javascript // 请求时设置Accept-Language头 function fetchVisits(lang = 'zh-CN') { return fetch('/api/gate/visits', { headers: { 'Accept-Language': lang } }).then(response => response.json()); } // 使用 fetchVisits('en'); ``` ### Vue.js示例 ```javascript // 在Vue组件中 export default { data() { return { currentLang: 'zh-CN' } }, methods: { switchLanguage(lang) { this.currentLang = lang; }, async fetchData() { const response = await this.$http.get('/api/gate/visits', { headers: { 'Accept-Language': this.currentLang } }); return response.data; } } } ``` ## 注意事项 1. 所有API接口都支持多语言,无需额外配置 2. 通过设置 `Accept-Language` HTTP头来指定语言 3. 不设置语言头则使用默认语言(zh-CN) 4. 错误消息和成功消息都会根据当前语言返回对应文本 5. 支持的语言:zh-CN(中文)、en(英文) ## 扩展新语言 如需添加新语言支持: 1. 在 `lang/` 目录下创建新的语言文件夹 2. 复制现有语言文件并翻译内容 3. 在 `SetLocale` 中间件中添加新语言到 `$supportedLocales` 数组