我继承了一个项目,该项目已经使用this方法在字符串翻译时动态地从一个本地化切换到另一个本地化。
要点是直接的...基于用户选择的语言..识别本地化的字符串文件(即/path/to/app/Resources/Storyboard/en.lproj
),然后使用类似
NSLocalizedStringFromTableInBundle(text, @"", [LanguageGateway currentLocalizedBundle], nil)
本地化字符串。到现在为止还挺好。
当我尝试用故事板做同样的事情时,会出现问题。我已经创建了两个本地化版本的故事板(从this教程中获取灵感...但主要区别在于我无法选择use base internationalization
选项b / c我根本无法选择基本文件)然后在我的localize方法的某个地方我有这个:
- (void)launchLocalized {
NSLog(@"switching to bundle %@", [LanguageGateway currentLocalizedBundle]);
storyBoard_ = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[LanguageGateway currentBundle]];
在我的日志中我得到了这个:
switching to bundle NSBundle </path/to/App.app/en.lproj> (not yet loaded)
Could not load the "aboutUsMenuButton.png" image referenced from a nib in the bundle with identifier "(null)"
Could not load the "feedbackMenuButton_ar.png" image referenced from a nib in the bundle with identifier "(null)"
显然,本地化的捆绑需要一段时间才能加载。结果发生了奇怪的事情(即它不能正确地获取图像而且事情变得混乱)。
问题:我该如何解决这个问题?有没有办法避免这种竞争条件,并等到捆绑实际上已加载,然后从中获取图像?在大多数教程(如我引用的教程)中,他们依赖于退出应用程序,然后更改手机语言设置。我不希望这种情况发生..我希望能够在应用程序内部切换语言。