介绍
在 SwiftUI-国际化一文中,我们详细介绍了国际化的内容。在 Xcode 15 之后,Apple 提供了一种新的国际化方式,通过引入String Catalog
,使得处理国际化更加高效与便捷。
特点
- Info.plist 文件国际化需要新建一个
String Catelog
,必须命名为InfoPlist.xcstrings
。 - 文本国际化需要新建一个
String Catelog
,必须命名为Localizable.xcstrings
。 - Xcode 为
xcstrings
文件提供了可视化的编辑界面,并且会显示每一种语言的国际化完成比例。 - 编译时可以自动提取需要国际化的内容到
xcstrings
文件。
案例
- 配置国际化语言。
- 新建
Localizable.xcstrings
。 - SwiftUI 代码。
swift
import SwiftUI
struct ContentView: View {
let temperature = 10
var body: some View {
VStack {
// 纯文本
Text(String(localized: "title", defaultValue: "Kindly Reminder"))
// 自定义View
MessageView(String(localized: "message", defaultValue: "Weather Information"))
// 插值
Text(String(localized: "weather",
defaultValue: "Weather is \(String(localized: "localizedWeather", defaultValue: "Sunny"))"))
Text(String(localized: "temperature",
defaultValue: "Temperature is \(temperature) ℃"))
}
.padding()
}
}
struct MessageView: View {
let message: String
init(_ message: String) {
self.message = message
}
var body: some View {
Text(message)
}
}
- 编译项目,可以自动提取需要国际化的内容到
xcstrings
文件。 - 在 Xcode 提供的可视化的界面进行国际化内容的编辑,并且会显示每一种语言的国际化完成比例。
- 运行并且测试。
效果
-
英文。
-
中文。