我有一个应用程序,经历了一次大手术,很多东西都被修改了。
此应用程序过去和现在都已本地化为多种语言。
我确信localizable.strings文件中的一些字符串不再被使用。他们中至少有20%。有没有办法检查哪些字符串仍在被应用程序使用,这样我就可以从所有语言文件中去掉不必要的字符串?
谢谢。
发布于 2010-12-16 00:35:22
您可以:
使用以下命令将新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#>)
现在,我对源代码中的本地化进行了所有更改,然后运行genstring。genstrings将覆盖Localizable.strings,但是'<#val#>‘字段将包含我想要在Localizable.strings中使用的字符串。我不需要为原始语言编辑Localizable.strings。有关更多细节,请访问my Blog
https://stackoverflow.com/questions/4442142
复制相似问题