即时更改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理。
为了回答你原来的问题,你可以把这段代码放到你的UIView
的viewWillAppear
函数中,以确保每次UI重新出现时都会重新加载它。