动态更改应用程序语言不适用于Base Internationalization

时间:2014-05-27 12:08:36

标签: ios objective-c internationalization

对于附加的小样本项目,我使用Base Internationalization功能将一个故事板用于两种语言(英语和阿拉伯语)。
在项目中,我在故事板中有一个ViewController,其中包含UILabelUIImageViewUIButton,我想通过按钮点按此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。我已经阅读了几乎所有相关的问题,但没有一个用基础故事板解决这个问题。

0 个答案:

没有答案