4

好吧,我正式大吃一惊。前段时间我开始了一个 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 文件?显然,我已经“清理”并重建了整个项目。

4

3 回答 3

4

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

如果它仍然不起作用,请检查您是否以某种方式弄乱了构建规则(Xcode 4 -> 选择您的目标 -> 选项卡“构建规则”)在那里,检查您是否没有太多的“CopyStringsFile”不使用“CopyStringsFile”的规则。如果是这样,您可以将它们全部删除,但只有一个。

于 2012-01-24T15:49:35.580 回答
0

您是否还清理了构建文件夹?command + option + shift + k 或转到产品,按option,将有一个干净的构建文件夹,通常,资源文件被缓存,XCode可能无法检测到任何资源文件替换(文件名相同但对象不同的文件)

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

于 2012-01-24T15:48:27.873 回答
0

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

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

于 2012-01-24T15:57:42.210 回答