即时更改iOS应用的语言

我正在编写一个iOS应用程序,我希望用户能够独立于iPhone或iPad的语言来更改UI语言。 问题是,如何在语言改变时为当前显示的视图重新加载相应的NIB文件,以及如何加载合适的.strings文件,以便NSLocalizedString正常工作?

这应该做的伎俩,假设de是用户select的新语言。 还保证你重新启动当前的观点。

 [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil] forKey:@"AppleLanguages"]; 

就个人而言,我不喜欢给翻译人员提供NIB文件的想法。 相反,我devise了NIB,所以有足够的空间用于非英语语言(通常它们将需要50%的文本空间),然后将所有文本资源存储在Localizable.strings文件中。

然后,在我的代码中,我设置了每个UI控件的文本。

 [_myButton setTitle:NSLocalizedString(@"My button title", @"My description for translation file, eg including chars limit") forState:UIControlStateNormal]; 

我发现这使翻译过程更容易pipe理。

为了回答你原来的问题,你可以把这段代码放到你的UIViewviewWillAppear函数中,以确保每次UI重新出现时都会重新加载它。