本地化无法读取字符串文件 (Xcode 6.3.2)

Localization failed to read a strings file (Xcode 6.3.2)

我无法导出本地化,我只是收到 "Localization failed to read a strings file" 错误。

系统日志显示:

2015-06-07 01:41:48,305 Xcode[1914]: [MT] DVTAssertions: Warning in /SourceCache/IDEFrameworks/IDEFrameworks-7718/IDEFoundation/Localization/IDELocalizationWork.m:434
Details:  Failed to read strings file "/var/folders/vh/z7jrdtc16mv_ml4rdf3c_yf40000gn/T/Xcode3SourceStringsAdaptor-8B1BF14F-E8BF-4354-9FB6-BFF843BD6623/Localizable.strings", underlying error:
The data couldn’t be read because it isn’t in the correct format.
Object:   <IDELocalizationWork>
Method:   +readStringsWorkForContext:
Thread:   <NSThread: 0x7fa8a250a200>{number = 1, name = main}
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide.

但我不知道 "Localizable.strings" 是什么文件。 这些步骤无效:

我认为 Localizable.strings 应该包含一些东西,比如 /** no localizable strings **/ 之类的。问题是我的项目甚至不包含该文件,它生成时完全是空的。

似乎对 NSLocalizedString 的未完成和注释掉的调用干扰了本地化的导出。

我在尝试使用 NSLocalizedString 并指定自己的 NSBundle 时遇到了同样的问题。如果您使用与 NSLocalizedString("Some key", comment: "Some comment") 不同形式的本地化宏,似乎 Xcode 将不起作用。我通过重新定义 NSLocalizedString 函数来解决这个问题:

public func NSLocalizedString(key: String, tableName: String? = nil, bundle: NSBundle = NSBundle.mainBundle(), value: String = "", comment: String) -> String
{
    return yourBundleHere.localizedStringForKey(key, value: value, table: tableName)
}

yourBundleHere 替换为 NSBundle.mainBundle() 或您想要的任何内容。

有同样的问题。 在我的例子中,它是由 NSLocalizedString 引起的, 使用从服务器 传递的变量 作为键而不是实际的字符串 。系统仍会扫描注释代码,因此除了 删除代码行 之外的任何操作都将无效。

检查您的 Localizable.strings 文件中是否有多余的双引号,然后将其删除。

我的问题是我有完全空的 xx.strings 个文件 - 我手动清除了它们。

将此行添加到任何空 xx.strings 文件的顶部,然后再次导出:

/* No Localized Strings */

对我来说就像是钥匙= "your string";在 swift 3 中有效。 键没有引号。分号在末尾。