我无法导出本地化,我只是得到“本地化无法读取字符串文件”错误。
系统日志说:
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”是什么文件。 这些步骤不起作用:
genstrings
以生成缺少的.strings文件。 genstrings
抱怨说我的字符串在NSLocalizedString
的调用中不是文字。呃......他们看起来都像这样:private let ALERT_REMINDER_FIRED_TITLE = NSLocalizedString("ALERT_REMINDER_FIRED_TITLE", tableName:"ReminderHandler", comment:"my comment")
我认为Localizable.strings
应该包含某些内容,例如/** no localizable strings **/
或其他内容。问题是我的项目甚至不包含文件,它被生成为完全空的。
答案 0 :(得分:3)
似乎未完成并注释掉NSLocalizedString
的来电会影响本地化的导出。
答案 1 :(得分:3)
对我而言,这就像key =&#34;你的字符串&#34 ;;这在swift 3中有效。 密钥没有引号。最后用分号。
答案 2 :(得分:1)
尝试使用指定了自己的NSLocalizedString
的{{1}}时遇到了同样的问题。如果您使用格式不同于NSBundle
的本地化宏,似乎Xcode不会起作用。我已经通过重新定义NSLocalizedString("Some key", comment: "Some comment")
函数来解决这个问题:
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
或您想要的任何内容。
答案 3 :(得分:1)
检查Localizable.strings文件中是否有冗余双引号,然后将其删除。
答案 4 :(得分:1)
我遇到的问题是我已经完全清空了xx.strings文件 - 我会手动清除它们。
在任何空的xx.strings文件的顶部添加此行,导出再次起作用:
/* No Localized Strings */
答案 5 :(得分:0)
有同样的问题。
在我的情况下,它是由NSLocalizedString
导致使用从服务器传递的变量作为键而不是实际字符串。系统仍会扫描已注释的代码,因此删除代码行的任何内容都将无效。