¿Cómo get secuencias de guiones charts localizados después de cambiar al idioma en time de ejecución en iOS?

Tengo el siguiente código para cambiar el time de ejecución del idioma:

-(void) switchToLanguage:(NSString *)lang{ self.language = lang; [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:self.language, nil] forKey:@"AppleLanguages"]; [[NSUserDefaults standardUserDefaults] synchronize]; } 

Y tengo una function Helper que recupera cadenas localizadas:

 +(NSString *) getLocalizedString:(NSString *)key{ AppDelegate *appDelegate = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; NSString *path = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings" inDirectory:nil forLocalization:appDelegate.language]; NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path]; return [dict objectForKey:key]; } 

Esto esta funcionando Mis guiones charts también están localizados, pero no cambian cuando cambio de idioma.

¿Cómo puedo get valores localizados para las cadenas de storyboards?

Cambiar el idioma en time de ejecución es un poco complicado.

Esta es la mejor manera que he usado para hacerlo con la ayuda de esta pequeña class:

Language.m:

 #import "Language.h" @implementation Language static NSBundle *bundle = nil; +(void)initialize { NSUserDefaults* defs = [NSUserDefaults standardUserDefaults]; NSArray* languages = [defs objectForKey:@"AppleLanguages"]; NSString *current = [languages objectAtIndex:0]; [self setLanguage:current]; } +(void)setLanguage:(NSString *)l { NSString *path = [[ NSBundle mainBundle ] pathForResource:l ofType:@"lproj" ]; bundle = [NSBundle bundleWithPath:path]; } +(NSString *)get:(NSString *)key alter:(NSString *)alternate { return [bundle localizedStringForKey:key value:alternate table:nil]; } @end 

Language.h:

 import <Foundation/Foundation.h> @interface Language : NSObject +(void)setLanguage:(NSString *)l; +(NSString *)get:(NSString *)key alter:(NSString *)alternate; @end 

Cuando quieras cambiar el idioma:

 [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", @"de", nil] forKey:@"AppleLanguages"]; [[NSUserDefaults standardUserDefaults] synchronize]; [Language setLanguage:@"en"]; [(AppDelegate *)[[UIApplication shanetworkingApplication] delegate] window].rootViewController = [self.storyboard instantiateInitialViewController]; 

Cuando desee establecer una cadena:

 [self.someButton setTitle:[Language get:@"Some Button Text" alter:nil] forState:UIControlStateNormal];