2016-02-29 78 views
4

我有一個UILabel,其文本在故事板中設置爲「屬性」。當我生成Main.strings文件以翻譯成其他語言時,此標籤的文本不會出現。使用屬性字符串從故事板中定位UILabel

我試圖通過複製對象ID手動添加到Main.strings文件中的條目。我嘗試設置「text」屬性和「屬性文字」屬性,但是當我運行應用程序時,翻譯後的字符串不被使用。

那麼,如何將UILabel集合本地化爲故事板上的「歸因」?

+0

看看這個:http://stackoverflow.com/questions/14459860/localizing-attributed-uitextview-from-storyboard – Jelly

+0

嗨果凍!有沒有從故事板做到這一點,而不必使用代碼加載標籤的文本? –

+0

不幸的是我不認爲這是可能的。你必須從代碼中完成。 – Jelly

回答

4

我最終用故事板和代碼的組合來解決這個問題,使用this answer作爲參考。

首先,我在故事板上使用的屬性字符串僅對整個字符串應用了1.5行距,因此在保留故事板標籤格式的代碼上設置文本更爲容易。

故事板包含一個UILabel,其文本屬性設置爲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 

與上面的代碼中,變量attributedString存儲所有格式上的腳本設置,所以當我改變attributedString文字我沒有重新設置格式。當然,當我執行「導出本地化」命令時,標籤文本出現在Localizable.strings中。

如果對於其內部的子字符串,其屬性字符串的格式不同,這種方法將無法正常工作。在這種情況下,格式化必須在代碼上手動設置(或使用由Jelly發表的評論中所提供的答案所建議的rtf文件)。

+0

完美答案。謝謝。 – mtb