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

如何自动提取Flutter项目文本生成翻译JSON文件?

自动提取Flutter代码字符串生成国际化JSON方案

用官方intl_translation工具(规范且稳定)

  • 先在pubspec.yaml里添加依赖:
    dependencies:
      intl: ^0.18.1
    dev_dependencies:
      intl_translation: ^0.17.10+1
    
  • 改造代码中的字符串:把硬编码的Text('Hello World')改成Text(Intl.message('Hello World', name: 'helloWorld'));字符串变量改成final String welcomeMsg = Intl.message('Welcome', name: 'welcomeMsg');——name就是最终JSON里的键,要保证唯一。
  • 生成arb模板文件:在项目根目录执行命令
    flutter pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/main.dart
    
    多文件场景下,把lib/main.dart换成lib/**/*.dart就能扫描所有Dart文件。
  • 从生成的intl_messages.arb中提取键值对,整理成目标JSON格式,示例:
    {
      "helloWorld": "Hello World",
      "welcomeMsg": "Welcome"
    }
    

用第三方工具flutter_i18n_extension(无需修改现有代码)

  • 全局安装工具:
    pub global activate flutter_i18n_extension
    
  • 直接扫描代码提取字符串:
    flutter_i18n_extension extract --source=lib --output=assets/i18n
    
  • 工具会自动生成en.json,里面包含所有提取到的Text组件文本和字符串变量,键名默认是text_0、string_var_1这类,你可以手动改成有意义的命名。

注意事项

  • 动态拼接的字符串(比如Text('Hello ' + userName))无法被工具识别,需要改成Text(Intl.message('Hello {userName}', name: 'helloUser', args: [userName]))这种带占位符的形式。
  • 拿到生成的英文JSON后,直接导入谷歌翻译工具就能批量转成阿拉伯语等其他语种。
  • 后续实现多语言切换,使用flutter_localizations包配置翻译文件即可。

内容的提问来源于stack exchange,提问作者Amr Hassan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:42:45