如何基于Swift代码库中NSLocalizedString调用生成Localizable.strings文件
Swift项目NSLocalizedString自动提取生成Localizable.strings方案
1. Xcode原生工具(零依赖首选)
Xcode 13及更高版本自带全量本地化提取能力,无需安装任何第三方组件:
- 可视化操作:选中项目根目录后点击顶部菜单栏
Editor→Export Localizations,选择导出路径即可自动扫描全项目的NSLocalizedString调用,直接生成对应语言的格式化Localizable.strings文件,定义时写的注释也会同步导出 - 命令行操作:在项目根目录执行以下命令即可批量导出:
# 普通project项目 xcodebuild -exportLocalizations -localizationPath ./l10n_export -project 你的项目名.xcodeproj # 使用workspace的项目 xcodebuild -exportLocalizations -localizationPath ./l10n_export -workspace 你的项目名.xcworkspace -scheme 你要扫描的scheme名
多target场景下额外补充-target参数指定要扫描的目标即可。
2. 第三方工具(适合自定义/增量更新需求)
- SwiftGen:配置好字符串扫描规则后,可一键提取全项目
NSLocalizedString,支持自动去重、自定义导出格式,还能同步生成多语言调用的静态扩展代码,避免硬编码key - BartyCrouch:主打增量更新能力,不会覆盖已经翻译完成的内容,只会新增扫描到的未收录key,适合迭代过程中持续维护多语言文件,安装后直接执行
bartycrouch update即可完成更新
3. 自定义Shell脚本(适配特殊业务规则)
如果你的项目有自定义的NSLocalizedString封装,可直接用以下快速脚本按需调整:
find ./你的源码根目录 -name "*.swift" | xargs grep -o 'NSLocalizedString\(@*"[^"]*"' | sed -e 's/NSLocalizedString(@*"\(.*\)"/"\1" = "\1";/' | sort | uniq > Localizable.strings
该脚本会遍历所有Swift文件提取key,自动生成标准格式的strings文件并去重,你可以根据自己的封装方法名修改grep匹配规则即可适配自定义封装场景。
提示:如果你的项目中存在OC混编的情况,只需要在find命令中补充
-name "*.m"参数即可同时扫描OC文件中的多语言定义。
内容的提问来源于stack exchange,提问作者Rahul Rentash
相关产品推荐
相关产品推荐

