NSLocalizedString 中参数的不同字体
Different font for parameters in NSLocalizedString
我想给标签一个包含多种字体的文本。这可以通过创建 NSMutableAttributedString
来完成。但是,我不确定如何格式化以下情况:
String(format: NSLocalizedString("%@ has replied in '%@'", comment: ""), username, conversationTitle)
我想给用户名和对话标题一个单独的字体。我想以最简单的方式来做到这一点。我的意思是:
- 我不想稍后使用子字符串在字符串中找出
username
。当 conversationTitle
与 username
相同或 conversationTitle
在 username
等中时,这会导致问题。
- 我不想构建字符串,如下所示:。这在创建
NSLocalizedString's
时很糟糕,我认为当这样创建字符串时,翻译人员会遇到麻烦。
像这样的问题: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 %@";
现在,我将使用粗体示例,因为它更容易,但您可以使用一些自定义标签来告诉您它需要加粗,例如 HTML、MarkDown 等。
在HTML中:
"_REPLIED_IN_" = "<b>%1$@</b> has replied in <b>%@</b>";
你需要把它解析成NSAttributedString
:
let translation = String(format: NSLocalizedString(format: "_REPLIED_IN_", comment: nil), userName, conversationTitle)
let attributedText = NSAttributedString.someMethodThatParseYourTags(translation)
由您选择最简单的标签格式),根据您的需要:易于翻译人员理解,易于解析(CocoaTouch 已经有 HTML 解析器等)。
我想给标签一个包含多种字体的文本。这可以通过创建 NSMutableAttributedString
来完成。但是,我不确定如何格式化以下情况:
String(format: NSLocalizedString("%@ has replied in '%@'", comment: ""), username, conversationTitle)
我想给用户名和对话标题一个单独的字体。我想以最简单的方式来做到这一点。我的意思是:
- 我不想稍后使用子字符串在字符串中找出
username
。当conversationTitle
与username
相同或conversationTitle
在username
等中时,这会导致问题。 - 我不想构建字符串,如下所示:。这在创建
NSLocalizedString's
时很糟糕,我认为当这样创建字符串时,翻译人员会遇到麻烦。
像这样的问题: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 %@";
现在,我将使用粗体示例,因为它更容易,但您可以使用一些自定义标签来告诉您它需要加粗,例如 HTML、MarkDown 等。
在HTML中:
"_REPLIED_IN_" = "<b>%1$@</b> has replied in <b>%@</b>";
你需要把它解析成NSAttributedString
:
let translation = String(format: NSLocalizedString(format: "_REPLIED_IN_", comment: nil), userName, conversationTitle)
let attributedText = NSAttributedString.someMethodThatParseYourTags(translation)
由您选择最简单的标签格式),根据您的需要:易于翻译人员理解,易于解析(CocoaTouch 已经有 HTML 解析器等)。