Flutter 包 easy_localization 复数无法按预期工作

问题描述 投票:0回答:2

使用 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”?

没有错误,所以我不确定这是否是预期的功能。我感觉不对。

如果有人有过这个包的经验,如果他们能解释这样做的原因,那就太好了。

flutter dart mobile locale flutter-easy-localization
2个回答
1
投票

您可以在其源代码中查看复数规则。

似乎大多数语言都有非常简单的复数规则。就像英语一样,基本上没有,一个或另一个:你可以有“没有钱”“一美元”或“X美元”。英语没有其他数量的特殊语言。

恐怕我不知道有哪种语言对特殊金额有特殊规则。但如果您必须为他们翻译,说该语言的人肯定会知道。


0
投票

您在使用轻松本地化时遇到的问题可能是由于默认启用的 ignorePluralRules 设置造成的。当激活时,它会导致包将所有复数情况视为“其他”,忽略“少数”和“许多”的特定规则。要解决此问题,请将 ignorePluralRules 设置为 false,以便应用适合您的语言的正确复数规则,并且该包将正确处理“少数”和“许多”。

 runApp(
      EasyLocalization(
        useOnlyLangCode: true,
        ignorePluralRules: false,
        ...
        child: const MyApp(),
      ),
    );
© www.soinside.com 2019 - 2024. All rights reserved.