对于附加的小样本项目,我使用Base Internationalization
功能将一个故事板用于两种语言(英语和阿拉伯语)。
在项目中,我在故事板中有一个ViewController
,其中包含UILabel
,UIImageView
和UIButton
,我想通过按钮点按此ViewController
进行本地化,所以进行语言切换的方法(在AppDelegate
中)是这样的:
NSArray* languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
NSString *currentLang = [languages objectAtIndex:0];
if([currentLang isEqualToString:@"en"]) { //change to arabic
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"ar"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
else { //change to english
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = storyboard.instantiateInitialViewController;
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
但ViewController
除非重新启动应用,或exit(0)
杀死该应用,然后重新启动它,否则不会生效。
问题是:如何在不退出应用程序语言的情况下重新启动应用程序的语言?
示例:https://dl.dropboxusercontent.com/u/57066689/TestAutoLayout3.zip
提前非常感谢你。
P.S。我已经阅读了几乎所有相关的问题,但没有一个用基础故事板解决这个问题。