我有一个应用程序遭受了大手术,很多东西都被修改了。
此应用程序已经本地化为多种语言。
我确信不再使用localizable.strings文件中的某些字符串。至少20%的人。有没有办法检查应用程序仍在使用哪些字符串,这样我就可以摆脱所有语言文件中不必要的字符串?
感谢。
答案 0 :(得分:2)
你可以:
使用
将新的localizable.strings转储到临时目录 genstrings -o temporary.directory *.m
然后从localizable.strings文件中删除等号的右侧以使比较更容易:
cat temporary.directory/Localizable.strings | awk -F"\=" '{print $1}' > Localizable_new.strings
对“old”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,但'&lt; #vals&gt;' filed将包含Localizable.strings中我想要的字符串。我不需要为原始语言编辑Localizable.strings。更多详情请见my Blog