iOS i18n
iOS 本地化:原生 Swift 和 SwiftUI 翻译工作流
iOS 使用 String Catalog(Xcode 15+)以及 .strings/.stringsdict 文件管理翻译。SwiftUI 视图通过 Text() 初始化器自动完成本地化,Xcode 负责提取、复数规则处理以及导出为 XLIFF 供译者使用。借助 String Catalog,您可以获得一个可视化编辑器,跟踪每个支持语言版本的翻译状态。
iOS 本地化功能
String Catalog(.xcstrings),提供可视化翻译编辑器和状态跟踪
通过 Text() 和 LocalizedStringKey 实现 SwiftUI 的自动本地化
通过 .stringsdict 和自动语法引擎处理复数形式和语法一致性
通过 Xcode 导出/导入 XCLOC 文件,实现专业译者的交接
Storyboard 和 XIB 本地化,集成 Interface Builder
Auto Layout 约束,可适应文本长度和布局方向的变化
支持从右到左 (RTL) 布局,采用 leading/trailing 布局语义
Foundation 格式化器,支持感知区域设置的日期、数字和度量单位格式化
使用 .lproj 目录对应用包进行本地化,管理各语言版本的资源
iOS 本地化实践
在 Text() 中使用字符串字面量时,SwiftUI 视图会自动完成本地化。String Catalog 在单个文件中管理复数形式和设备变体。
// SwiftUI - Automatic localization
struct WelcomeView: View {
let name: String
var body: some View {
VStack {
// Automatically looks up "Welcome to %@" in String Catalog
Text("Welcome to \(name)")
// Pluralization via String Catalog
Text("^[\(itemCount) item](inflect: true)")
// Date formatting respects locale
Text(Date.now, format: .dateTime.month(.wide).day())
}
}
}
// Localizable.xcstrings (String Catalog)
// Managed in Xcode - supports:
// - Automatic extraction from SwiftUI
// - Pluralization rules per locale
// - String variation by device
// - Translation state tracking