Xcode 6本地化无法读取一个string文件

Xcode无法生成xliff本地化文件,错误本地化无法读取string文件。 请检查系统日志了解更多详情 。 有谁知道我在哪里可以find这些日志? 这是Xcode 6.3.2 GM,但我也尝试过6.3.1版本。 用6.3.1。 错误是在特定的文件,但在该文件里并不是什么不寻常的事情。 此外,我试图删除该文件,但我得到同样的错误,虽然该文件不存在了。 有没有人知道为什么?

有谁知道我在哪里可以find这些日志?

打开Console应用 并在system.logsearch“string”为例。

有没有人知道为什么?

有几个问题,导致这个错误:

  1. 清空Localizable.strings文件。

解决scheme:只需添加评论

  /** no localizable strings **/ 

到这个文件,问题就没有了。

  1. 转义符号中的第二个问题: \

解决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()或你想要什么。