S1.04.3Binary plural-model insufficiency设计

用单复数两套文案无法覆盖多数语言

别名: 二元复数模型 · singular-plural branching · plural-rule coverage

概念解释

二元复数模型不足(binary plural-model insufficiency)指产品只保存“数量等于一”和“其他数量”两条文案分支时,无法表达需要 zerotwofewmany 等额外类别的地区规则,也会给不按英语单复数变化的语言强加错误结构。问题不在于多翻译几个名词,而在消息数据模型预先把全球语法压成了两种状态。

机制

二元实现通常把 count == 1 写进业务代码,再在两条字符串间切换。这样一来,翻译层既看不到源数值的复数规则操作数,也不能为目标地区增加类别;小数、序数和复杂模条件都会被提前折叠。即使翻译平台允许填写更多字符串,运行时仍只发送布尔值,信息已经不可逆丢失。相反,按 locale 计算类别会把数值保留到消息格式化阶段,让每种语言选择自身需要的分支。

边界

标题中的“无法覆盖多数语言”应理解为二元模型不能作为多语言产品的通用架构,并非断言每种语言都恰好需要三种以上形式。有些语言只产生 other,另一些语言只用 one/other;在前一种情况下,只有两分支使用相同译文或被映射到同一输出时,结果才可能偶然正确,二元接口仍是冗余且不可扩展的。风险不等于英语界面当前必然显示错误。

怎么落地

  • 把数量原值和格式化选项传入本地化消息层,由当前 locale 的 CLDR 规则选择类别;不要先转换为 singular/plural 布尔值。
  • 在翻译资源中使用类别键和必需的 other,构建工具根据目标地区提示实际需要的分支,而非全局固定六个空槽。
  • 将 cardinal、ordinal 与 exact-value 产品特例分开建模,避免用“单数”字段承载互不相同的选择逻辑。
  • 为每个支持地区自动枚举运行时可产生的类别并渲染代表值;验证资源无缺支、无死分支,译文在整数与小数边界均正确。

延伸

  • 同组S1.04.1 各语言的复数形式数量不同 · S1.04.2 名词的性影响冠词与形容词 · S1.04.4 数量为零需要独立的表达
  • 相邻S1.06 拼接字符串的语序问题 · S4.04 本地化的持续集成
  • 站内检索plural message selection · binary plural model · CLDR categories

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/S1.04.3