我有一个应用程序经历了一次大手术,很多内容都被修改了。
此应用程序过去和现在都已本地化为多种语言。
我确信 localized.strings 文件中的某些字符串不再被使用。其中至少有20%。有没有办法检查应用程序仍在使用哪些字符串,以便我可以从所有语言文件中删除不必要的字符串?
谢谢。
最佳答案
你可以:
使用
将新的 localized.strings 转储到临时目录 genstrings -o temporary.directory *.m
然后从 localized.strings 文件中删除等号的右侧以使比较更容易:
cat temporary.directory/Localizable.strings | awk -F"\=" '{print $1}' > Localizable_new.strings
对“旧”Localized.strings 执行相同的操作(假设您有英文版本):
cat en.lproj/Localizable.strings | awk -F"\=" '{print $1}' > Localizable_old.strings
然后使用 /Developer/Applications/Utilities/FileMerge
将 Localized_old.strings 与 Localizes_new.strings 进行比较。
根据20%的数量,您可能会“快速”删除过时的行。
我承认这个过程可能很乏味,并且有很大的改进空间,例如它无法正确处理注释中的等号,但也许它有帮助。
编辑:
我从来没有真正对上面的内容感到满意。寻找更易于维护的解决方案,我最终停止使用 NSLocalizedString 并重构代码以使用 NSLocalizedStringWithDefaultValue(<#key#>, <#tbl#>, <#bundle#>, <#val#>, <#comment#>)
现在我对源代码中的本地化进行了所有更改,然后运行 genstrings。 genstrings 将覆盖 Localized.strings,但“<#val#>”字段将包含我想要在 Localized.strings 内的字符串。我不需要编辑原始语言的 Localized.strings 。更多详情见my Blog
关于iphone - 清理 Localized.strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4442142/