Локализация SwiftUI не работает с @State Strings - PullRequest
0 голосов
/ 24 апреля 2020

Я реализовал локализацию в своем приложении SwiftUI. Все работает нормально, но у меня проблемы с локализацией @State var. Локализация не работает, и я получаю только распечатанные ключи. Любая идея, как решить эту проблему?

Значение type уже в моем Localizable.strings

@State var type: String

var body: some View {
    VStack {
        Text(self.type) // not working
        Text("test") // working
    }
}

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Когда строковый литерал передается в Text, его тип должен быть выведен (поскольку он явно не указан). Дословный текст, вероятно, является фиксированной частью вашего пользовательского интерфейса, поэтому он интерпретируется как LocalizedStringKey.

Когда вы передаете свойство self.type, оно имеет явный тип - String, поэтому используется инициализатор Text(_ verbatim:), что приводит к нелокализованному тексту.

Если вы хотите, чтобы это свойство для локализации можно использовать LocalizedStringKey(_ string: String) инициализатор -

Text(LocalizedStringKey(self.type))
1 голос
/ 24 апреля 2020

Вы можете преобразовать строку в NSLocalizedString

Text(NSLocalizedString(type, comment: ""))

или изменить тип type на LocalizedStringKey

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