Flutter Intl插件为何指定模板后仍生成错误文件?
Flutter Intl插件重复生成intl_en.arb文件的问题根源分析
问题场景
按照Flutter官方《Flutter应用国际化》教程操作,在Android Studio Giraffe(2022.3.1 Patch1)中初始化Flutter Intl插件后,已在l10n.yaml中指定自定义模板文件为app_en.arb,但插件仍会在lib/l10n目录下自动生成多余的intl_en.arb文件,导致目录中出现重复的英文ARB文件。
相关配置
l10n.yaml内容
arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart
临时解决方案
在pubspec.yaml中禁用Flutter Intl插件:
flutter_intl: enabled: false
之后每次修改ARB文件,需手动执行以下命令重新生成翻译:
flutter gen-l10n
问题根源
这是Flutter Intl插件与Flutter官方原生flutter gen-l10n工具的配置冲突及兼容性问题导致的:
- Flutter Intl插件作为第三方扩展,自带独立的默认配置逻辑,默认会以
intl_en.arb作为模板生成文件。即便你在l10n.yaml(官方原生工具的配置文件)中指定了自定义模板,部分版本的插件无法完全兼容解析该配置,仍会按照自身默认规则生成文件。 - 当同时启用Flutter Intl插件并配置
l10n.yaml时,插件的生成逻辑与官方flutter gen-l10n的逻辑产生重叠,两者各自按照自己的规则生成文件,最终导致intl_en.arb被重复创建。 - 你使用的Android Studio Giraffe版本与对应的Flutter Intl插件版本存在兼容性适配问题,插件对
l10n.yaml中自定义模板的识别逻辑存在缺陷,无法正确覆盖默认行为。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

