首页 > 解决方案 > SwiftUI - 动态文本的本地化

问题描述

我正在为我的一些 TextFields 的本地化而苦苦挣扎。如果我要翻译的文本是这样硬编码的,通常 Text() 或 TextField() 的“正常”本地化在我的应用程序中没有任何问题:

Text("English Text")

我在我的 Localizable.strings 中翻译它,如下所示:

"English Text" = "German Text";

现在我想翻译更动态的文本字段,但我知道每个可能的条目:

                TextField("New note" + (refresh ? "" : " "),text: $newToDo, onCommit: {
                    self.addToDo()
                    self.refresh.toggle()
                })

(刷新是必要的,因为 SwiftUI 错误有时不会再次显示占位符文本。)

另一个例子是:

    func dayWord() -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.timeZone = TimeZone.current
        dateFormatter.locale = Locale(identifier: "de_DE")
        dateFormatter.dateFormat = "EEEE"
        return dateFormatter.string(from: self)
    }

    var day: String {
        return data.date.dateFromMilliseconds().dayWord()
    }

   Text(day.prefix(2))

Text(day.prefix(2)) 只有七种可能的状态,但我不知道在我的 Localizable.strings 中写什么作为键。

标签: swiftlocalizationswiftui

解决方案


使用 NSLocalizedString,比如

TextField(NSLocalizedString("New note", comment: "") + (refresh ? "" : " "), ...

推荐阅读