找出Localizable.strings出错的具体行数

最近在给公司的App增加简体中文的支持,这在iOS里会新建一个Localizable.strings文件(其实Android更简单),然后再把需要本地化的字符串都写在这里就好了。

公司的项目比较大,有几千个字符串需要翻译,吭哧吭哧搞了两天,总算搞完了,然后一build,结果报错了,而且是个莫名其妙的的错误信息:

/XXXX/zh-Hans.lproj/Localizable.strings:0: error: read failed: The data couldnt be read because it isnt in the correct format.

虽然一看错误就知道是格式错误,但没有指明错误的具体行数,这几千行里一个一个找谈何容易!

其实上面的问题可以通过plutil -lint命令行工具解决,如下:

$plutil -lint  /XXXX/zh-Hans.lproj/Localizable.strings

2017-08-08 18:50:24.753 plutil[31541:12440037] CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary on line 606. Parsing will be abandoned. Break on _CFPropertyListMissingSemicolon to debug.
/XXXX/zh-Hans.lproj/Localizable.strings: Unexpected character / at line 1

可以从上面清晰地看到出错行号是606,原来是把英文的分号写成了中文分号😂