如何在不同的本地化故事板objective-c之间动态切换

时间:2014-08-20 06:49:46

标签: ios objective-c iphone xcode storyboard

我继承了一个项目,该项目已经使用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)"
显然,本地化的捆绑需要一段时间才能加载。结果发生了奇怪的事情(即它不能正确地获取图像而且事情变得混乱)。

问题:我该如何解决这个问题?有没有办法避免这种竞争条件,并等到捆绑实际上已加载,然后从中获取图像?在大多数教程(如我引用的教程)中,他们依赖于退出应用程序,然后更改手机语言设置。我不希望这种情况发生..我希望能够在应用程序内部切换语言。

0 个答案:

没有答案