解决Flutter运行flutter gen-l10n时的「Untranslated Messages」警告及相关配置疑问
解决Flutter运行flutter gen-l10n时的「Untranslated Messages」警告及相关配置疑问
嘿,我来帮你一步步理清这些问题,都是我做Flutter本地化时亲身踩过的坑,放心跟着来就行😉
1. 正确配置untranslated-messages-file选项
你的现有l10n.yaml已经有基础配置了,只需要在里面新增一行配置即可,位置没有严格要求,通常放在其他选项下面就行。
比如你可以直接指定文件名(默认会生成在项目根目录),或者指定完整路径(比如放在lib/l10n目录下方便管理)。这里给你一个更新后的完整示例:
arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart # 新增的未翻译消息文件配置 untranslated-messages-file: lib/l10n/untranslated_messages.json
配置好之后,重新运行flutter gen-l10n命令,就会自动在你指定的路径生成包含未翻译消息的文件啦。
2. 输出文件的格式说明
正如命令提示里说的,生成的文件是JSON格式,结构会按语言分组,每个语言下面列出所有未翻译的消息key和对应的源语言(也就是你模板文件app_en.arb里的文本)。举个例子,生成的文件内容大概是这样:
{ "es": [ { "message": "welcome_title", "sourceText": "Welcome to My App" }, { "message": "settings_label", "sourceText": "Settings" } ], "tr": [ { "message": "welcome_title", "sourceText": "Welcome to My App" }, { "message": "settings_label", "sourceText": "Settings" } ] }
这样你就能清晰看到每种语言缺了哪些翻译,直接对照着去对应的arb文件里补就行。
3. 缺失翻译时是否可以安全构建?
默认情况下,flutter gen-l10n只会抛出警告,不会阻止你构建或运行APP。当APP运行到未翻译的文本时,会自动 fallback 到你的模板语言(也就是英文)的文本,用户看到的是英文内容,不会崩溃。
不过这里有两个建议:
- 如果是开发阶段,临时缺失翻译没问题,可以先继续开发,之后再补全;
- 如果是准备发布的版本,建议尽量补全所有翻译,提升用户体验。如果想要强制要求所有翻译必须完成才能构建,可以在
l10n.yaml里再加一行配置:
开启这个选项后,只要有未翻译的消息,enforce-missing-translations: trueflutter gen-l10n就会抛出错误,阻止构建,帮你把关发布质量。
4. 彻底消除警告的步骤
最后,按照下面的步骤就能彻底解决警告:
- 运行
flutter gen-l10n生成未翻译消息文件; - 打开对应的arb文件(比如
app_es.arb和app_tr.arb),根据JSON文件里的内容,添加缺失的key和对应的翻译文本; - 再次运行
flutter gen-l10n,此时警告就会消失啦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

