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