在运行时切换本地化的Storyboard

9

我的iPhone应用程序使用故事板,包含两种语言(阿拉伯语/英语),我如何在运行时从阿拉伯语本地化的故事板切换到英语本地化的故事板,而不需要更改iPhone设置中的语言?


1
不要对你的故事板进行本地化,然后查询一组自定义的本地化字符串。老实说,除非编写自己的解决方案,否则更改语言是唯一经过系统认可的本地化方式。 - CodaFi
我不同意你的观点,我已经在xib中而不是storyboard中在运行时更改了应用程序语言。 - wod
那你尝试过什么了吗? - CodaFi
你不能这样做,而且没有什么好的理由想要这样做。只要坚持使用苹果认可的机制 - 这是用户期望应用程序表现的方式。 - Nick Dowell
这里中东有很多客户需要应用程序支持两种语言:阿拉伯语和英语,并且应用程序应该在运行时切换两种语言,而不必进入系统设置并将整个iPhone语言更改为阿拉伯语。这是非常合理的,我想知道为什么CodaFi不建议这样做,尽管这可能是项目要求! - JAHelia
显示剩余2条评论
1个回答

8
我已经解决了,你可以按照下面的代码来实现:
 UIStoryboard *storyBoard;
 if ([language isEqualToString:@"ar"]) {
   lan = [[NSLocale preferredLanguages] objectAtIndex:0];
   storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5Arabic" bundle:bnd];
 }
 else if([language isEqualToString:@"en"]) {
    NSLog(@"DDD ");
    lan = [[NSLocale preferredLanguages] objectAtIndex:20];
    storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5English" bundle:bnd];
 }
 NSBundle *bnd = [NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:lan ofType:@"lproj" ]];



UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];

你好!我对这个问题得到了相同的答案,但是当我在运行时更改语言并重新加载所需的故事板图像时,它们没有被加载,并显示以下日志消息:“无法从标识符为“(null)”的包中加载从nib引用的“readability.png”图像”。 - Alexander Zakatnov
2
哦,这是故事板本地化中的一个错误,因此您需要创建不使用本地化的不同故事板。 - wod
你好,我正在做一个项目,支持两种语言En和Arabic,在XIB中由Storyboard的两个XIB处理。我正在浏览并与上述解决方案连接,您能否详细说明并解释一下这将如何工作?@wod - satishiOS25

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接