使用情节提要中的属性字符串本地化 UILabel

Posted

技术标签:

【中文标题】使用情节提要中的属性字符串本地化 UILabel【英文标题】:Localising a UILabel with attributed string from a Storyboard 【发布时间】:2016-02-29 03:17:22 【问题描述】:

我有一个 UILabel,其文本在情节提要中设置为“归属”。当我生成用于翻译成不同语言的 Main.strings 文件时,该标签的文本不会出现。

我尝试通过复制对象 ID 手动将条目添加到 Main.strings 文件中。我尝试设置“text”属性和“attributedText”属性,但是当我运行应用程序时,不使用翻译后的字符串。

那么,如何在情节提要上将 UILabel 集本地化为“属性”?

【问题讨论】:

看看这个:***.com/questions/14459860/… 嗨,果冻!有没有办法从情节提要中做到这一点,而不必使用代码加载标签的文本? 不幸的是,我认为这是不可能的。您必须从代码中完成。 【参考方案1】:

我最终结合故事板和代码解决了这个问题,并使用this answer 作为参考。

首先,我在情节提要上使用的属性字符串只是对整个字符串应用了 1.5 行间距,因此在保留情节提要的标签格式的代码上设置文本更容易。

情节提要包含一个 UILabel,其 text 属性设置为 Attributed,行高倍数为 1.5。

在我的视图控制器代码中,我有一个 setupUI 方法和该 UILabel 的出口。

@interface MyClass ()
@property (weak, nonatomic) IBOutlet UILabel *aLabel;
@end

@implementation MyClass
- (void)setupUI 
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithAttributedString:self.aLabel.attributedText];
    [attributedString.mutableString setString:NSLocalizedString(@"This is the label text which should be localisable.", "")];
    self.aLabel.attributedText = attributedString;

@end

使用上面的代码,变量属性字符串存储故事板上设置的所有格式,因此当我更改属性字符串文本时,我不必再次设置格式。当然,当我执行“Export for Localizations”命令时,标签文本会出现在 Localizable.strings 上。

如果属性字符串的内部子字符串具有不同的格式,这将无法正常工作。在这种情况下,必须在代码上手动设置格式(或使用 Jelly 在评论中发布的答案所建议的 rtf 文件)。

【讨论】:

完美答案。谢谢。

以上是关于使用情节提要中的属性字符串本地化 UILabel的主要内容,如果未能解决你的问题,请参考以下文章

如何在情节提要中的 UILabel 的右边缘添加前导约束?

从情节提要加载 UILabel,无法更改 cellForRowAtIndexPath 中的框架

如何根据自适应布局和情节提要使 uitableviewcell 中的 uilabel 相对于设备进行包装

如何仅使用情节提要使 UILabel 的 UIView 超级视图适合 UILabel 的固有高度?

如何使用情节提要设置包装文本 UILabel Xcode

在情节提要中定位 UILabel