1

私の要件は、ローカライズされた XIB をアプリ内から切り替えることです。通常、XIB をローカライズして [設定] から言語を変更すると、特定の言語にローカライズされた XIB が自動的に読み込まれます。

以下の画像のような XIB があります。

ここに画像の説明を入力

アプリケーション内のボタンタップで特定の言語が選択されたときに、XIB をロードしたいと考えています。このようなアプリケーションのソース コードは、ここにあります。

これどうやってするの?

4

1 に答える 1

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

それは本当にうまくいきました.. :)

于 2013-07-30T20:26:08.200 に答える