arb 文件中的资源 ID 必须以大写开头?(flutter 本地化:i18n 和 l10n 支持)

Resource IDs in arb files must Start with capital ?(flutter localization: i18n and l10n support)

我有一个flutter项目,刚刚更新为nullsafety。我发现 intl_translation 插件不支持 nullsafety。所以我去掉了,想用flutter的framwork自带的intl

根据 official documents,我添加了 2 行:intl: ^0.17.0 # generate: true 并新建了一个名为 l10n.yaml 的文件。

l10n.yaml的内容如下:

arb-dir: lib/l10n
template-arb-file: intl_en.arb
output-localization-file: lib/generated/intl/l10n.dart

然后我的文件树如下:

lib
├── data
│   ├── ......
├── generated
│   ├── intl
│   │   ├── messages_all.dart
│   │   ├── messages_en.dart
│   │   └── messages_zh.dart
│   └── l10n.dart
├── l10n
│   ├── intl_en.arb
│   └── intl_zh.arb
├── ......
├── ......
├── ui
│   ├── ......
└── utilities.dart

然后我flutter run 我的项目。错误显示

Invalid ARB resource name "UPCredit" in LocalFile: '.../lib/l10n/intl_en.arb'.
Resources names must be valid Dart method names: they have to be camel case, cannot start with a number or underscore, and cannot contain non-alphanumeric characters.
Generating synthetic localizations package has failed.

错误位置在我的intl_en.arb如下:

"UPxxt": "Uxxx Cxxxit",
"UPxit": "Unxxx Dxxxt",
"UPSxit": "Uxxx Sxxxed xxxit",

我的问题: 没有人告诉我不要这样做(也许我找不到相关信息)。谁能帮我解决这个问题?关于文件的一些事情(如何找到这个?)。

基本上,这意味着要使用 camelCase 这种命名约定,因此您需要坚持使用 upCredit 而不是 UpCredit