gpt4 book ai didi

swift - 如何设置 Canvas 预览语言?

转载 作者:行者123 更新时间:2023-12-02 00:50:34 26 4
gpt4 key购买 nike

(目前正在 Xcode 11 Beta 7 上试用)

我想将一个已经本地化的字符串传递给 Text() 并使用“.environment(.locale, .init(identifier:"ja"))”查看它在 Canvas 上的外观,但预览始终设置为我使用的任何语言已经设置了方案设置。

我知道如果我直接传递 LocalizedStringKey 会起作用,比如 Text("introTitle"),但我不想这样做。相反,我想使用枚举,例如 Text(L10n.Intro.title),但是当我这样做时,环境运算符会被方案设置语言覆盖。

这是错误还是预期行为?

struct ContentView: View {
var body: some View {
Text("introTitle") //this works
Text(L10n.Intro.title) //this doesn't
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ForEach(["en", "ja", "pt"], id: \.self) { localeIdentifier in
ContentView()
.environment(\.locale, .init(identifier: localeIdentifier)) //this gets ignored, and only the scheme settings language is previewed
.previewDisplayName(localeIdentifier)
}
}
}

internal enum L10n {
internal enum Intro {
internal static let title = NSLocalizedString("introTitle", comment: "")
internal static let title2 = "introTitle" //this also doesn't work
}
}

在 Localizable.strings 我有:

//英语
"introTitle" = "Welcome!";
//日本人
"introTitle" = "ようこそ!";
//葡萄牙语
"introTitle" = "Bem-vindo(a)!";

最佳答案

我的首选方法是使用 Text("introTitle") ,但如果你想对你的本地化键使用枚举,你必须像这样声明

internal enum L10n {
internal enum Intro {
internal static let title = LocalizedStringKey("introTitle")
}
}

然后你就可以像这样使用它:
Text(L10n.Intro.title)

在您的代码中 title类型为 NSLocalisedString , title2String ,但你需要一个 LocalizedStringKey传递到文本初始值设定项。

关于swift - 如何设置 Canvas 预览语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57965399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com