前端知库

Intl.PluralRules 怎样帮助实现国际化复数?

用语言相关的复数规则选择消息分支,区分 cardinal、ordinal 与手动拼接字符串的风险。

参考答案

不同语言的复数规则不只是“1 个”和“多个”两种。Intl.PluralRules 可以根据语言和类型返回 one、two、few、many、other 等类别;cardinal 用于数量,ordinal 用于序数,不能混用。

组件应把规则选择交给国际化消息层,再把结果映射到完整句子,而不是在模板里手动判断 count === 1。消息中还要处理零、负数、小数、范围和没有精确匹配时的 other 分支。

数字格式化和复数分支是两个问题:应同时使用 Intl.NumberFormat 或消息库提供的格式化能力。切换语言后要重新计算,测试时覆盖目标语言的真实规则,而不是只测中文和英文。