S1.04.3Binary plural-model insufficiency设计
用单复数两套文案无法覆盖多数语言
别名: 二元复数模型 · singular-plural branching · plural-rule coverage
概念解释
二元复数模型不足(binary plural-model insufficiency)指产品只保存“数量等于一”和“其他数量”两条文案分支时,无法表达需要 zero、two、few、many 等额外类别的地区规则,也会给不按英语单复数变化的语言强加错误结构。问题不在于多翻译几个名词,而在消息数据模型预先把全球语法压成了两种状态。
机制
二元实现通常把 count == 1 写进业务代码,再在两条字符串间切换。这样一来,翻译层既看不到源数值的复数规则操作数,也不能为目标地区增加类别;小数、序数和复杂模条件都会被提前折叠。即使翻译平台允许填写更多字符串,运行时仍只发送布尔值,信息已经不可逆丢失。相反,按 locale 计算类别会把数值保留到消息格式化阶段,让每种语言选择自身需要的分支。
边界
标题中的“无法覆盖多数语言”应理解为二元模型不能作为多语言产品的通用架构,并非断言每种语言都恰好需要三种以上形式。有些语言只产生 other,另一些语言只用 one/other;在前一种情况下,只有两分支使用相同译文或被映射到同一输出时,结果才可能偶然正确,二元接口仍是冗余且不可扩展的。风险不等于英语界面当前必然显示错误。
怎么落地
- 把数量原值和格式化选项传入本地化消息层,由当前 locale 的 CLDR 规则选择类别;不要先转换为 singular/plural 布尔值。
- 在翻译资源中使用类别键和必需的
other,构建工具根据目标地区提示实际需要的分支,而非全局固定六个空槽。 - 将 cardinal、ordinal 与 exact-value 产品特例分开建模,避免用“单数”字段承载互不相同的选择逻辑。
- 为每个支持地区自动枚举运行时可产生的类别并渲染代表值;验证资源无缺支、无死分支,译文在整数与小数边界均正确。