Swift 5 с SwiftUI: Как изменить локаль среды на лету - PullRequest
0 голосов
/ 28 апреля 2020

Я должен позволить пользователю выбрать язык приложения из списка.

Помещение следующей строки в SceneDelegate работает нормально, поскольку вначале загружается указанный язык:

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

но я не знаю, как настроить язык из представления, содержащего список, для переключения языка во всем приложении.

Спасибо за любую помощь

1 Ответ

0 голосов
/ 28 апреля 2020

Вы можете использовать @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"; для английского языка sh и "Test" = "Mon texte français"; для французский.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...