xib文件的iPhone本地化

时间:2010-09-13 19:24:13

标签: iphone localization xib

我只是熟悉xib文件的本地化,并想知道是否有一种方法通过直接引用plist来本地化xib中的字符串...

欣赏一些想法..

4 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

我的方法稍微取消了@Clafou的答案,但它可能会更直接一点。我只是为我的按钮设置IBOutlets并在我的.h控制器中标记字符串(在xib上创建)。

 @interface DetailViewController : UIViewController {


IBOutlet UILabel *TitleLabelMain;

}

然后转到我的.m控制器,并使用NSLocalizableStrings为这些标签和按钮赋值。

- (void)viewWillAppear:(BOOL)animated {

TitleLabelMain.text = NSLocalizedString(@"titleLabel",nil);

当然,您需要在Localizable.strings中定义一个值

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

答案 2 :(得分:1)

Apple提出的方法是将字符串转换为.strings包中的.lproj文件,这些文件将由Cocoa的本地化框架切换。

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

右键单击Xco​​de中的xib文件,然后选择Get Info。选择General标签,然后点击Make File Localizable。然后,您可以通过点击同一标签上的Add Localization来添加本地化。

我建议this tutorial获取分步信息(以及漂亮的图片)。

答案 3 :(得分:0)

我认为直接本地化xibs不是一个好选择。我使用https://github.com/steipete/Aspects挂钩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];