用途:在 iOS 26+ 应用中实现、审查或改进本地化与国际化,避免非英语市场因本地化问题被 App Store 拒绝、UI 误译或布局错乱。
主要能力:
- String Catalogs(.xcstrings):自 Xcode 15 / iOS 17 起取代 .strings 与 .stringsdict,统一可本地化字符串、复数规则与设备变体,自动从代码提取字符串并跟踪翻译状态。
- 字符串类型选择:SwiftUI 文本参数用 LocalizedStringKey(字面量隐式转换);视图模型、服务、错误消息用 String(localized:);App Intents、Widget、系统框架用 LocalizedStringResource 延迟解析;日志与分析用普通 String。
- 字符串插值:插值生成位置参数,翻译者可重排;推荐类型安全插值,如 String(localized: "Score: (score, format: .number)")。
- 复数:String Catalog 原生支持 CLDR 复数类别(zero/one/two/few/many/other),英文用 one 与 other,阿拉伯语用全部六类,必须提供 other 兜底。
- 设备变体与语法一致:可按 iPhone/iPad/Mac 提供不同文案;iOS 17+ 支持 ^[...](inflect: true) 语法一致。
- FormatStyle:日期、数字、货币、度量、时长、人名、列表均按用户区域自动格式化,如 now.formatted(date: .long, time: .shortened)、price.formatted(.currency(code: "USD"))。
- RTL:SwiftUI 自动镜像 HStack 顺序、leading/trailing、导航返回按钮等;方向性图标用 .flipsForRightToLeftLayoutDirection(true),电话号等强制 LTR。
使用方式:在 Xcode 中启用 String Catalog,让构建自动提取字符串;按上下文选择字符串类型;用 FormatStyle 替代硬编码格式;用 .leading/.trailing 替代 .left/.right;在预览中设置 .environment(.layoutDirection, .rightToLeft) 与阿拉伯语区域测试。
适用场景:iOS/macOS 应用多语言发布、App Intents 与 Widget 本地化、复数与区域格式化、RTL 语言适配。
限制:资料未提供具体安装命令、收费或价格信息;部分 API 有系统版本要求(如 String(localized:) 与 LocalizedStringResource 需 iOS 16+,语法一致需 iOS 17+)。