架构与缓存
翻译服务采用「请求 → 缓存 → 引擎降级链 → 异步持久化」四层架构,避免重复调用外部接口,平衡响应速度与多语言数据一致性。
引擎降级链
- 1
deep-translator / Google— 主要翻译引擎,5000 字符/次,长文本自动分片 - 2
deep-translator / MyMemory— Google 失败时的免费备用(500 字符截断) - 3
LibreTranslate SDK— 本地 LibreTranslate 实例 - 4
argos-translate— 完全离线引擎(最慢但永远可用)
缓存策略
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| translate:cache:* | Redis | 可选 | 热缓存键 (SHA256(source|target|text)[:32]),TTL 24h |
| translate:jobs | Redis List | 可选 | 异步翻译队列,新内容/更新入队 |
| translate:jobs:dlq | Redis List | 可选 | 失败任务死信队列 (max 1000) |
| content_translations | PostgreSQL | 可选 | 持久化表 (entity_type, entity_id, field, target_lang) 唯一索引 |
多语言切换请求头
前端在调用业务接口时通过 x-language 头声明当前语言,Go 后端自动合并翻译到响应:
HTTP
GET /api/v1/vendors/8da8230f-7836-45e1-93a2-d9bbb4f22f5f HTTP/1.1
Host: api.ogmiao.com
x-language: en
Authorization: Bearer sk-your-api-key管理后台接口(需 Admin 鉴权)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| GET /api/admin/translate/status | - | 可选 | 服务健康状态、在线/离线、队列长度、DLQ |
| GET /api/admin/translate/config | - | 可选 | 读取当前配置(目标语言列表、是否启用等) |
| PUT /api/admin/translate/config | - | 可选 | 更新配置 |
| POST /api/admin/translate/test | - | 可选 | 测试翻译 (body: {text, source, target}) |
| POST /api/admin/translate/retranslate/:module/:type/:id | - | 可选 | 重新入队翻译指定实体 |