使用 easy_localization 包进行我的应用程序翻译。作为示例,这里是翻译文件 json:
{"test": {
"zero": "zero",
"one": "one",
"two": "two",
"few": "few",
"many": "many",
"other": "other"},}
如果我然后像这样简单地将这些打印到控制台:
print(plural("test", 0));
print(plural("test", 1));
print(plural("test", 2));
print(plural("test", 3));
print(plural("test", 4));
它会回来的
zero
one
two
other
other
所以它按预期适用于“零”、“一”、“二”。但随后会跳过“很少”和“很多”并默认为“其他”。
什么是“少”和“多”?我是否应该将“other”视为复数形式而忽略“few”和“many”?
没有错误,所以我不确定这是否是预期的功能。我感觉不对。
如果有人有过这个包的经验,如果他们能解释这样做的原因,那就太好了。
您可以在其源代码中查看复数规则。
似乎大多数语言都有非常简单的复数规则。就像英语一样,基本上没有,一个或另一个:你可以有“没有钱”“一美元”或“X美元”。英语没有其他数量的特殊语言。
恐怕我不知道有哪种语言对特殊金额有特殊规则。但如果您必须为他们翻译,说该语言的人肯定会知道。
您在使用轻松本地化时遇到的问题可能是由于默认启用的 ignorePluralRules 设置造成的。当激活时,它会导致包将所有复数情况视为“其他”,忽略“少数”和“许多”的特定规则。要解决此问题,请将 ignorePluralRules 设置为 false,以便应用适合您的语言的正确复数规则,并且该包将正确处理“少数”和“许多”。
runApp(
EasyLocalization(
useOnlyLangCode: true,
ignorePluralRules: false,
...
child: const MyApp(),
),
);