iOS - Emphasise with bold strings in Localizable.strings

白昼怎懂夜的黑 提交于 2020-01-30 06:25:54

问题


Is there a way bold some words inside the Localizable file like so?

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

I have this string inside and i want to emphasis only certen words:

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

Btw i want to use it inside alert


回答1:


You can actually use HTML tags with NSAttributedString. This is what I used:

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)
}

So I convert an input string to raw data using UTF8 format. Then I use a constructor of attributed string with data using appropriate flags NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html.




回答2:


You can achieve this like following:

  1. Break the string into template and parameter format.
  2. Provide individual localization.
  3. Form the complete string from the template and parameter.
  4. Find the parameter's within the complete string and apply formats using NSAttributedString.

So in your case, in the Localizable.string file will look like following

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

Now form the complete string which is localized

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

Then find the Range of the parameterized string within the complete string.

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

Now apply whatever attributes you need to apply in this range by forming NSAttributedString.



来源:https://stackoverflow.com/questions/54630961/ios-emphasise-with-bold-strings-in-localizable-strings

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!