如何在 ICU MessageFormat 中表示俄语或其他复杂复数语言的复数规则

Sam*_*eff 6 localization internationalization messageformat

鉴于复数规则的不寻常性质,我们如何在 ICU MessageFormat 中表示俄语?

MessageFormat 支持复数形式{arg, plural, =1 {one} other {other}}和更复杂的形式{arg, plural, =0 {none} =1 {one} =2 {few} other {several}}

然而,有时不经过一些计算,无法直接通过数字确定要使用的文本;我们该怎么做?俄语根据数字的最后一位数字有 3 个复数规则,但 11-14 除外。

我查看过的信息:

俄语复数化

http://www. Russianlessons.net/lessons/lesson11_main.php

消息格式规则

http://userguide.icu-project.org/formatparse/messages

各种语言的复数规则数量

https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals

小智 6

苹果的俄语 ICU 复数示例 (\xd1\x8f\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xba\xd0\xbe)。

\n
{arg, plural, =0 {\xd0\xbd\xd0\xb5\xd1\x82 \xd1\x8f\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xba} one {\xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe \xd1\x8f\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xba\xd0\xbe} few {{arg} \xd1\x8f\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xba\xd0\xb0} other {{arg} \xd1\x8f\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xba}}\n
Run Code Online (Sandbox Code Playgroud)\n

one适用于以 1 结尾的数字(11 除外)

\n

few同样适用于以 2、3、4 结尾的数字,12、13 和 14 除外

\n

other只是“多”形式

\n