我必须让用户从一个列表中选择应用程序的语言。
把下一行放在SceneDelegate中工作得很好,因为它在一开始就加载了指定的语言,但我不知道如何从包含列表的视图中设置语言,以便在整个应用程序中切换语言。
window.rootViewController = UIHostingController(rootView: ContentView().environment(\.locale, .init(identifier: "de")))
但我不知道如何从包含列表的视图中设置locale来切换整个应用程序的语言。
谢谢你的帮助
你可以使用 @State var
作为locale标识符。在这个例子中,我使用按钮来改变状态,而文本会立即改变。
struct LanguageView: View {
@State var identifier = "en"
var body: some View {
VStack {
Button("French", action: {
self.identifier = "fr"
})
Button("English", action: {
self.identifier = "en"
})
Text("Test")
}
.environment(\.locale, .init(identifier: identifier))
}
}
在我的Localizable.strings中,我加入了 "Test" = "My english text";
英文和法文 "Test" = "Mon texte français";
法国人的。