【发布时间】:2011-05-21 07:50:34
【问题描述】:
当我从 xcode3 切换到 xode4 时,我发现,对于 App 中的几个字符串,我必须编译两次才能使其本地化... 有人遇到过同样的问题吗?
【问题讨论】:
当我从 xcode3 切换到 xode4 时,我发现,对于 App 中的几个字符串,我必须编译两次才能使其本地化... 有人遇到过同样的问题吗?
【问题讨论】:
我已经看到在“资源”构建阶段两次引用字符串文件时会发生这种情况。发生这种情况时,Xcode 不会警告您,并且可能会导致奇怪或未定义的行为。查看所有构建阶段并确保文件仅在一个位置。
【讨论】:
如果你有像我这样的情况,你有两个 Localizable.strings 文件(因为你正在使用一些额外的框架(如 ShareKit),它们本身使用 Localizable.strings 文件),那么你也可以这样做以下:
将附加的Localizable.strings 文件重命名为某事。像RenamedFile.strings 这样最后就有
搜索并替换所有匹配项
NSLocalizedString(key, description);
与 RenamedFile.strings 相关,NSLocalizedStringFromTable(key, @"RenamedFile", description);
示例:
假设你有
(A) 您自己的 Localizable.strings 文件
(B) 和 Localizable.strings 文件会导致您使用 ShareKit,它也有自己的本地化。
将 ShareKit 的 Localizable.strings 重命名为 ShareKit.strings
(使用 Git 和 Xcode 4 我在重命名文件时遇到了一些问题,但可以解决)。
在 ShareKit 文件夹中查找所有出现的 NSLocalizedString(应该是 3 个)并替换它们:
NSLocalizedString(key, key);NSLocalizedStringFromTable(key, @"ShareKit", key);
NSLocalizedString(@"Disconnect from Facebook", @"Accessibility label");NSLocalizedStringFromTable(@"Disconnect from Facebook", @"ShareKit", @"Accessibility label");
NSLocalizedString(@"Connect to Facebook", @"Accessibility label");NSLocalizedStringFromTable(@"Connect to Facebook", @"ShareKit", @"Accessibility label");
【讨论】: