iOS本地化开发技能Skill localization-developer

这个技能专注于iOS应用的本地化开发,提供上下文感知的路由到Anytype iOS本地化系统。它帮助开发者管理.xcstrings文件,正确使用Loc常量,避免硬编码字符串,并遵循特定的工作流程和规则。关键词:本地化、iOS开发、字符串管理、.xcstrings、Loc常量、移动开发。

移动开发 0 次安装 0 次浏览 更新于 3/15/2026

名称: localization-developer 描述: 上下文感知路由到Anytype iOS本地化系统。在使用.xcstrings文件、Loc常量、硬编码字符串或用户界面文本时使用。

本地化开发(智能路由)

目的

上下文感知路由到Anytype iOS本地化系统。帮助您导航3文件的.xcstrings结构并正确使用Loc常量。

自动激活时机

  • 使用.xcstrings文件时
  • 使用Loc常量时
  • 讨论硬编码字符串或用户界面文本时
  • 关键词: 本地化、字符串、文本、Loc.、.xcstrings

🚨 关键规则(永不违反)

  1. 永不使用硬编码字符串在UI中 - 始终使用Loc常量
  2. 永不创建重复键跨越3个.xcstrings文件 - 破坏代码生成
  3. 永不编辑非英语翻译 - 仅更新英语(en),Crowdin处理其他语言
  4. 始终先搜索现有键 - 重用之前创建新的
  5. 始终运行make generate 编辑.xcstrings文件后

📋 快速工作流程

  1. 搜索现有: rg "您的搜索词" Modules/Loc/Sources/Loc/Generated/Strings.swift
  2. 如果找到: 重用现有键
  3. 如果未找到: 添加到适当的.xcstrings文件(见下方决策树)
  4. 生成: make generate
  5. 使用: AnytypeText(Loc.您的键, style: .uxCalloutMedium)

🗂️ 3文件系统

决策树

此文本用于认证/登录/保险库吗?
    是 → Auth.xcstrings(86个键)
    否 → 继续

此文本用于空间/对象/协作吗?
    是 → Workspace.xcstrings(493个键)
    否 → 继续

此文本用于设置/小部件/通用UI吗?
    是 → UI.xcstrings(667个键)

文件位置

  • Auth.xcstrings: Modules/Loc/Sources/Loc/Resources/Auth.xcstrings
  • Workspace.xcstrings: Modules/Loc/Sources/Loc/Resources/Workspace.xcstrings
  • UI.xcstrings: Modules/Loc/Sources/Loc/Resources/UI.xcstrings

生成输出: 所有3个文件 → 单个Strings.swift(约5,000行,1,246个总键)

🎯 添加键

格式(添加到适当的.xcstrings文件)

"您的本地化键" : {
  "extractionState" : "manual",
  "localizations" : {
    "en" : {
      "stringUnit" : {
        "state" : "translated",
        "value" : "您的英语文本在此"
      }
    }
  }
}

键命名:

  • 短键: "尚无属性"
  • 非完整句子: "尚无属性。添加一些。"
  • 分层: "QR.join.title"Loc.Qr.Join.title

🔢 动态本地化(参数)

✅ 正确 - 使用生成函数

// 字符串: "您已达到%lld个编辑者的限制"
Loc.SpaceLimit.Editors.title(4)

// 字符串: "欢迎,%@!"
Loc.welcomeMessage("John")

❌ 错误 - 永不使用String(format:)

String(format: Loc.limitReached, 10)  // 不要这样做

为什么: SwiftGen自动生成带参数化函数的格式说明符(%lld, %d, %@)。

格式说明符:

  • %lld → Int参数
  • %d → Int参数
  • %@ → String参数
  • %.1f → Double参数

🗑️ 移除未使用键

  1. 搜索: rg "键名" --type swift
  2. 如果仅在Strings.swift: 键被孤立
  3. 移除从源.xcstrings文件
  4. 生成: make generate

⚠️ 常见错误

硬编码字符串

// ❌ 错误
Text("删除")

// ✅ 正确
Text(Loc.delete)

跨文件重复键

// 在Auth.xcstrings中
"Settings" : { ... }

// 在UI.xcstrings中
"Settings" : { ... }  // ❌ 重复!破坏生成

使用String(format:)

// ❌ 错误
String(format: Loc.limitReached, 10)

// ✅ 正确
Loc.limitReached(10)

编辑非英语

// ❌ 错误 - Crowdin将覆盖
"de" : { "value" : "我的翻译" }

// ✅ 正确 - 仅编辑英语
"en" : { "value" : "我的翻译" }

📚 完整文档

完整指南: Anytype/Sources/PresentationLayer/Common/LOCALIZATION_GUIDE.md

涵盖:

  • 详细3文件系统解释
  • 键命名模式和约定
  • 所有格式说明符的动态本地化
  • 与Crowdin的翻译工作流程
  • 移除孤立键
  • 生成文件结构
  • 完整示例和故障排除

✅ 工作流程检查清单

  • [ ] 搜索现有键(rg在Strings.swift)
  • [ ] 添加到正确的.xcstrings文件(Auth/Workspace/UI)
  • [ ] 无跨文件重复键
  • [ ] 仅更新英语(en
  • [ ] 运行make generate
  • [ ] 使用生成键: Loc.您的键
  • [ ] UI中无硬编码字符串

🔗 相关技能与文档

  • ios-dev-guidelinesIOS_DEVELOPMENT_GUIDE.md - 永不使用硬编码字符串
  • code-generation-developerCODE_GENERATION_GUIDE.md - 理解make generate
  • design-system-developer → 在UI组件中使用Loc常量

导航: 这是一个智能路由。详细内容,请始终参考LOCALIZATION_GUIDE.md