找不到Foundation.framework中的可本地化字符串

时间:2014-10-21 12:35:44

标签: ios localization nsbundle

我在使用我的应用时收到此日志警告,并且不确定如何处理此消息:

2014-10-21 12:57:54.472 App[7067:2540152] Localizable string "(A Document Being Saved By %@)" not found in strings table "Document" of bundle CFBundle 0x12e508f60 </System/Library/Frameworks/Foundation.framework> (not loaded).

看来,框架内的本地化文件丢失了,这真的很奇怪。重新添加框架并没有帮助。

任何暗示都会被暗示。

6 个答案:

答案 0 :(得分:19)

我得到了同样的信息。就我而言,看起来TestFlight和Crashlytics都在生成它们;

[TestFlight takeOff:@"xxxxxxxxxxx"]; // Generates 2 messages 
[Crashlytics startWithAPIKey:@"xxxxxxxxxxx"]; // Generates 1 message

不会给我们带来任何麻烦,所以现在就让他们独自一人。

更新

好的,到底了。如果您一直在进行本地化,那么您可能已启用了“本地化调试”功能。在您的方案中(产品&gt;方案&gt; Xcode中的编辑方案)。如果您想知道为什么要从各个库中获取这些消息,可能是因为您仍然启用了这些消息。

Imgur

答案 1 :(得分:4)

我也遇到了这个问题。

由于关闭警告似乎是一个坏主意(感觉像高风险的翻译不会按预期工作),我追查到实际导致问题的原因。

就我而言,问题是Localizable.strings文件中的空字符串。 (我使用非标准方式生成它,默认的genstrings工具不会添加它们)

也就是说,在一个地方我有这条线:

/* No comment provided by engineer. */
"" = "";

如果我将其删除,警告就会消失! 似乎在字符串表实现中存在一些问题,如果你添加空字符串,这会使所有字符串表混乱,而不仅仅是问题所在的那个......

也许有人会发现这些信息有用,所以我把它留在这里。

答案 2 :(得分:1)

如果您没有指定&#34; Document&#34;然后它将在文件Localizable.strings中查找。否则,请确保项目中包含Document.strings文件。此外,&#34;(由%@保存的文件)&#34;对我来说看起来很奇怪。您可能想要检查这是否是您想要的可本地化字符串的键。

这是一个可以帮助您了解流程的链接

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/Strings/Strings.html

答案 3 :(得分:1)

根据我在最近的项目中发现的情况,如果您的设备中定义了英语(只有英语,没有区域),就会出现此错误。 由于一个或多个框架将无法找到翻译字符串,因此您将在控制台日志中出现此错误。 希望有所帮助

答案 4 :(得分:0)

另一个常见的错误是被遗忘的“;”在文件中任何一行的末尾,其中包含您的Localizable.strings。大规模复制和粘贴后,很容易发生这种情况。不幸的是,这不容易找到,因为编译器不会抱怨行号或任何其他有用的提示。当您具有大型可本地化的表时,这可能会非常痛苦且乏味。

该错误的结果是,找到了一些翻译,而没有找到,很难找到原因。

我的解决方案,以确保所有键均已正确定义(在行末使用“;”):

  1. 在Xcode中打开文件“ Localizable.strings”
  2. 删除表格的下半部分(开始)
  3. 按COMMAND + B(构建)

如果没有错误,则问题必须出在删除的下半部分。粘贴回去,现在只删除较低的25%并重复构建。重复该过程,直到您可以更好地定位问题为止。

答案 5 :(得分:0)

在StackOverflow各处寻找解决方案。

发现一个错误。

我只是复制了本地化,例如:

let str = "String".localized

此后:

str.localized

然后我要求

[字符串]错误:在表的可本地化包中找不到字符串 CFBundle 0x14bd01fc0