You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决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: true
    
    开启这个选项后,只要有未翻译的消息,flutter gen-l10n就会抛出错误,阻止构建,帮你把关发布质量。

4. 彻底消除警告的步骤

最后,按照下面的步骤就能彻底解决警告:

  • 运行flutter gen-l10n生成未翻译消息文件;
  • 打开对应的arb文件(比如app_es.arb和app_tr.arb),根据JSON文件里的内容,添加缺失的key和对应的翻译文本;
  • 再次运行flutter gen-l10n,此时警告就会消失啦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 07:25:28