好吧,我正式大吃一惊。前段时间我开始了一个 IOS 项目,刚开始时有点忙于本地化,这变得有点混乱,因为我还不知道如何正确地做到这一点。
现在我决定从头开始进行本地化,因此丢弃了所有 .strings 文件,并创建了一个适当的多语言结构。我从空的 Localizable.strings 文件开始,然后运行该应用程序以查看我是否正确清理了所有内容。对于空的 Localizable.string 文件,我假设我的“NSLocalizedString”调用只会将密钥作为文本返回。他们没有。他们仍然返回我在旧 .strings 文件中的旧文本。
可以肯定的是,我在其中一个 NSLocalizedString 调用下放置了一个 NSLog 语句,如下所示:
NSString *text = NSLocalizedString( key, nil );
NSLog(@"key=%@ text=%@", key, text);
然后我在整个硬盘中搜索返回的文本。我的硬盘上没有文件包含 NSLocalizedString 返回的字符串。而且它是和key完全不同的字符串,所以也不能用NSLocalizedString构造。
有谁知道这怎么会发生?旧信息是否被 XCode 缓存在某处?如何说服该工具使用新的 Localizable.strings 文件?显然,我已经“清理”并重建了整个项目。