如何在iPad应用程序启动后更改本地化

时间:2010-08-24 11:16:09

标签: cocoa-touch xcode ipad localization internationalization

我目前正在开发一款iPad应用(iOS SDK v3.2)。该应用程序本地化为多种语言,即英语,德语,俄语......

我希望用户能够在应用程序启动后切换某些UI元素的本地化。实现这一目标的最佳方法是什么? NSLocalizedString总是选择系统首选项中定义的语言环境,这样做无济于事。

注意:本地化都是使用.strings文件完成的,我的项目中没有本地化的NIB。

为了使整个过程更加清晰,以下是一个例子: 当应用程序启动时,UI将以英语显示。用户可以从UITableView中选择不同的语言,并使用所选语言更新UI的部分内容。

我是否必须手动加载特定的Localizable.strings文件并一直解析它或者是否有更好的选择来获取相关的字符串?

感谢任何有用的建议。

非常感谢您提前和最好的问候。

2 个答案:

答案 0 :(得分:4)

我想我找到了自己问题的答案:

NSLocale *selectedLocale; // defined in the classes interface
NSString *language = [selectedLocale objectForKey:NSLocaleLanguageCode];
NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"];
NSBundle *bundle = [NSBundle bundleWithPath:path];

self.textView.text = NSLocalizedStringFromTableInBundle(@"Yadayada", @"Localizable", bundle, @"Yadayada comment");

答案 1 :(得分:0)

谢谢@XCoder,这确实很有效。

但是我在NSLocaleLanguageCode上有一个应用程序BAD_EXC。

我用这里提到的方法解决了它: iPhone Localization - Get the phone's language code?