即时更改iOS应用程序的语言

时间:2011-05-27 09:54:12

标签: iphone objective-c ios localization xcode4

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

2 个答案:

答案 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}}函数中,以确保每次重新显示用户界面时重新加载此代码。