用途:在 Apple 平台应用(SwiftUI / Swift)中实施或审查本地化与国际化,围绕 String Catalogs(.xcstrings)组织字符串资源,并处理复数、区域格式化与 RTL 布局,目标 Swift 6.3 / iOS 26+。
主要能力:String Catalogs 是 Xcode 标准本地化格式,构建时自动从源码提取可本地化字符串,如 Text("Welcome back")、Button("Save Changes")、Label("Account Settings", systemImage: "person.crop.circle")。非视图代码可用生成符号或 String(localized:),例如 String(localized: "order_confirmation_title", defaultValue: "Order Confirmed")。支持 LocalizedStringKey(SwiftUI 视图内惰性求值)、LocalizedStringResource(与 SwiftUI 解耦,可在 view model、model 或 App Intents 间传递)、String(localized:)(按当前区域立即生成字符串)。目录编辑器支持 Unicode 复数规则(zero、one、two、few、many、other)及设备变体(iPhone、iPad、Mac),无需 .stringsdict,例如 Text("(unreadCount) unread messages") 触发复数变体。FormatStyle 统一处理货币、数字、日期与相对时间,例如 amount.formatted(.currency(code: "USD"))、eventDate.formatted(date: .abbreviated, time: .shortened)。RTL 使用 leading/trailing 代替绝对 left/right,方向性 SF Symbols 自动镜像。
用法:文本通过与上述方式被提取或包裹以进入目录;格式化统一走 FormatStyle;布局用 leading/trailing;复数与词形变化在 String Catalogs 中配置。审查时参考清单:新字符串是否用 .xcstrings、跨层传递是否用 LocalizedStringResource、数值/日期/货币是否用 FormatStyle、布局是否用 leading/trailing、复数规则是否已配置。
限制与常见错误:字符串拼接会破坏其他语言语序,应使用带位置参数(%1$@)的格式说明符;硬编码日期/数字格式在非美式区域失效;硬编码 left/right 在阿拉伯语/希伯来语 RTL 下不翻转;在 static 常量中急切初始化 String(localized:) 会把语言固定在启动时,无法响应用户动态切换语言;忽略复数变体在俄语、阿拉伯语等复杂复数规则下出错。包资源相关细节及更多参考见 references/formatstyle-locale.md、references/string-catalogs.md。