【问题标题】:Localizable.strings compiled twice?Localizable.strings 编译两次?
【发布时间】:2011-05-21 07:50:34
【问题描述】:

当我从 xcode3 切换到 xode4 时,我发现,对于 App 中的几个字符串,我必须编译两次才能使其本地化... 有人遇到过同样的问题吗?

【问题讨论】:

    标签: iphone cocoa ios xcode4


    【解决方案1】:

    我已经看到在“资源”构建阶段两次引用字符串文件时会发生这种情况。发生这种情况时,Xcode 不会警告您,并且可能会导致奇怪或未定义的行为。查看所有构建阶段并确保文件仅在一个位置。

    【讨论】:

    • 我的 localizable.strings 文件只被引用了一次,但是我的项目中来自 sharekit 框架的另一个 localizable.strings 文件也有一个 localizable.strings 文件。无法删除它们
    • 您可以尝试将其中一个 Localizable.strings 文件重命名为其他文件。
    【解决方案2】:

    如果你有像我这样的情况,你有两个 Localizable.strings 文件(因为你正在使用一些额外的框架(如 ShareKit),它们本身使用 Localizable.strings 文件),那么你也可以这样做以下:

    1. 将附加的Localizable.strings 文件重命名为某事。像RenamedFile.strings 这样最后就有

    2. 搜索并替换所有匹配项 NSLocalizedString(key, description);
      与 RenamedFile.strings 相关,
      NSLocalizedStringFromTable(key, @"RenamedFile", description);

    示例:
    假设你有
    (A) 您自己的 Localizable.strings 文件
    (B) 和 Localizable.strings 文件会导致您使用 ShareKit,它也有自己的本地化。

    1. 将 ShareKit 的 Localizable.strings 重命名为 ShareKit.strings
      (使用 Git 和 Xcode 4 我在重命名文件时遇到了一些问题,但可以解决)。

    2. 在 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");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 2011-09-16
      相关资源
      最近更新 更多