在Swift / SwiftUI中回退到默认的(英语)语言,可以通过以下步骤实现:
NSLocalizedString
函数来获取本地化字符串。这个函数会根据当前设备的语言设置自动返回适当的翻译。UserDefaults
来存储用户的选择。在应用启动时,检查存储的语言设置,并将其应用到整个应用程序。以下是一个示例代码,演示如何在Swift / SwiftUI中回退到默认的英语语言:
import SwiftUI
struct ContentView: View {
@State private var selectedLanguage = UserDefaults.standard.string(forKey: "SelectedLanguage") ?? Locale.current.languageCode ?? "en"
var body: some View {
VStack {
Text(NSLocalizedString("hello", comment: ""))
.font(.title)
Picker("Language", selection: $selectedLanguage) {
Text("English").tag("en")
Text("French").tag("fr")
// 添加其他语言选项
}
.pickerStyle(SegmentedPickerStyle())
.padding()
}
.onAppear {
// 应用存储的语言设置
Bundle.main.setLanguage(selectedLanguage)
}
.onChange(of: selectedLanguage) { newValue in
// 存储用户选择的语言
UserDefaults.standard.set(newValue, forKey: "SelectedLanguage")
// 应用新的语言设置
Bundle.main.setLanguage(newValue)
}
}
}
extension Bundle {
func setLanguage(_ languageCode: String) {
guard let path = Bundle.main.path(forResource: languageCode, ofType: "lproj") else {
return
}
let bundle = Bundle(path: path)
object_setClass(self, type(of: bundle!))
}
}
在上面的示例中,我们创建了一个简单的视图,其中包含一个文本和一个选择器。文本使用NSLocalizedString
函数获取本地化字符串。选择器允许用户选择应用的语言。
通过UserDefaults
存储用户选择的语言,并在应用启动时应用该设置。Bundle
的扩展方法setLanguage
用于设置应用的语言。
领取专属 10元无门槛券
手把手带您无忧上云