iOS-使用Localizable.strings

时间:2019-02-11 12:47:10

标签: ios swift localization nsattributedstring localizable.strings

有没有办法像这样在可本地化文件中加粗一些单词?

"Pending network connection" = "<b>Pending</b> network connection";

我里面有这个字符串,我只想强调单词:

 "camSave" = "To complete onboarding:\n1. Tap Save and disconnect to disconnect from the camera.\n2. Connect to the internet.\n3. Log in to Cloud.";

我想在警报中使用它

2 个答案:

答案 0 :(得分:2)

您实际上可以将HTML标记与NSAttributedString一起使用。这就是我用的:

static func convertFromHTMLString(_ input: String?) -> NSAttributedString? {
    guard let input = input else { return nil }

    guard let data = input.data(using: String.Encoding.unicode, allowLossyConversion: true) else { return nil  }
    return try? NSAttributedString(data: data, options: [NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html], documentAttributes: nil)
}

因此,我使用UTF8格式将输入字符串转换为原始数据。然后,我使用带有适当标志NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html的属性字符串的构造函数和数据。

答案 1 :(得分:1)

您可以实现以下目标:

  1. 将字符串分成模板和参数格式。
  2. 提供个人本地化。
  3. 从模板和参数中形成完整的字符串。
  4. 在完整的字符串中查找参数,并使用NSAttributedString应用格式。

因此,在您的情况下,Localizable.string文件中的内容将如下所示

"%@ network connection" = "%@ network connection";
"Pending" = "Pending";

现在形成已本地化的完整字符串

let complete = String(format: NSLocalizedString("%@ network connection", ""), NSLocalizedString("Pending", ""))

然后在完整字符串中找到参数化字符串的Range

let range = complete.range(of: NSLocalizedString("Pending", ""))

现在通过形成NSAttributedString来应用需要在此范围内应用的任何属性。