Flutter:使用没有 args 和 name 参数的 Intl.message
Flutter: Using Intl.message without args and name parameters
当我 运行 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 package 说 The name and args parameters must match the name (or ClassName_methodName) and arguments list of the function respectively. For messages without parameters, both of these can be omitted.
但在我看来,在这种情况下,我的消息没有参数!
我是不是误解了 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)
所以函数中只能有一条消息,因为我们要用其他函数替换该函数。它不能是构造函数,因为我们不能只委托给它。
当我 运行 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 package 说 The name and args parameters must match the name (or ClassName_methodName) and arguments list of the function respectively. For messages without parameters, both of these can be omitted.
但在我看来,在这种情况下,我的消息没有参数!
我是不是误解了 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)
所以函数中只能有一条消息,因为我们要用其他函数替换该函数。它不能是构造函数,因为我们不能只委托给它。