本技能用于指导 Apple 平台应用的本地化与国际化,核心是 Xcode 15 引入的 String Catalog(.xcstrings),它用单一 JSON 格式统一替代传统 .strings 与 .stringsdict 文件,便于维护、比对与接入翻译流程。
用途:在 Xcode 15+ 中搭建 String Catalog、本地化 SwiftUI 与 UIKit 应用、正确处理复数形式、支持 RTL 语言(阿拉伯语、希伯来语等)、按区域格式化日期/数字/货币,以及从旧格式迁移。
主要能力:
- String Catalog 创建(导航器新建或构建时自动从 SwiftUI、String(localized:)、NSLocalizedString、Interface Builder、Info.plist、App Shortcuts 提取字符串),并跟踪 New、Needs Review、Reviewed、Stale 翻译状态。
- SwiftUI 的 LocalizedStringKey 自动本地化、String(localized:comment:table:defaultValue:)、LocalizedStringResource 延迟本地化、AttributedString 保留 Markdown。
- UIKit/Foundation 的 NSLocalizedString、Bundle.localizedString、Info.plist 本地化(InfoPlist.strings)。
- 复数形式:不同语言复数规则不同(英语 2 种、俄语 3 种、阿拉伯语 6 种),通过 String Catalog 的 variations/plural 与 XLIFF 导出处理,并支持多变量复数组合。
- 设备与宽度变体,可为不同平台提供不同文案。
- RTL:使用 leading/trailing 等语义方向,图片可用 flipsForRightToLeftLayoutDirection,并提供 Xcode Scheme、模拟器与 SwiftUI Preview 的测试方式。
- 区域感知:DateFormatter、NumberFormatter、MeasurementFormatter、localizedStandardCompare,避免硬编码格式。
- App Shortcuts 与 App Intents 短语本地化。
- 迁移:.strings/.stringsdict 转换与分阶段迁移策略。
使用方式:需在 Xcode 15+ 中使用 String Catalog,Xcode 26+ 才支持自动符号生成、#bundle 宏和 AI 注释生成;LocalizedStringResource 需 iOS 15+,App Shortcuts 本地化需 iOS 16+,更早系统使用传统 .strings。构建设置需开启字符串提取与优先使用 String Catalog 选项。
限制与常见错误:硬编码字符串、拼接本地化字符串导致语序错误、用 item(s) 代替正确复数、使用 left/right 破坏 RTL、硬编码日期格式、遗漏译者注释。资料未提供具体收费、价格或平台支持范围以外的信息。