如何为Reveil添加新语言:BartyCrouch多语言开发教程与国际化实践
【免费下载链接】ReveilBringing back the most advanced system and security analysis tool.项目地址: https://gitcode.com/gh_mirrors/re/Reveil
Reveil 是一款用纯 SwiftUI 重写的 iOS 系统与安全管理工具,当前已内置英文、简中、繁中、西班牙文 4 种语言。本文将手把手教你借助 BartyCrouch 国际化框架,为这款系统分析工具添加一门全新的语言(以法语为例),并讲解 Reveil 多语言工程结构与翻译规范,适合刚接触 iOS 国际化实践的新手。
Reveil 的简体中文界面:左侧导航、仪表盘与安全检测全部完成本地化
准备工作:获取代码与运行环境
开始前先确认两件事:
- Xcode 15 或更高版本(README 中明确要求)
- 项目支持 iOS 15.0 及以上系统
在项目根目录执行以下命令获取源码:
git clone https://gitcode.com/gh_mirrors/re/Reveil提示:使用 Xcode 14 或面向 iOS 14 的用户,可切换到
backport/ios-14分支。
认识 BartyCrouch:Reveil 的国际化基石
Reveil 没有手写繁琐的本地化代码,而是依赖一款名为BartyCrouch的翻译辅助工具。它的核心思路是:
- 你在源码中写
NSLocalizedString("KEY", comment: "Default Text"); - 工具自动提取所有 key,批量生成各语言的
Localizable.strings翻译模板; - 翻译完成后,再对代码做统一变换,保证 key 与翻译严格一致。
项目中的Reveil/BartyCrouch.swift就是这套机制的"锚点文件",它声明了当前支持的语言:
enum SupportedLanguage: String { case chineseSimplified = "zh-Hans" case english = "en" case spanish = "es" }同时它也提供了兜底逻辑——如果 transform 变换未生效,会打印警告并返回占位文本,避免界面直接崩溃。
Reveil 的多语言目录结构
在动手前,先看清 4 种语言是如何组织的,这也是后文操作的依据:
| 文件路径 | 语言 | 条目数 |
|---|---|---|
Reveil/en.lproj/Localizable.strings | 英文 | 364 |
Reveil/zh-Hans.lproj/Localizable.strings | 简体中文 | 364 |
Reveil/zh-Hant.lproj/Localizable.strings | 繁体中文 | 364 |
Reveil/es.lproj/Localizable.strings | 西班牙文 | 364 |
每个.strings文件内部都是/* 英文原义 */ "KEY" = "译文";的格式,例如简中的开头:
/* About */ "ABOUT" = "关于"; /* Capacity */ "BATTERY_CAPACITY" = "容量";注意:设置页面(Settings)走的是另一套体系,位于Reveil/Resources/Settings.bundle/下,en.lproj/Root.strings与zh_Hans.lproj/Root.strings分别承载英文与简中设置文案。添加新语言时这两处都要覆盖,这是新手最容易遗漏的地方。
四步为 Reveil 添加一门新语言
下面以添加**法语(fr)**为例,给出可直接照做的完整流程。
第 1 步:在 BartyCrouch 中注册新语言代码
打开Reveil/BartyCrouch.swift,在SupportedLanguage枚举中追加一行:
case french = "fr"语言代码务必使用标准的 RFC 5646 格式(如fr、de、ja),不要自造缩写。
第 2 步:运行 transform 任务生成翻译模板
BartyCrouch 会在构建时执行 transform 任务,自动扫描全部NSLocalizedString调用点。Reveil 的源码中共有上百处调用,例如Reveil/ViewModels/Modules/BatteryInformation.swift中的:
let moduleName = NSLocalizedString("BATTERY_INFORMATION", comment: "Battery Information")运行一次构建后,工具会输出fr.lproj/Localizable.strings模板,包含全部 364 个 key 及对应的英文原文注释——这正是翻译者的工作底稿。
第 3 步:创建法语目录并逐条翻译
在Reveil/下新建fr.lproj/目录,放入模板文件并逐条翻译。请遵循以下规范:
- key 永不修改:法语译者只改
=右侧的值,左侧 key 必须与英文模板一一对应,否则界面会显示乱码 - 保留格式化占位符:像
"ADDRESSES_COUNT" = "%d Addresses"这类条目,法语需保留%d,写成"%d adresses" - 签名译者:文件首部的
"@TRANSLATOR"写上你的 ID,参考es.lproj中的做法,方便后续维护
第 4 步:注册地区标识并补齐设置页
- 打开
Reveil.xcodeproj,在 Target 的Info → Localizations中点击+添加French,让 Xcode 的 Known Regions 收录fr; - 在
Reveil/Resources/Settings.bundle/下新建fr.lproj/Root.strings,把 23 条设置项(如Dashboard、Enabled、Animated Background)翻译成法语。
验证清单:如何确认新语言生效
提交翻译前,建议逐项检查,避免合并后返工:
- 模拟器/真机系统语言切换为法语后,底部三个 Tab(仪表盘 / 详情 / 关于)文案全部本地化
- 每个详情页的条目名与数值单位(KB、MB、字节)符合法语书写习惯
- 设置页所有分组与开关已显示法语,无英文残留
- 构建日志中没有出现
Warning: [BartyCrouch] ... Untransformed警告 - 四种语言(含新增法语)的 key 数量保持 364 一致,无缺失条目
如果第 4 项出现警告,说明 transform 未跑通,请回到第 2 步检查 Xcode 的 Run Script 配置。
小结
通过本文的完整流程,你只需改动Reveil/BartyCrouch.swift、新增fr.lproj/Localizable.strings与Settings.bundle/fr.lproj/Root.strings三个地方,就能让这款 iOS 系统安全管理工具支持第 5 种语言。BartyCrouch 的"先提取、后翻译、再变换"模式,把多语言开发从体力活变成了可维护的工程流程——无论是给 Reveil 添加日语、德语还是任何语言,都可以直接复用这套国际化实践。
【免费下载链接】ReveilBringing back the most advanced system and security analysis tool.项目地址: https://gitcode.com/gh_mirrors/re/Reveil
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考