Xcode 6本地化无法读取一个string文件
Xcode无法生成xliff本地化文件,错误本地化无法读取string文件。 请检查系统日志了解更多详情 。 有谁知道我在哪里可以find这些日志? 这是Xcode 6.3.2 GM,但我也尝试过6.3.1版本。 用6.3.1。 错误是在特定的文件,但在该文件里并不是什么不寻常的事情。 此外,我试图删除该文件,但我得到同样的错误,虽然该文件不存在了。 有没有人知道为什么?
有谁知道我在哪里可以find这些日志?
打开Console
应用 并在system.log
search“string”为例。
有没有人知道为什么?
有几个问题,导致这个错误:
- 清空
Localizable.strings
文件。
解决scheme:只需添加评论
/** no localizable strings **/
到这个文件,问题就没有了。
- 转义符号中的第二个问题:
\
解决scheme:删除它,找出你的特殊字符的东西。 而且你的导出过程可能会完成而没有错误。
PS
- 至less对于
Version 6.4 (6E35b)
- 相关的openradar bug报告
那么最后,我已经通过从代码中删除所有NSLocalizedStringmacros来解决这个问题,因为xliff导出器会查找代码,并根据结果查找string文件。 奇怪的是,他也扫描评论,所以简单地评论不需要的NSLocalizedStringmacros将无济于事。
我有一个类似的问题。 检查系统日志中的条目“Xcode:[MT] DVTAssertions”。 (Applciations->实用程序 – > Console.app)
例如:
5/13/16 3:08:24.675 PM Xcode[15546]: [MT] DVTAssertions: Warning in /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-10188.1/IDEFoundation/Localization/IDELocalizationWork.m:355
详细信息:无法读取string文件“控制器/ FindMyPhone / fr.lproj / TILMarkPhoneLostMessageViewController.strings”,基本错误:
评论parsing器输出:
{ "OGQ-Dm-sLB.text" = "Au secours, je suis perdu**U00A0**! Veuillez appeler mon propri\U00e9taire."; "reH-FM-KQF.text" = "Envoyez un message \U00e0 la personne qui trouve votre t\U00e9l\U00e9phoneU00A0; celui-ci s\U2019affiche sur l\U2019\U00e9cran de verrouillage, accompagn\U00e9 de votre num\U00e9ro de t\U00e9l\U00e9phone. "; }
不匹配:
{ "OGQ-Dm-sLB.text" = "Au secours, je suis perdu\U00a0! Veuillez appeler mon propri\U00e9taire."; "reH-FM-KQF.text" = "Envoyez un message \U00e0 la personne qui trouve votre t\U00e9l\U00e9phone\U00a0; celui-ci s\U2019affiche sur l\U2019\U00e9cran de verrouillage, accompagn\U00e9 de votre num\U00e9ro de t\U00e9l\U00e9phone. "; }
对象:方法:-work Thread:{number = 1,name = main}
请在http://bugreport.apple.com上提供一个错误,并提供此警告消息和任何有用的信息。
正如你在我的案例中看到的,这个问题与'NO-BREAK SPACE'(U + 00A0)unicode字符有关。 当导出为本地化时,xcode期待的代码是\\U00A0
,但在我的string文件是\U00A0
(否则应用程序显示的字符,而不是一个空间…)。 听起来像xcode中的一个错误给我。 如果你想要一个快速而肮脏的解决scheme,我会说在\U00A0
所有项目中search,并replace为\\U00A0
只为导出(一旦你得到xliff撤消这些更改再次)。
系统日志:
当试图使用NSLocalizedString
与自己的NSBundle
指定时,我有同样的问题。 我已经通过重新定义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) }
replaceyourBundleHere
NSBundle.mainBundle()
或你想要什么。