多个故事板未加载本地化

时间:2014-10-01 16:37:00

标签: ios objective-c xcode localization uistoryboard

我的应用程序有几个不同的故事板,并使用Base Internationalization进行本地化到法语。具有.strings文件的Main.storyboard翻译加载法语就好了。但是,当我实例化一个新的故事板并呈现它时,它仍然是英文的。我之前只是这样做来加载故事板:

UIStoryboard *upcomingStoryboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
/// Code to present initial view controller.

这只是加载英文故事板。然后我尝试按照说明from this site,将我的代码更改为:

NSString *language   = @"Base";
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *preferred  = [[mainBundle preferredLocalizations] objectAtIndex:0];
if ([[mainBundle localizations] containsObject:preferred]) {
    language = preferred;
}
NSBundle *bundle = [NSBundle bundleWithPath:[mainBundle pathForResource:language
                                                                 ofType:@"lproj"]];
UIStoryboard *upcomingStoryboard = [UIStoryboard storyboardWithName:storyboardName bundle:bundle];

所有这些都导致应用程序在加载故事板时崩溃,这可能是因为fr.lproj中没有实际的故事板文件,只有.strings文件。有人有这个成功吗?

1 个答案:

答案 0 :(得分:1)

我在我的本地化应用中使用了多个故事板。它们都没有被设置为"主界面"文件。它们都是根据用户在应用程序中的位置加载代码。

基本上我有一个登录故事板,引导用户登录并使用" app"应用内容的故事板。

该项目使用基础国际化(以英语作为开发语言)和所有翻译的字符串文件(笔尖,故事板和代码)。

它们是通过这样的方法加载的......

- (void)showStoryboardWithName:(NSString *)storyboardName transition:(UIViewAnimationOptions)transition
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:[NSBundle mainBundle]];
    UIViewController *controller = [storyboard instantiateInitialViewController];
    [self showViewController:controller withTransition:transition];
}

我在应用程序中本地化了15种语言,它们都可以使用它。