架构决策(ADR)
ADR 0007: 多语言——按五种语言做架构,先交付两种;其余以 locale 包形式提供
在每一层贯穿一条 locale 缝;核心中交付并测试中文 + 英文;日语 / 意大利语 / 德语以社区 locale 包形式交付。
状态:accepted · 日期:2026-06-17
不可变记录。豁免漂移追踪(无
covers)。只可被取代,不可编辑。
背景
目标是面向全球用户:中文优先,最终覆盖中文 / 英文 / 日语 / 意大利语 / 德语。"多语言"是分层的——答案语言、确定性消息字符串(当前硬编码为中文)、输入解析、检索分词(BM25 目前是 CJK 单字+双字组合;日语需要真正的分词;意大利语/德语需要词干提取),以及按语言的评估。只交付中文会带来风险:为日后五语言扩展所需的抽象设计不足。
决策
按五种语言做架构,先交付两种。 在_所有_层贯穿一条 locale 缝——分词器注册表、消息目录、意图词表、prompt 模板——每一项都以 locale 为键,并像其他一切一样可通过 Protocol 插拔。核心中交付并测试中文 + 英文。选英文作为第二语言是有意为之:它是开源世界的通用语,而且作为非 CJK 语言,它迫使分词/词干提取/空格分隔的抽象成为真实的抽象,而非仅覆盖 CJK。日语 / 意大利语 / 德语以社区 locale 包形式交付,并附贡献者清单。
考虑过的备选方案(已否决)
- 仅输出 locale / 轻量 i18n(方案 A):
locale只控制答案语言 + 一个消息目录;输入/分词/语料保持不变。否决——对于五语言目标而言,这条缝设计不足。 - 现在就做完整的按语言流水线本地化(方案 B):立即让全部五种语言成为一等公民。否决——应构建缝和两个参考 locale,而不是五个。