一个应用程序 window 未加载本地化字符串

One application window not loading localized strings

我有一个 OS X 应用程序,它使用基本国际化功能(一个 XIB + 许多字符串文件)。我正在使用 -AppleLanguages '(cs)' 命令行参数启动应用程序以测试捷克语本地化。它有效,但有一个特殊的 window 不加载本地化字符串,它以英语(基本开发语言)显示。

window 是带有本地化字符串文件的普通 XIB。我检查了构建的产品,字符串文件在那里。 XIB 的加载方式很简单:

[[NSWindowController alloc] initWithWindowNibName:@"NibName"]

当我在构建方案编辑器中打开 显示非本地化字符串 调试开关时,我在控制台中收到了一堆这样的警告:

Localizable string "B1p-qW-vKP.title" not found in strings table "NibName" of bundle CFBundle 0x100305400 </System/Library/Frameworks/AppKit.framework> (not loaded).

我尝试了一个干净的构建并删除了 Derived Data 文件夹以重新开始。还尝试删除 XIB 并将其替换为仅包含一个可本地化字符串的简单测试 window。没有任何帮助。我可能做错了什么?


更新:当我从一个工作字符串文件中删除本地化字符串时,运行时的错误消息有点不同:

Localizable string "90.title" not found in strings table "AppMenu" of bundle CFBundle 0x100202460 </long/path/to/My.app> (executable, loaded).

请注意,捆绑包不同。看起来在虚假 window 的情况下,本地化系统正试图从错误的包 (AppKit.framework) 加载字符串。为什么?

我明白了。由于我不需要 window 中的自定义行为,我使用的是带有自定义 XIB 界面的普通 NSWindowController。但是在运行时,本地化系统正在从与此 class 关联的包中加载字符串:AppKit。我创建了一个空的 NSWindowController subclass,现在字符串已从我的应用程序包中正确加载。