initWithNibName:bundle:总是加载英文笔尖

时间:2011-04-05 20:42:07

标签: iphone objective-c cocoa-touch localization uiviewcontroller

我已将ContactView.xib文件本地化为英语和法语,通常必须自动加载。我使用UIViewController的initWithNibName: bundle:方法来初始化对象,但结果总是一样的:加载的文件是英文版!

我已经清理了项目,重新安装了应用程序等等,但没有任何效果,我的xib文件的法语版本被忽略了!

我知道有一个相关的帖子(here),但问题并不完全相同,尽管我付出了努力,但它仍然存在。

以下是我编写的代码示例:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil contact:(Contact *)aContact
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self != nil)
    {
        self.contact = aContact;
    }
    return self;
}

在适当的区域设置中加载文件还有什么其他事吗? 我已经检查了设备(或模拟器)上的首选项以及模块中加载的首选项,并且每次将语言环境设置为法语。

提前谢谢你,

弗鲁瓦。

2 个答案:

答案 0 :(得分:4)

我今天遇到了一个非常类似的问题,浪费了大约2个小时。

  

最后我删除了本地化的xib   通过本地化中的“ - ”   菜单。然后我不得不删除.XIB   文件在项目中

(在删除任何内容之前一定要在某处保存一份副本 - 你无法取回它!)。

  

然后我将.XIB文件拖回   该项目。最后它起作用了

所有我可以正确本地化并且有效。但是,让我告诉你,在应用程序没有准备就绪之前,我永远不会开始本地化。 xCode4中似乎存在严重的错误。 (它甚至在我身上撞了几次 - 我猜是因为它保留了一些在硬盘上无法找到的xib的链接。

此错误仅在所述过程后消失。即使从项目中删除.XIB文件并将其从HDD中删除仍然没有帮助。 XCode很高兴地开始使用这个.XIB(无论它从何处获得)。

祝你好运! (今天我浪费了太多时间!)

答案 1 :(得分:0)

作为参考,我想我找出了导致这个问题的原因:

您是否将法语版本本地化为“字符串”文件?如果是这样,试试这个:

  • 选择.xib(根条目,而不是本地化版本)

  • 在检查器中,检查:Interface Builder Document→文档编辑→构建

在我的情况下,它说“OS X 10.7及更高版本”,我遇到了同样的问题。我把它设置为“OS X 10.10”,经过另一次干净的构建后,一切正常。

我怀疑你的法语本地化没有被加载,因为.xib文件格式还没有与.strings本地化兼容(我不记得引入它的时候)。