iPhone - 清理Localizable.strings

3

我有一个应用程序经历了重大手术,很多东西都被修改了。

这个应用程序曾经并且现在仍然本地化为几种语言。

我敢肯定,localizable.strings 文件中的一些字符串不再使用,至少有20%。有没有办法检查哪些字符串仍然被应用程序使用,这样我就可以把所有语言文件中不必要的字符串删除掉?

谢谢。

1个回答

2
您可以:
使用以下命令将新的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。更多详细信息请参见我的博客


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接