如何自动提取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.dartlib/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
相关产品推荐
相关产品推荐

