mcpField
L
localization

localization

github.com/johnrogers开发233155 次安装42 周前更新
代码仓库

关于 localization

面向 iOS 开发者的本地化技能,围绕 Xcode 字符串目录管理翻译。涵盖复数形式、区域化格式及常见检查流程。

主要功能

  1. 01Xcode 字符串目录工作流
  2. 02SwiftUI 字符串提取
  3. 03复数形式指导
  4. 04区域化格式指导
  5. 05伪本地化与 RTL 测试

适用场景

  1. 01为 iOS 应用添加翻译
  2. 02为待译字符串补充上下文
  3. 03测试文本扩展与 RTL 布局

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/johnrogers/claude-swift-engineering --skill localization

安装后在 Claude Code 中输入/localization确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
formatting.md
pluralization.md
rtl-support.md
string-catalogs.md

详细介绍

本地化

使用 String Catalog(.xcstrings)管理翻译、复数形式和区域设置相关内容,实现现代 iOS 本地化。支持 SwiftUI 的 LocalizedStringKey 和 String(localized:) API。

参考资料加载指南

只要内容有一丝可能会用到,就务必加载参考文件。 与其错过某种模式或犯错,不如先了解相关背景。

参考资料加载时机
String Catalogs设置或使用 Xcode 15+ String Catalog
Pluralization处理复数形式、迁移 stringsdict
Formatting按区域设置格式化日期、数字和货币
RTL Support从右向左的布局、语义方向

核心工作流

  1. 在 Xcode 中创建 String Catalog(File > New > String Catalog)
  2. 使用 String(localized:comment:) 标记字符串,或使用 SwiftUI 自动提取
  3. 根据需要在 String Catalog 编辑器中添加复数变体
  4. 使用伪本地化进行测试(Scheme > Run > Options > App Language)
  5. 导出以供翻译(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:是

常见错误

  1. 忘记在构建阶段添加 String Catalog — 添加 String Catalog 后,忘记在 File Inspector 中勾选“Localize”,会导致它无法嵌入。务必在 Build Phases > Copy Bundle Resources 中确认。

  2. 未测试伪本地化 — 不使用伪本地化(德语/中文伪区域设置)运行应用,会导致你错过文本溢出和 RTL 问题。翻译前务必进行伪本地化测试。

  3. 到处都有硬编码字符串 — 即使只有一个硬编码字符串位于 String Catalog 之外,也会破坏提取和自动化。请在所有地方使用 String(localized:),或使用 LocalizedStringResource 延迟本地化。

  4. 翻译时丢失上下文 — 不为译者提供注释,会让他们猜测上下文并导致误译。请添加注释,说明字符串出现的位置及其含义。

  5. 未测试 RTL 布局 — 假设 LTR 布局适用于 RTL 语言(阿拉伯语、希伯来语),会导致严重问题。请将系统语言设为阿拉伯语进行测试,并确认使用了语义方向。

评论

支持 Markdown