S1.04.1Locale-specific plural categories设计研究

各语言的复数形式数量不同

别名: 复数类别 · CLDR plural rules · grammatical number

概念解释

地区特定复数类别(locale-specific plural categories)指数量变化会在不同语言中触发不同组的语法表达。Unicode CLDR 用 zeroonetwofewmanyother 作为跨语言选择键;这些键不是英语字面上的“零、单数、双数、少数、许多”,而是由数字变化引起的语法必需变化通过最小对证明的类别。某语言只使用其中一部分,other 始终作为兜底。

机制

语法数可能通过名词、动词、代词、形容词或格变化表现。CLDR 从源数值及其表示形式计算操作数:v 是包含尾随零的可见小数位数,w 去掉尾随零;f 是包含尾随零的小数数字整数,t 去掉尾随零。因此 11.01.00,以及 1.31.30,可在采用这些操作数的地区规则中产生不同结果。规则还可使用整数部分和模运算;cardinal 与 ordinal 使用不同规则与模板。若 API 先把输入转成丢失可见精度的普通数值,后续格式器便无法恢复这些操作数。

怎么研究

验证分三层。第一层把运行时对官方代表值、整数/小数边界值的类别输出与当前 CLDR 规则比对,测规则引擎一致性,并确保输入经过产品真实 formatter 而未丢尾随零。第二层建立一组最小对(minimal pairs):只改变数字,除语法所迫的名词、动词、代词等变化外,不允许换成语义不同的措辞;一个模板无法显露全部类别时,应使用多个名词或结构。母语专家判断一致关系与可接受性。只有关键界面确有理解风险时,第三层才设置真实任务,测选择错误与理解,而不把“任务理解”当作默认指标。cardinal 与 ordinal 分别使用各自模板。

边界

CLDR 类别是消息选择接口,不是对语言全部语法数的完整语言学分类;一个类别内部仍可能因格、性或词项发生变化。规则会随语言资料修订,应用应使用所依赖运行时版本的数据。显式 =0 只匹配数值零,而某地区可能没有 zero 类别,零也可能落入 oneother;同样,one 不保证只包含整数一。产品特例和语言类别必须分开表达。

怎么落地

  • 用成熟的地区化消息格式和 CLDR 数据选择复数分支,不在业务代码里写 count == 1
  • 分开配置 cardinal 与 ordinal,提供该地区可产生的类别并保留 other;产品特例另用消息格式明确支持的 exact-value selector,不伪装成 zeroone
  • 把完整句子交给译者,让每个分支可调整名词、动词、代词和语序,不只替换词尾。
  • 为每个支持地区从当前规则生成代表值与小数边界测试,逐分支渲染并由母语审校确认语法和含义。

延伸

  • 同组S1.04.2 名词的性影响冠词与形容词 · S1.04.3 用单复数两套文案无法覆盖多数语言 · S1.04.4 数量为零需要独立的表达
  • 相邻S1.05 翻译上下文与字符串复用 · S1.06 拼接字符串的语序问题
  • 站内检索CLDR plural rules · minimal pairs · grammatical number

同组卡片

快捷操作

分享

分享当前页面

ios_share

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