Swift 5与SwiftUI。如何在飞行过程中改变环境的位置。

问题描述 投票:0回答:1

我必须让用户从一个列表中选择应用程序的语言。

把下一行放在SceneDelegate中工作得很好,因为它在一开始就加载了指定的语言,但我不知道如何从包含列表的视图中设置语言,以便在整个应用程序中切换语言。

window.rootViewController = UIHostingController(rootView: ContentView().environment(\.locale, .init(identifier: "de")))

但我不知道如何从包含列表的视图中设置locale来切换整个应用程序的语言。

谢谢你的帮助

swiftui locale environment
1个回答
2
投票

你可以使用 @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"; 法国人的。

© www.soinside.com 2019 - 2024. All rights reserved.