我正在编写一个iOS应用程序,我希望用户能够独立于iPhone或iPad的语言更改UI语言。问题是,当语言发生变化时,如何为当前显示的视图重新加载适当的NIB文件?如何加载相应的.strings文件以使NSLocalizedString
正常工作?
答案 0 :(得分:27)
假设de
是用户选择的新语言,这应该可以解决问题。还要确保您重新启动当前视图。
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil]
forKey:@"AppleLanguages"];
答案 1 :(得分:4)
就个人而言,我不喜欢向翻译人员提供NIB文件的想法。相反,我设计了NIB,因此有足够的空间用于非英语语言(通常它们需要50%的空间用于文本),然后我将所有文本资源存储在Localizable.strings文件中。
然后,在我的代码中,我为每个UI控件设置了文本。
[_myButton setTitle:NSLocalizedString(@"My button title",
@"My description for translation file, e.g. including chars limit")
forState:UIControlStateNormal];
我发现这使翻译过程更容易管理。
要回答原始问题,您可以将此代码放在viewWillAppear
的{{1}}函数中,以确保每次重新显示用户界面时重新加载此代码。