NSLocalizedString返回无处定义的文本

时间:2012-01-24 15:43:24

标签: ios xcode nslocalizedstring

好吧,我正式大吃一惊。我不久前开始了一个IOS项目,并在开始的时候稍微调整了本地化,这变得有点乱,因为我还不知道如何正确地做到这一点。

现在我决定从头开始进行本地化,因此丢弃了所有的.strings文件,并创建了一个合适的多语言结构。我从空的Localizable.strings文件开始,然后运行应用程序以查看我是否正确清理了所有内容。使用空的Localizable.string文件,我假设我的“NSLocalizedString”调用只是将键作为文本返回。他们没有。他们仍然会返回旧的.strings文件中的旧文本。

为了确保,我在其中一个NSLocalizedString调用下放置了一个NSLog语句,如下所示:

NSString *text = NSLocalizedString( key, nil );
NSLog(@"key=%@ text=%@", key, text);

然后我在整个硬盘上搜索返回的文本。我的硬盘上没有文件包含NSLocalizedString返回的字符串。它是一个完全不同于键的字符串,因此它也不能由NSLocalizedString构造。

有谁知道这会怎么样?旧信息是否由XCode缓存在某处?如何说服该工具使用新的Localizable.strings文件?显然,我已经“清理”并重建了整个项目。

3 个答案:

答案 0 :(得分:4)

尝试从手机中删除该应用,然后清理您的项目并重新安装该应用。

如果它仍然无法正常工作,请检查您是否已经以某种方式搞砸了构建规则(Xcode 4 - >选择您的目标 - >标签"构建规则")在那里,检查你是否有太多的" CopyStringsFile"没有使用" CopyStringsFile"的规则。如果是这样,除了一个之外你可以删除它们。

答案 1 :(得分:0)

你还清理了构建文件夹吗?命令+选项+ shift + k或转到产品,按选项,会有一个干净的构建文件夹,通常,资源文件被缓存,XCode可能无法检测到任何资源文件替换(具有相同文件名但不同对象的文件)

此外,删除应用/重置模拟器确实有帮助。重新部署时,某些时候删除的文件不会被删除。

答案 2 :(得分:0)

如果您在模拟器上进行测试,请尝试使用“iOS模拟器”应用程序菜单中的“重置内容和设置...”选项重置模拟器。

当您重新部署应用程序的新版本时,即使在完全构建之后,它通常也不会清除以前构建的版本的缓存内容。