S1.04.4Exact-zero message handling设计
数量为零需要独立的表达
别名: 零数量文案 · zero-case message · empty quantity wording
概念解释
精确零值消息(exact-zero message handling)是在数量恰为零时使用专门内容,例如“暂无结果”或“还没有文件”,而不是机械显示“0 个结果”。它服务于产品语义和下一步行动,与 CLDR 的 zero 复数类别不同:某地区可能没有 zero 类别,而产品仍可为精确数值零设置消息;反过来,zero 类别也由地区规则定义,不能当作 =0 的别名。
机制
零经常表示状态转换而非普通量值:尚未创建、筛选无匹配、同步失败和权限不可见都可能得到计数零,但原因与可行动作不同。若所有情况共用一个数量模板,语法也许正确,信息诊断却错误。消息选择应先由应用状态确定零的语义分支,再在需要显示数量的分支内使用 locale plural rules 完成语法变化。把这两层合并为 zero 类别,会让没有该类别的语言无法获得产品特例,也会把不同空状态误作同一件事。
边界
不是每个零都值得隐藏数字或改成空状态。报表、库存、余额和科学测量中的零是有意义的数据,改写成“无”可能把测量值误成缺失值。近似零、四舍五入后显示为零、负零和未知值也不能直接进入 exact-zero 分支;判断应基于业务定义的源值和数据质量,而非格式化后的字符串。
怎么落地
- 先区分未创建、无匹配、无权限、加载失败和真实数值零,为各状态定义准确解释与下一步。
- 用实现支持的精确数值选择器(例如 ICU MessageFormat 风格的
=0)或应用状态选择专门文案;不要依赖 locale 是否产生 cardinalzero类别。 - 数据读取场景保留“0”及单位,并让缺失、未知与零使用不同数据状态和视觉标记。
- 测试精确零、极小非零、舍入为零、未知值和错误状态;验证文案原因、动作和底层数据一致,切换地区后语法仍正确。