在 macos 应用中为 xcode 项目添加多语言支持,核心是利用苹果标准的本地化机制:以 .strings 文件管理文本资源,由系统根据用户语言环境自动加载对应翻译。整个流程不依赖第三方库,xcode 原生支持,关键在于结构规范和调用正确。
在 macos 应用中为 xcode 项目添加多语言支持,核心是利用苹果标准的本地化机制:以 .strings 文件管理文本资源,由系统根据用户语言环境自动加载对应翻译。整个流程不依赖第三方库,xcode 原生支持,关键在于结构规范和调用正确。
配置项目支持的语言
打开项目设置,选中项目根节点 → 切换到 “Info” 标签页 → 找到 “Localizations” 区域 → 点击 “+” 按钮 → 从列表中选择要支持的语言(如 “Chinese (Simplified)”、“Japanese”)。Xcode 会自动为每种语言创建对应的 .lproj 文件夹,并将已有的资源(如 Main.storyboard 或 Localizable.strings)纳入本地化轨道。
准备本地化字符串文件
新建一个名为 Localizable.strings 的文件(File → New → File → Strings File),保存时确保勾选目标 Target。Xcode 会将其归入 Base 参考语言(通常是英文)。之后,在项目导航器中选中该文件 → 右侧检查器(Inspector)里点击 “Localize…” → 勾选已添加的语言 → 确认。Xcode 就会在每个 xx.lproj 文件夹下生成对应语言的 Localizable.strings。
每个 .strings 文件内使用标准键值对格式:
"save_button" = "Save"; "save_button" = "保存";
注意:键名(如 save_button)必须完全一致,仅值部分翻译;注释用 /* ... */ 包裹,便于翻译人员理解上下文。
在代码中调用本地化文本
Swift 中统一使用 NSLocalizedString(_:comment:) 函数:
Text(NSLocalizedString("save_button", comment: "Label for save action"))
Button(NSLocalizedString("save_button", comment: "Label for save action")) { /* ... */ }该函数会自动查找当前系统语言匹配的 .strings 文件,返回对应翻译。如果某语言缺失某条目,会回退到 Base 语言(通常为英文)。
对于 SwiftUI 预览或调试,可在 Xcode Scheme 的 “Run → Options” 中手动设置 “Application Language”,无需切换系统语言即可验证效果。
本地化界面元素(Storyboard/XIB)
选中 Main.storyboard → 右侧检查器中点击 “Localize…” → 添加语言后,Xcode 会为每种语言生成独立的 Main.strings 文件(位于对应 xx.lproj 下)。这些文件包含界面中所有可本地化的文本(按钮标题、标签文字等),格式与 Localizable.strings 相同,直接编辑翻译即可。
注意:Storyboard 本地化依赖 Auto Layout 正确设置约束,否则某些语言因文字长度差异可能导致布局错位。











