您可以:
使用以下命令将新的localizable.strings转储到临时目录中:
genstrings -o temporary.directory *.m
然后从localizable.strings文件中删除等号右侧以使比较更容易:
cat temporary.directory/Localizable.strings | awk -F"\=" '{print $1}' > Localizable_new.strings
对于“旧”的Localizable.strings(假设您有英文版本),也要执行相同的操作:
cat en.lproj/Localizable.strings | awk -F"\=" '{print $1}' > Localizable_old.strings
然后使用/Developer/Applications/Utilities/FileMerge比较Localizable_old.strings和Localizable_new.strings。
根据20%的数量,您可能可以“快速”删除过时的行。
我承认这个过程可能很繁琐,并且有很大的改进空间,例如无法正确处理注释中的等号,但是也许它能有所帮助。
我对上述情况从未真正感到满意。为了寻找一种更容易维护的解决方案,我最终停止使用NSLocalizedString并重构代码以使用
NSLocalizedStringWithDefaultValue(<#key#>, <#tbl#>, <#bundle#>, <#val#>, <#comment#>)
现在我在源代码中进行所有本地化更改,然后运行genstrings。 genstrings将覆盖Localizable.strings,但“<#val#>”字段将包含我想要的字符串内部Localizable.strings。我不需要编辑原始语言的Localizable.strings。更多详细信息请参见我的博客。