SwiftUI:视图的本地化字符串,例如'Text`?

SwiftUI:视图的本地化字符串,例如'Text`?,swiftui,xcode11,Swiftui,Xcode11,使用Xcode beta 6和SwiftUI,使用>本地化的创建文本视图如何使用字体的小字体修饰符?例如,Text(“Hello World”).font(font.body.smallCaps())将呈现“Hello World”,但为了便于访问,基础字符串将保留其适当的本地化大小写。手动将其本地化,然后将其大写 extension String { func toUpperCase() -> String { return localized.uppercase

使用Xcode beta 6和SwiftUI,使用>本地化的创建
文本
视图
如何使用
字体
小字体
修饰符?例如,
Text(“Hello World”).font(font.body.smallCaps())
将呈现
“Hello World”
,但为了便于访问,基础字符串将保留其适当的本地化大小写。

手动将其本地化,然后将其大写

extension String {
    func toUpperCase() -> String {
        return localized.uppercased(with: .current)
    }
    private var localized : String {
        return NSLocalizedString( self, comment:"")
    }
}

Text("SignIn.Body.Instruction".toUpperCase())

现在可以使用所有新的(Xcode 12 Beta 3),如下所示:

文本(“签名正文说明”)
.textCase(.大写)
小写

文本(“签名正文说明”)
.textCase(.小写)

localizedCapitalized不起作用吗@这是一个完全不同的问题:D.这是一个
SwiftUI
问题。无法更改字符串本身,因为它引用的是键的名称。
NSLocalizedString(self,comment:)
这不是一个好主意,因为NSLocalizedString的键参数不是常量。因此,genstrings和Xcode编辑器->本地化导出无法获取它。短期来说,它可能很方便,但它会咬你,当你以后必须找到所有字符串在应用程序中手动本地化!您不希望使用uppercased(),它是用于编程字符串,而不是面向用户的字符串,因为它不考虑语言环境。请参阅
.uppercased(with:Locale.current))
我不知道。uppercased(with:Locale.current))谢谢你的提示。至于genstrings的问题,您的观点是非常正确的,但是在SwiftUI中,我希望不必经常使用我的方法,大部分本地化将由Text()自动处理。