假设有这样一个英文字符串,它要求对文本字符串的特定部分进行粗体或颜色等处理:
“字 1 字 2 字 3 字 4”
这可以通过为适当的范围设置属性来实现。
范围可以硬编码为 (13,5),但当然不能本地化。
因此,或者可以通过知道必须对其应用粗体的第 3 个单词来动态确定范围。
但这也不是可本地化的。假设一旦该句子被翻译成语言 N 它只包含 2 个单词,或者在语言 M 中包含 5 个单词?
所以我的问题是如何在不进行大量硬编码的情况下将属性字符串与本地化结合使用?
最佳答案
我在最新项目中采用的方法是在 Localizable.strings
文件中使用 HTML,然后使用类似这样的方法生成 NSAttributedString
:
NSString *htmlString = NSLocalizedString(key, comment);
[[NSAttributedString alloc] initWithData:
[htmlString dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
documentAttributes:nil
error:nil]]
(作为个人喜好,我将所有这些都打包到 #define LocalizedHTMLForKey(key)
中,所以希望我没有在这个答案中添加任何错别字,让它更清晰……)
关于ios - 是否有将属性字符串与本地化结合使用的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22387839/