SwiftUI 本地化不适用于@State 字符串

SwiftUI Localisation not working with @State Strings

我在我的 SwiftUI 应用程序中实现了本地化。一切正常,但我在本地化 @State var 时遇到问题。本地化不起作用,我只得到打印出来的键。知道如何解决这个问题吗?

type的值已经在我的Localizable.strings

@State var type: String

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

你可以把字符串转换成NSLocalizedString

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

或将 type 的类型更改为 LocalizedStringKey

@State var type: LocalizedStringKey

当字符串文字传递给 Text 时,需要推断其类型(因为没有明确说明)。文字文本可能是您 UI 的固定部分,因此它被解释为 LocalizedStringKey.

当您传递 属性 self.type 时,它有一个显式类型 - String,因此使用 Text(_ verbatim:) 初始化程序导致非本地化文本。

如果您希望 属性 本地化,您可以使用 LocalizedStringKey(_ string: String) 初始化程序:

Text(LocalizedStringKey(self.type))