本文以 SwiftUI + Xcode 项目 为例,系统梳理应用本地化的完整流程,涵盖:
1、本地化语种配置
2、应用标题(App Name)本地化
3、应用内容(界面文案)本地化
4、String Catalog 与传统 strings / stringsdict 的区别与选型
文中示例基于 Xcode 15实现,但整体思路不依赖具体版本,适用于 iOS / macOS 的 SwiftUI 项目。
本地化语种配置
首先本地化设置中添加本地化语种,添加路径:
左侧顶部应用 -> PROJECT -> 应用名称 -> Localizations。

然后在底部找到添加按钮。

然后将需要本地化的语种添加进来。

全部配置完成后,我们可以查看配置的语种列表,这里我将简体中文作为默认语种。

提示:中文开发者建议使用英文作文默认语种,避免出现缺失翻译时的显示问题。
本地化应用标题
1、创建InfoPlist.strings文件
在项目中新建一个 Strings File,命名必须为:
InfoPlist
注意:文件名必须严格为 InfoPlist,否则无法生效。

2、启用多语言
选中 InfoPlist.strings 文件,在右侧 Localization 区域勾选需要支持的语种。
提示:
1、如果没有看到右侧面板,可点击右上角的侧边栏按钮展开。
2、勾选语种时建议从上到下顺序勾选,否则左侧生成的语言文件顺序会混乱,后期维护成本较高。

勾选完成后,Xcode 会在左侧自动生成对应语言的文件,例如:
InfoPlist (Chinese, Simplified)
InfoPlist (English)
3、配置 CFBundleDisplayName
在对应语种文件中添加:
"CFBundleDisplayName" = "存钱猪猪";
不同语种配置不同的显示名称即可。
此时,应用在不同系统语言环境下,将显示对应的应用名称。

本地化应用内容
SwiftUI 项目推荐使用 String Catalog 来管理本地化文本。
1、创建String Catalog
在项目中新建文件,选择:
String Catalog

找到名为:String Catalog的文件并双击进行创建。

创建完成后,Xcode 会自动生成一个名为 Localizable 的本地化资源。
注意:建议保持默认命名 Localizable,自定义命名可能导致某些场景下无法正确加载。

点击非默认语种,比如French(Canada),显示本地化的字段。

这里我们可以看到多了一个Default Localization(zh-Hans),各字段的含义分别为:
1、Key表示本地化语言调取时的关键词,我们在视图中使用String(localized: Key)调取
2、Default Localization(zh-Hans)表示默认语种是中文以及对应的中文内容
3、本地化语种字段,表示需要翻译成对应的语种内容
4、Comment表示备注
其中需要注意的是,本地化的字段内容属于“牵一发而动全身”,新增一个文字内容就需要将全部的本地化字段进行汉化,工作量还是有的。比如我这个应用的提示内容大概20条左右,然后我设置了40个语种,工作量大概在6-8个小时左右,还是很费时间和精力的。
提示:在翻译本地化语种时,建议导入和导出批量翻译(可参考Apple的导入本地化和导出本地化版本文章),或者使用Ai进行翻译能够减少大量的工作量,普通的翻译工具(Google翻译)可能无法正确的实现语义翻译,AI可以降低翻译的错误率。
实现效果
1、实现代码:
import SwiftUI
struct ContentView: View {
var body: some View {
let love = String(localized: "爱来自中国山东日照")
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text(love)
}
.padding()
}
}
#Preview {
ContentView()
}
2、预览效果:

相关文章
1、Xcode本地化失效问题:https://fangjunyu.com/2024/06/02/xcode%e6%9c%ac%e5%9c%b0%e5%8c%96%e5%a4%b1%e6%95%88%e9%97%ae%e9%a2%98/
2、Xcode本地化词条文件失效:https://fangjunyu.com/2024/06/05/xcode%e6%9c%ac%e5%9c%b0%e5%8c%96%e8%af%8d%e6%9d%a1%e6%96%87%e4%bb%b6%e5%a4%b1%e6%95%88/
3、Swift本地化显示异常问题:Localizable与插值不兼容:https://fangjunyu.com/2024/10/17/swift%e6%9c%ac%e5%9c%b0%e5%8c%96%e6%98%be%e7%a4%ba%e5%bc%82%e5%b8%b8%e9%97%ae%e9%a2%98%ef%bc%9alocalizable%e4%b8%8e%e6%8f%92%e5%80%bc%e4%b8%8d%e5%85%bc%e5%ae%b9/
4、Swift取消Text的自动本地化实现:https://fangjunyu.com/2024/10/18/swift%e5%8f%96%e6%b6%88text%e7%9a%84%e8%87%aa%e5%8a%a8%e6%9c%ac%e5%9c%b0%e5%8c%96%e5%ae%9e%e7%8e%b0/
5、Swift本地化应用名称失效问题:https://fangjunyu.com/2024/10/29/swift%e6%9c%ac%e5%9c%b0%e5%8c%96%e5%ba%94%e7%94%a8%e5%90%8d%e7%a7%b0%e5%a4%b1%e6%95%88%e9%97%ae%e9%a2%98/
附录
1、设置默认语种

左侧顶部应用 -> PROJECT -> 应用名称 -> Localizations,点击任意语种后,底部有一个“Set Default”按钮,可以设置默认语种。
