feeeei
9a51333101
feat(groups): 分组名称与描述支持多语言
- groups 新增 i18n JSONB 列(迁移 242):语言代码 -> {name, description},只存译文;
name/description 原列语义不变,仍用于唯一性校验、搜索与各类日志
- 用户侧接口由后端按请求语言输出:取 Accept-Language 中权重最高的一项,先按完整
语言代码、再按主语言匹配;该语言有译文的字段换成译文,否则保持原字段,且不再带出
译文表。覆盖密钥、可用分组、订阅(含进度与汇总)、兑换、使用记录、可用渠道、
模型广场、套餐列表
- 管理端接口一律返回原字段;分组管理接口额外带 i18n 供编辑
- 创建/编辑分组:名称、描述的标题行右侧新增语言下拉,同一个输入框在默认内容与各语言
版本之间切换;语种跟随前端 availableLocales
- 管理端写入:创建/更新接受 i18n(更新时缺省不修改,传入则整体替换),校验语言代码
形态与名称长度并丢弃空译文;简易模式同样放行;复制分组只带走描述译文
- 切换界面语言后整页刷新,让已加载的数据换成新语言;模型广场响应加
Vary: Accept-Language
- 网关路径,以及只带 group_name 字符串的统计、错误记录出口不做本地化
2026-10-09 11:39:18 +08:00
..
2026-07-19 14:42:01 +08:00
2026-07-23 13:43:57 +08:00
2026-07-23 13:43:57 +08:00
2026-07-14 15:00:52 +08:00
2026-09-13 17:23:24 +08:00
2026-10-03 20:56:49 +08:00
2026-07-30 18:03:54 +08:00
2026-07-15 16:13:22 +08:00
2026-07-14 15:00:52 +08:00
2026-09-03 23:32:34 +09:00
2026-09-20 14:39:36 +08:00
2026-08-01 22:11:09 +08:00
2026-07-14 15:00:52 +08:00
2026-09-07 09:20:48 +08:00
2026-10-09 10:10:33 +08:00
2026-07-25 15:37:06 +08:00
2026-07-23 15:50:44 +08:00
2026-09-23 15:26:35 +08:00
2026-09-23 15:26:35 +08:00
2026-07-15 23:58:46 +08:00
2026-07-15 23:58:46 +08:00
2026-08-25 10:34:46 +08:00
2026-09-05 16:05:17 +08:00
2026-09-04 10:14:29 +08:00
2026-09-07 09:20:48 +08:00
2026-09-23 01:24:59 +08:00
2026-09-23 01:24:59 +08:00
2026-07-17 09:33:18 +08:00
2026-09-18 06:56:27 +08:00
2026-07-14 15:00:52 +08:00
2026-10-02 09:37:30 +08:00
2026-10-09 10:10:33 +08:00
2026-07-16 16:30:19 +08:00
2026-09-11 10:05:24 +08:00
2026-07-14 12:24:42 +08:00
2026-09-29 11:41:33 -04:00
2026-09-29 11:41:33 -04:00
2026-08-15 10:37:51 +00:00
2026-09-19 20:52:31 -04:00
2026-09-19 20:52:31 -04:00
2026-09-28 14:48:42 +08:00
2026-08-28 23:32:11 +08:00
2026-07-10 11:43:44 +08:00
2026-09-28 14:48:42 +08:00
2026-09-28 14:48:42 +08:00
2026-09-28 14:48:42 +08:00
2026-08-07 12:38:49 +08:00
2026-08-07 16:36:12 +08:00
2026-09-06 08:11:23 +08:00
2026-09-02 11:50:33 +08:00
2026-09-02 11:50:33 +08:00
2026-08-08 01:07:19 +08:00
2026-08-24 12:02:53 +08:00
2026-07-16 18:18:28 +08:00
2026-08-30 16:36:13 +08:00
2026-09-01 04:34:24 +09:00
2026-10-09 10:11:06 +08:00
2026-08-31 19:21:31 +08:00
2026-09-07 18:33:39 +08:00
2026-10-09 11:39:18 +08:00
2026-09-13 11:49:03 +08:00
2026-09-20 14:38:29 +08:00
2026-08-02 21:32:31 +08:00
2026-09-20 14:38:29 +08:00
2026-09-20 15:47:53 +08:00
2026-09-20 15:47:53 +08:00
2026-07-18 00:11:18 +08:00
2026-09-11 10:16:32 +08:00
2026-07-14 14:55:30 +08:00
2026-07-18 00:11:18 +08:00
2026-07-18 00:11:18 +08:00
2026-07-14 01:29:46 +08:00
2026-07-14 01:29:46 +08:00
2026-07-14 01:29:30 +08:00
2026-07-23 10:26:46 +08:00
2026-10-02 00:25:41 +08:00
2026-10-09 10:11:06 +08:00
2026-09-19 11:25:56 +08:00
2026-09-13 17:23:24 +08:00
2026-09-13 17:23:24 +08:00
2026-09-13 17:23:24 +08:00
2026-09-08 13:38:41 +08:00
2026-09-05 23:56:59 +08:00
2026-09-29 01:50:21 +08:00
2026-07-16 00:40:46 +08:00
2026-08-29 17:28:00 +08:00
2026-08-29 17:28:00 +08:00
2026-09-13 00:14:16 -04:00
2026-09-11 00:50:17 +08:00
2026-08-04 15:09:29 +08:00
2026-10-02 00:25:41 +08:00
2026-08-26 19:07:39 +08:00
2026-07-20 00:09:21 +08:00
2026-10-02 00:25:41 +08:00
2026-10-02 00:25:41 +08:00
2026-09-13 12:33:35 +08:00
2026-09-13 11:49:03 +08:00
2026-07-19 22:40:44 +08:00
2026-07-19 22:40:44 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-08-28 23:32:11 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-07-18 10:46:42 +08:00
2026-09-10 16:41:58 +08:00
2026-09-10 16:41:58 +08:00