Основываясь на публикации пользователя "object2.0", я собрал пример кода, который вы можете использовать в своем приложении для изменения языка интерфейса на лету.
Основной класс локализации, выполняющий тяжелую работу:
-(NSString *) localized:(NSString *) key
{
GameInfo *gameInfo = [GameInfo sharedInstance];
// langCode should be set as a global variable somewhere
NSString *path = [[NSBundle mainBundle] pathForResource:langCode ofType:@"lproj"];
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
return [languageBundle localizedStringForKey:key value:@"" table:nil];
}
Предполагая, что у вас есть эта функция в глобальном классе, называемом utils, вызовите эту функцию со следующим кодом (например, чтобы вывести слово «Настройки».
NSLog( [utils localized:@"Settings"] );
Чтобы изменить язык:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:langCode, nil] forKey:@"AppleLanguages"];