更新到Flutter 3.7.0后,我在构建应用程序时收到此错误消息:[app_en.arb:扫描代码字段不匹配] ICU语法错误:应为“标识符”,但找到“0”。要匹配的字段为“{0}”看起来变量在.arb本地化文件中的写入方式发生了一些变化。
pu82cl6c1#
我发现这个错误的原因是在Flutter 3.7中国际化支持已经被完全修改了![他们]已经完全重写了gen-l10 n工具...如X1 E0 F1 X中所述。以前,我在 .arb 文件中声明字符串,如下所示
"scanCode_fieldNotMatched": "field to match is \"{0}\"",
其中之后我用某个其他值替换{0}。现在gen-l10n工具似乎将括号中的内容作为特殊参数,而名称"0"不被接受,因此我不得不将字符串更改为
{0}
gen-l10n
"0"
"scanCode_fieldNotMatched": "field to match is \"{value0}\"",
并且AppLocalizations现在可以被称为:
AppLocalizations
AppLocalizations.of(context)!.lastTaskSince_text("something here to replace value0!")
有关这方面的更多详细信息,请访问:Flutter中的占位符、复数和选择。
1条答案
按热度按时间pu82cl6c1#
我发现这个错误的原因是在Flutter 3.7中
国际化支持已经被完全修改了![他们]已经完全重写了gen-l10 n工具...
如X1 E0 F1 X中所述。
以前,我在 .arb 文件中声明字符串,如下所示
其中之后我用某个其他值替换
{0}
。现在
gen-l10n
工具似乎将括号中的内容作为特殊参数,而名称"0"
不被接受,因此我不得不将字符串更改为并且
AppLocalizations
现在可以被称为:有关这方面的更多详细信息,请访问:Flutter中的占位符、复数和选择。