Ios 动态更改应用程序语言不适用于基本国际化
对于附带的小样本项目,我使用Ios 动态更改应用程序语言不适用于基本国际化,ios,objective-c,internationalization,Ios,Objective C,Internationalization,对于附带的小样本项目,我使用基本国际化功能将一个故事板用于两种语言(英语和阿拉伯语)。 在这个项目中,我在故事板中有一个ViewController,带有UILabel、UIImageView和UIButton,我想通过点击按钮来本地化这个ViewController,因此进行语言切换的方法(在AppDelegate)如下: 但是ViewController将不会生效,除非我重新启动应用程序,或者执行exit(0)关闭应用程序,然后重新启动它 问题是:如何在不退出并重新启动应用程序的情况下切换应
基本国际化
功能将一个故事板用于两种语言(英语和阿拉伯语)。在这个项目中,我在故事板中有一个
ViewController
,带有UILabel
、UIImageView
和UIButton
,我想通过点击按钮来本地化这个ViewController
,因此进行语言切换的方法(在AppDelegate
)如下:
但是ViewController
将不会生效,除非我重新启动应用程序,或者执行exit(0)
关闭应用程序,然后重新启动它
问题是:如何在不退出并重新启动应用程序的情况下切换应用程序的语言?
样本:
事先非常感谢你
p、 我已经阅读了几乎所有的相关问题,但没有一个能用基本情节提要来解决这个问题。请参考此
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];