来自带有格式说明符的本地化字符串的 NSAttributedString
NSAttributedString from localized string with format specifier
我有一个本地化字符串:
"%@ some text" = "%@ some text";
格式说明符 %@
可以出现在本地化字符串的任何位置。
问题是这个字符串应该是 NSAttributedString
; %@
替换和文本的其余部分应该具有不同的属性。我该如何解决这个问题?
对于这种情况,您可以使用 NSMutableAttributedString
。 Here 是 Apple 文档
NSString *textToDisplay = [NSString stringWithFormat:@"%@ somet text",localizedString];
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:textToDisplay];
[attrStr addAttribute:NSFontAttributeName
value:[UIFont fontWithName:@"Exo2-Regular" size:30]
range:NSMakeRange(0, locatilzedString.length)];
[attrStr addAttribute:NSFontAttributeName
value:[UIFont fontWithName:@"Exo2-Bold" size:30]
range:NSMakeRange(locatilzedString.length, attrStr.length)];
label.attributedText = attrStr
1) 使用 NSLocalizedString()
.
获取本地化模板
2) 获取要插入的文本。
3) 使用 -stringWithFormat:
.
结合两者
4)在模板中,使用-rangeOfString:
找到占位符的位置
5) 在格式化字符串中查找插入文本的范围,使用上一步找到的起始位置,-rangeOfString:options:range:
。 (这里的第三个参数是要搜索的范围;这可以避免找到未替换的文本。)
6) 从格式化字符串创建属性字符串,使用范围将属性应用于插入的文本。
我有一个本地化字符串:
"%@ some text" = "%@ some text";
格式说明符 %@
可以出现在本地化字符串的任何位置。
问题是这个字符串应该是 NSAttributedString
; %@
替换和文本的其余部分应该具有不同的属性。我该如何解决这个问题?
对于这种情况,您可以使用 NSMutableAttributedString
。 Here 是 Apple 文档
NSString *textToDisplay = [NSString stringWithFormat:@"%@ somet text",localizedString];
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:textToDisplay];
[attrStr addAttribute:NSFontAttributeName
value:[UIFont fontWithName:@"Exo2-Regular" size:30]
range:NSMakeRange(0, locatilzedString.length)];
[attrStr addAttribute:NSFontAttributeName
value:[UIFont fontWithName:@"Exo2-Bold" size:30]
range:NSMakeRange(locatilzedString.length, attrStr.length)];
label.attributedText = attrStr
1) 使用 NSLocalizedString()
.
获取本地化模板
2) 获取要插入的文本。
3) 使用 -stringWithFormat:
.
结合两者
4)在模板中,使用-rangeOfString:
找到占位符的位置
5) 在格式化字符串中查找插入文本的范围,使用上一步找到的起始位置,-rangeOfString:options:range:
。 (这里的第三个参数是要搜索的范围;这可以避免找到未替换的文本。)
6) 从格式化字符串创建属性字符串,使用范围将属性应用于插入的文本。