【发布时间】:2013-07-31 04:07:04
【问题描述】:
我的要求是从应用程序内切换本地化的 XIB。通常,当您本地化 XIB 并从设置更改语言时,会自动加载本地化的特定语言 XIB。
我有如下图所示的 XIB:
我想在应用程序中的按钮点击选择特定语言时加载 XIB。可以在here找到此类应用程序的源代码。
我该怎么做?
【问题讨论】:
标签: iphone ios localization xib
我的要求是从应用程序内切换本地化的 XIB。通常,当您本地化 XIB 并从设置更改语言时,会自动加载本地化的特定语言 XIB。
我有如下图所示的 XIB:
我想在应用程序中的按钮点击选择特定语言时加载 XIB。可以在here找到此类应用程序的源代码。
我该怎么做?
【问题讨论】:
标签: iphone ios localization xib
我通过创建一个简单的方法解决了这个问题,见下文
-(void)changeControllersForLanguage:(NSString *)language{
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]; //Detecting specific language lproj folder
if (path) {
//Creating Local Bundle from the language specific bundle path
NSBundle *localeBundle = [NSBundle bundleWithPath:path];
NSArray *controllers=self.tabBarController.viewControllers;
for(UIViewController *view in controllers){
[localeBundle loadNibNamed:NSStringFromClass([view class]) owner:view options:nil];
}
}
}
然后在点击按钮时调用如下函数
- (IBAction)toggleLanguage:(id)sender {
UIButton *btn=(UIButton *)sender;
switch (btn.tag) {
case 1://French
[self changeControllersForLanguage:@"fr"];
break;
case 2://English
[self changeControllersForLanguage:@"en"];
break;
default:
break;
}
}
确实有效.. :)
【讨论】:
NSArray *languageCodes = @[@"", @"fr", @"en"] 并调用[self changeControllersForLanguage:languageCodes[btn.tag]]; 来避免switch 语句