gpt4 book ai didi

swift - NSLocalizedString 中参数的不同字体

转载 作者:行者123 更新时间:2023-11-28 05:46:45 27 4
gpt4 key购买 nike

我想给标签一个包含多种字体的文本。这可以通过创建一个 NSMutableAttributedString 来完成。但是,我不确定如何格式化以下情况:

String(format: NSLocalizedString("%@ has replied in '%@'", comment: ""), username, conversationTitle)

我想给用户名和对话标题一个单独的字体。我想以最简单的方式来做到这一点。我的意思是:

  • 我不想稍后使用子字符串在字符串中找出 username。当 conversationTitleusername 相同,或者 conversationTitleusername 等中时,这会导致问题.等..
  • 我不想建立字符串,如下所示:https://stackoverflow.com/a/37992022/7715250 .这在创建 NSLocalizedString 的 时很糟糕,我认为当这样创建字符串时,翻译人员会遇到麻烦。

类似问题:Making text bold using attributed string in swift , Are there approaches for using attributed strings in combination with localization?其他的大多是不带参数的 NSLocalizedString 或带参数的 NSLocalizedString 的字符串文字。

最佳答案

首先,您应该在您的 .strings 中有一个更加通用和可读的键,例如:

"_REPLIED_IN_" = "%@ has replied in %@";

不要像您在示例中那样混淆键和值。此外,稍后可以更轻松地查看代码中是否存在未本地化的硬编码字符串。

现在,有一个问题,因为在英语中,它可能是这样的顺序,但在其他语言中则不一定。

所以改为:

"_REPLIED_IN_" = "%1$@ has replied in %$2@";

现在,我将使用粗体示例,因为它更容易,但您可以使用一些自定义标记来告诉您它需要加粗,例如 HTML、MarkDown 等。

在 HTML 中:

"_REPLIED_IN_" = "<b>%1$@</b> has replied in <b>%$2@</b>";

你需要将它解析成一个NSAttributedString:

let translation = String(format: NSLocalizedString(format: "_REPLIED_IN_", comment: nil), userName, conversationTitle)
let attributedText = NSAttributedString.someMethodThatParseYourTags(translation)

由你来选择最简单的标签格式),根据你的需要:易于翻译者理解,并且易于解析(CocoaTouch 已经有 HTML 解析器等)。

关于swift - NSLocalizedString 中参数的不同字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54388164/

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