有没有一个选项可以隐式地在Interfacebuilder中定位标签

在博客文章的某处,我偶然发现了一个如下所示的string文件:

// de.lproj/Localizable.strings "This is the title" = "Das ist der Titel" 

对我来说,这看起来像是在编译器中处理的“接口”构build器中的实际标签,以便不使用NSLocalizedString(@"SOME_IDENTIFIER", @""); 将是必要的。

我现在的问题是,是否有某种快捷方式,或者我需要本地化我的视图上的所有我的个人标签,例如在awakeFromNib方法。

我已经想出了一个半自动化的过程,所以我不必这样做:

 label1.text = NSLocalizedString(@"label1_key", @""); label2.text = NSLocalizedString(@"label2_key", @""); .... labeln.text = NSLocalizedString(@"labeln_key", @""); 

所以对于所有应该本地化的标签,我把它们的文本设置为IB中的__KeyForLabelX 。 然后在视图控制器的viewWillAppear方法中,循环查看视图上的项目,并将文本设置为本地化值:

 for (UIView *view in self.view){ if([view isMemberOfClass:[UILabel class]]){ UILabel *l = (UILabel *)view; BOOL shouldTranslate = [l.text rangeOfString:@"__"].location != NSNotFound; NSString *key = [l.text stringByReplacingOccurrencesOfString:@"__" withString:@"TranslationPrefix"]; if (shouldTranslate){ l.text = NSLocalizedString(key, @""); } } } 

我的.strings文件看起来像这样:

 "TranslationPrefixKeyForLabelX" = "Translation of Label X"; 

更新:为了进一步调整机制,你也可以检查UIButtonsUITextField (包括提示文本)等其他UIView