【问题标题】:How can you switch localized Nibs within an app?如何在应用程序中切换本地化 Nib?
【发布时间】:2013-07-31 04:07:04
【问题描述】:

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

我有如下图所示的 XIB:

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

我该怎么做?

【问题讨论】:

    标签: iphone ios localization xib


    【解决方案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;
        }
    }
    

    确实有效.. :)

    【讨论】:

    • 您可以通过将语言字符串放入数组NSArray *languageCodes = @[@"", @"fr", @"en"] 并调用[self changeControllersForLanguage:languageCodes[btn.tag]]; 来避免switch 语句
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多