关于 localization
面向 iOS 开发者的本地化技能,围绕 Xcode 字符串目录管理翻译。涵盖复数形式、区域化格式及常见检查流程。
主要功能
- 01Xcode 字符串目录工作流
- 02SwiftUI 字符串提取
- 03复数形式指导
- 04区域化格式指导
- 05伪本地化与 RTL 测试
适用场景
- 01为 iOS 应用添加翻译
- 02为待译字符串补充上下文
- 03测试文本扩展与 RTL 布局
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ johnrogers/ claude-swift-engineering --skill localization安装后在 Claude Code 中输入/localization确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/formatting.mdpluralization.mdrtl-support.mdstring-catalogs.md详细介绍
本地化
使用 String Catalog(.xcstrings)管理翻译、复数形式和区域设置相关内容,实现现代 iOS 本地化。支持 SwiftUI 的 LocalizedStringKey 和 String(localized:) API。
参考资料加载指南
只要内容有一丝可能会用到,就务必加载参考文件。 与其错过某种模式或犯错,不如先了解相关背景。
| 参考资料 | 加载时机 |
|---|---|
| String Catalogs | 设置或使用 Xcode 15+ String Catalog |
| Pluralization | 处理复数形式、迁移 stringsdict |
| Formatting | 按区域设置格式化日期、数字和货币 |
| RTL Support | 从右向左的布局、语义方向 |
核心工作流
- 在 Xcode 中创建 String Catalog(File > New > String Catalog)
- 使用
String(localized:comment:)标记字符串,或使用 SwiftUI 自动提取 - 根据需要在 String Catalog 编辑器中添加复数变体
- 使用伪本地化进行测试(Scheme > Run > Options > App Language)
- 导出以供翻译(File > Export Localizations)
关键模式
// SwiftUI - automatic localization
Text("Welcome")
Button("Continue") { }
// Explicit localization with context
let title = String(localized: "Settings", comment: "Navigation title")
// Deferred localization for custom views
struct CardView: View {
let title: LocalizedStringResource
var body: some View { Text(title) }
}
构建设置
- Use Compiler to Extract Swift Strings:是
- Localization Prefers String Catalogs:是
常见错误
-
忘记在构建阶段添加 String Catalog — 添加 String Catalog 后,忘记在 File Inspector 中勾选“Localize”,会导致它无法嵌入。务必在 Build Phases > Copy Bundle Resources 中确认。
-
未测试伪本地化 — 不使用伪本地化(德语/中文伪区域设置)运行应用,会导致你错过文本溢出和 RTL 问题。翻译前务必进行伪本地化测试。
-
到处都有硬编码字符串 — 即使只有一个硬编码字符串位于 String Catalog 之外,也会破坏提取和自动化。请在所有地方使用
String(localized:),或使用LocalizedStringResource延迟本地化。 -
翻译时丢失上下文 — 不为译者提供注释,会让他们猜测上下文并导致误译。请添加注释,说明字符串出现的位置及其含义。
-
未测试 RTL 布局 — 假设 LTR 布局适用于 RTL 语言(阿拉伯语、希伯来语),会导致严重问题。请将系统语言设为阿拉伯语进行测试,并确认使用了语义方向。