我的应用程序有几个不同的故事板,并使用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
文件。有人有这个成功吗?
答案 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种语言,它们都可以使用它。