gpt4 book ai didi

dart - Flutter:使用没有 args 和 name 参数的 Intl.message

转载 作者:IT王子 更新时间:2023-10-29 07:20:36 25 4
gpt4 key购买 nike

当我运行 flutter pub pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/localizations.dart 时,生成器会跳过所有仅包含字符串的 Intl.message 文件,打印:

Skipping invalid Intl.message invocation
<Intl.message("MESSAGE")>
reason: The 'args' argument for Intl.message must be specified for messages with parameters. Consider using rewrite_intl_messages.dart
from lib/main.dart line: 125, column: 9

doc for the internationalization packagename 和 args 参数必须分别匹配函数的名称(或 ClassName_methodName)和参数列表。对于没有参数的消息,这两个都可以省略。但是在我看来,在这种情况下,我的消息是没有参数的!

我是否误解了 Dart 开发人员所说的参数的含义?

最佳答案

将它从构造函数中移出到一个单独的函数中。您可以从构造函数中调用该函数,但它必须是函数中单独的一条消息。

原因是为了支持带参数的消息。至少在概念上,翻译是作为一个单独的函数生成的。所以我们有

foo(String name) => Intl.message('Hello $name', name: 'foo', args: [name]);

在某处的延迟库 fr_FR 中

foo(String name) => 'Bonjour $name'

Intl.message 的实现是概念上的

currentLanguage.lookup('foo').call(args)

所以一个函数中只能有一条消息,因为我们要用其他东西替换那个函数。它不能是构造函数,因为我们不能只委托(delegate)给它。

关于dart - Flutter:使用没有 args 和 name 参数的 Intl.message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55881904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com