【问题标题】:How to deal with interpolated LocalizedStringKey in SwiftUI如何在 SwiftUI 中处理插值 LocalizedStringKey
【发布时间】:2020-09-08 06:00:57
【问题描述】:

当我需要翻译一个显示用户分数的插值字符串时,我真的是在努力翻译我的 iOS SwiftUI 应用程序。

我已经尝试了一些字符串扩展,但它似乎无法正常工作。例如,我有:

字符串扩展

extension String {

    func localized(withComment comment: String? = nil) -> String {
        return NSLocalizedString(self, comment: comment ?? "")
    }

}

Localizable.strings 中的本地化字符串

"Score" = "Perf";

ContentView.swift 中的分数视图

ScoreCard("\("Score".localized()): \(quizManager.score)/\(quizManager.numberOfQuestions)")

这让我明白了:

我在网上搜索并没有发现任何关于可本地化字符串的字符串插值。

请问有人有解决办法吗?

【问题讨论】:

  • 我想出了一个临时解决方案,即在它之前创建另一个 Text() 视图并将两个 Text 视图分组在 HStack() 中,如下所示:HStack { Text("Score:"); Text(text) }
  • ScoreCard 里面是什么?因为如果我用Text 替换它,那么你的扩展程序一切正常。使用 Xcode 11.4 / iOS 13.4 测试。
  • 您的扩展程序运行良好。应该被视为解决方案

标签: swift swiftui string-interpolation localizable.strings


【解决方案1】:

在内容视图中使用 LocalizedStringKey

LocalizedStringKey("Score \(quizManager.score)/\(quizManager.numberOfQuestions)")

【讨论】:

  • 已经尝试过了,但我收到以下错误:无法将“LocalizedStringKey”类型的值转换为预期的参数类型“字符串”
  • 你是如何解决这个@QuentinC 的?
  • 不@anoop4real 我切换到另一个项目,但我仍在寻找实现它的方法。我现在没有足够的时间来解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
  • 2016-06-24
相关资源
最近更新 更多