如何在应用程序中切换本地化的Nib?

时间:2013-07-30 20:26:08

标签: iphone ios localization xib

我的要求是在应用内切换本地化的XIB。通常,当您本地化XIB并从“设置”更改语言时,将自动加载特定语言本地化的XIB。

我有如下图所示的XIB:

enter image description here

我想在应用程序中的按钮点击时选择特定语言时加载XIB。可以找到此类应用程序的源代码here

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我通过创建一个简单的方法解决了这个问题,见下文

-(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;
    }
}

它确实有效.. :)