You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ss-visit/MULTILINGUAL_API.md

184 lines
3.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 多语言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` 数组