Xcode 一个应用程序窗口未加载本地化字符串

Xcode 一个应用程序窗口未加载本地化字符串,xcode,macos,cocoa,internationalization,Xcode,Macos,Cocoa,Internationalization,我有一个OSX应用程序,它使用基本国际化特性(一个XIB+多个字符串文件)。我正在使用-AppleLanguages'(cs)命令行参数启动该应用程序,以测试捷克本地化。它可以工作,但有一个特定的窗口不加载本地化字符串,它以英语(基本开发语言)显示 该窗口是一个带有本地化字符串文件的普通XIB。我已经检查了构建的产品,字符串文件在那里。XIB的加载方式如下所示: [[NSWindowController alloc] initWithWindowNibName:@"NibName"] 当我在b

我有一个OSX应用程序,它使用基本国际化特性(一个XIB+多个字符串文件)。我正在使用
-AppleLanguages'(cs)
命令行参数启动该应用程序,以测试捷克本地化。它可以工作,但有一个特定的窗口不加载本地化字符串,它以英语(基本开发语言)显示

该窗口是一个带有本地化字符串文件的普通XIB。我已经检查了构建的产品,字符串文件在那里。XIB的加载方式如下所示:

[[NSWindowController alloc] initWithWindowNibName:@"NibName"]
当我在build scheme editor中打开Show non-localized strings debug开关时,控制台中会出现一系列警告:

Localizable string "B1p-qW-vKP.title" not found in strings table "NibName" of bundle CFBundle 0x100305400 </System/Library/Frameworks/AppKit.framework> (not loaded).
在捆绑包Cbundle 0x100305400(未加载)的字符串表“NibName”中找不到可本地化字符串“B1p qW vKP.title”。
我尝试了一个干净的构建,还删除了派生数据文件夹以重新开始。还尝试删除XIB并用一个简单的测试窗口替换它,该窗口只包含一个可本地化的字符串。没什么帮助。我可能做错了什么


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

Localizable string "90.title" not found in strings table "AppMenu" of bundle CFBundle 0x100202460 </long/path/to/My.app> (executable, loaded).
在捆绑包Cbundle 0x100202460(可执行,已加载)的字符串表“AppMenu”中找不到可本地化字符串“90.title”。

请注意,捆绑包是不同的。在假窗口的情况下,本地化系统似乎试图从错误的包中加载字符串(
AppKit.framework
)。为什么?我明白了。因为我不需要窗口中的自定义行为,所以我使用了一个带有自定义XIB接口的普通
NSWindowController
。但是在运行时,本地化系统从与这个类相关联的包中加载字符串:AppKit。我创建了一个空的
NSWindowController
子类,现在字符串已从我的应用程序包中正确加载。

这正是帮助我的原因。生成一个空的WindowController并用“initWithWindowNibName..”实例化。