动态更改iOS应用的语言
问题描述:
我正在编写iOS应用,希望用户能够独立于iPhone或iPad的语言更改UI语言。问题是,如何在语言更改时为当前显示的视图重新加载适当的NIB文件,以及如何加载相应的.strings文件以便NSLocalizedString
正常工作?动态更改iOS应用的语言
答
这应该是诀窍,假设de
是用户选择的新语言。还保证你重新启动当前视图。
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil]
forKey:@"AppleLanguages"];
答
个人而言,我不喜欢将NIB文件提供给译员的想法。相反,我设计了NIB,因此有足够的空间存放非英语语言(通常它们需要50%的文本空间),然后将所有文本资源存储在Localizable.strings文件中。
然后,在我的代码中,我为每个UI控件设置文本。
[_myButton setTitle:NSLocalizedString(@"My button title",
@"My description for translation file, e.g. including chars limit")
forState:UIControlStateNormal];
我觉得这使翻译过程更容易管理。
要回答您的原始问题,您需要将该代码放入UIView
的viewWillAppear
函数中,以确保每次UI重新出现时都会重新加载该代码。
你知道人们可以在设置应用程序中更改语言,并且你的应用程序应该不**具有单独的选项,对吗? – 2011-05-31 19:57:26
如果您希望某种语言成为备用语言,那么您可能需要一个单独的选项,该语言与用户语言列表中第一个现有本地化语言不同。这是一种非常普遍的模式。 – brainray 2014-06-28 06:11:26