swiftui - 带有 SwiftUI : How to change the environment locale on the fly 的 Swift 5

标签 swiftui locale environment

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

将下一行放入 SceneDelegate 工作正常,因为它在开头加载指定的语言:

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

但我不知道如何从包含列表的 View 中设置区域设置以在整个应用程序中切换语言。

谢谢你的帮助

最佳答案

您可以使用 @State var作为区域设置标识符。在这个例子中,我使用按钮来改变状态,文本会立即改变。

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";对于法语。

关于swiftui - 带有 SwiftUI : How to change the environment locale on the fly 的 Swift 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61480680/

相关文章:

Swiftui 文本字段在值更改时不更新

ios - SwiftUI:关闭工作表后,导航栏按钮的点击目标未对齐

facebook - 我的应用没有 'Translate your app' 链接

javascript - 将 locale 参数附加到 rails 中 js-routes gem 生成的所有路径

c++ - native Windows C++ 编程?

swift - 如何使用 stateobject 作为参数初始化 View ?

SwiftUI @State var 初始化问题

android - 以编程方式将应用程序语言环境设置为 pt_BR

bash - 为什么 bash 别名在脚本中不起作用?

python - 在哪里为 Django 项目设置 Python 环境属性?