用于本地化目的的文本连接

mal*_*low 2 xcode ios swift swiftui

我正在尝试使用此方法本地化我的应用程序:如何在 Swift UI 中实现本地化

一般来说它有效。我发现的一个问题是文本连接。示例:我有文本“bookings”的翻译。为了使它工作,我需要分离我以前的代码:

Text("bookings: 40")
Run Code Online (Sandbox Code Playgroud)

成为:

Text("bookings")
    .fontWeight(.bold)
+ Text(": 40")
    .fontWeight(.bold)
Run Code Online (Sandbox Code Playgroud)

翻译仍然有效。问题是现在我需要两次文本格式(在这个例子中:fontWeight,但有时它更复杂)。

我试图让它更简单:

Text("bookings" + ": 40)
    .fontWeight(.bold)
Run Code Online (Sandbox Code Playgroud)

此代码适用于英语,但现在不会被翻译成其他语言。我应该如何更改我的代码以使其工作并保持简单?

Mar*_*n R 5

Text本地化适用于字符串插值,例如参见WWDC 2019: What's new in Swift session video,或Localization in SwiftUI,或此答案

但是,您必须使用正确的格式说明符。对于字符串,它是%@,对于整数,它是%lld。例子:

let value = 40

struct ContentView: View {
    var body: some View {
        Text("bookings: \(value)")
            .fontWeight(.bold)
    }
}
Run Code Online (Sandbox Code Playgroud)

带有本地化条目

"bookings: %lld" = "Buchungen: %lld";
Run Code Online (Sandbox Code Playgroud)

在 Localizable.strings 文件中,文本“Buchungen: 40”以粗体显示:

在此处输入图片说明