【问题标题】:Resource IDs in arb files must Start with capital ?(flutter localization: i18n and l10n support)arb 文件中的资源 ID 必须以大写开头?(flutter 本地化:i18n 和 l10n 支持)
【发布时间】:2021-10-29 22:40:16
【问题描述】:

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

根据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",

我的问题: NoBody 告诉我不要这样做(也许我找不到关于它的东西)。有人可以帮我解决如何解决吗?关于文档的一些东西(如何找到这个?)。

【问题讨论】:

    标签: flutter dart localization flutter-intl


    【解决方案1】:

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

    【讨论】:

    • 其实我试过用camelCase。这是行不通的。在flutter run 之后,显示Generating synthetic localizations package has failed.
    • pubspec.yaml 文件中进行必要的更改,因为它已经结束here 和运行pub get
    • 我通过 upCredit 解决了这个问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多