xib文件的iPhone本地化

xib文件的iPhone本地化,iphone,localization,xib,Iphone,Localization,Xib,我刚刚熟悉了xib文件的本地化,想知道是否有一种方法可以通过直接引用plists来本地化xib中的字符串 欣赏一些想法。苹果建议的方法是将字符串导出到.lproj捆绑包中的.strings文件中,这些文件将由Cocoa的本地化框架关闭 Xcode可以从xib生成.strings文件,这使得本地化非常简单 右键单击Xcode中的xib文件,然后选择Get Info。选择常规选项卡,然后在底部单击使文件可本地化。然后,您可以通过单击同一选项卡上的添加本地化来添加本地化 我建议您提供一步一步的信息(以

我刚刚熟悉了xib文件的本地化,想知道是否有一种方法可以通过直接引用plists来本地化xib中的字符串


欣赏一些想法。

苹果建议的方法是将字符串导出到
.lproj
捆绑包中的
.strings
文件中,这些文件将由Cocoa的本地化框架关闭

Xcode可以从xib生成
.strings
文件,这使得本地化非常简单

右键单击Xcode中的xib文件,然后选择
Get Info
。选择
常规
选项卡,然后在底部单击
使文件可本地化
。然后,您可以通过单击同一选项卡上的
添加本地化
来添加本地化


我建议您提供一步一步的信息(以及漂亮的图片)。

如果您不想直接本地化.xib文件,您可以将其包含的文本提取到.strings文件中,并且在翻译.strings文件后,将其注入到.xib文件中以生成本地化版本。这些提取/注入操作是使用
ibtool
实用程序完成的


我找到了关于如何在上执行此操作的详细说明。

我的方法有点脱离了@Clafou-answer,但可能更简单一些。我只需在我的.h控制器中为我的按钮和标签字符串(在xib上创建)设置IBOutlets

 @interface DetailViewController : UIViewController {


IBOutlet UILabel *TitleLabelMain;

}
然后转到my.m控制器,给这些标签和按钮一个带有NSLocalizableStrings的值

- (void)viewWillAppear:(BOOL)animated {

TitleLabelMain.text = NSLocalizedString(@"titleLabel",nil);
当然,您需要在Localizable.strings中定义一个值

"titleLabel" = "THIS TEXT IS LOCALIZED!";

我认为直接本地化XIB不是一个好的选择。我使用它来钩住UILabel的awakeFromNib方法,并在那里本地化文本。例如:

 #define Localized(_v_) NSLocalizedString(_v_, nil)
 NSError *err = nil;
[UILabel aspect_hookSelector:@selector(awakeFromNib)
                 withOptions:AspectPositionAfter
                  usingBlock:^(id<AspectInfo> aspectInfo) {
                      UILabel *label = aspectInfo.instance;
                      NSString *lStr = Localized(label.text);
                      if (lStr) {
                          label.text = lStr;
                      }
} error:&err];
#定义本地化(_v_u)NSLocalizedString(_v_u,nil)
n错误*err=nil;
[UILabel aspect_hookSelector:@selector(awakeFromNib)
withOptions:AspectPositionAfter
使用block:^(id aspectInfo){
UILabel*label=aspectInfo.instance;
NSString*lStr=本地化(label.text);
if(lStr){
label.text=lStr;
}
}错误:&错误];

谢谢。实际上,我正试图直接引用XIB字符串的plist,如en_Strings.plist/fr_Strings.plists。我希望避免创建en_XIB,fr_XIB。