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
。
我有一个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
。