Android本地化变量中的简单拼写错误(例如%1d
而不是%1$d
在strings.xml
中)可能会导致crash。检查Android strings.xml变量的工具?
我们无法进行彻底的测试(很多屏幕,一些很少显示,几十种语言,频繁发布,没有收入),所以我们必须找到一个更智能的方法。这些错误在Eclipse中没有显示,实际上我正在寻找一个非可视化工具,以便它可以被我们的自动发布工具调用。
我写了下面的脚本来检查本地化文件:
#! /bin/sh
# Spot malformed string replacement patterns in Android localization files.
grep -R "%1$ s" values*
grep -R "%1$ d" values*
grep -R '%' values* |
sed -e 's/%/\n%/g' | # Split lines that contain several expressions
grep '%' | # Filter out lines that do not contain expressions
grep -v ' % ' | # Lone % character, not a variable
grep -v '%<' | # Same, at the end of the string
grep -v '% ' | # Same, at the beginning of the string
grep -v '%で' | # Same, no spaces in Japanese
grep -v '%s' | # Single string variable
grep -v '%d' | # Single decimal variable
grep -v '%[0-9][0-9]\?$s' | # Multiple string variable
grep -v '%[0-9][0-9]\?$d' | # Multiple decimal variable
grep -v '%1$.1f' | # ?
grep -v '%.1f'
grep -R '%' values*
的问题:它fails赶在阿拉伯语本地化文件的问题。
问题:不是重新发明轮子,有没有这种验证工具? (不是Eclipse)
如果不是:我忘了什么检查?
我没有意识到这个问题,但它听起来像是应该由ADT中的Lint工具修复的东西。也许你应该问[Tor Norbye](https://plus.google.com/u/0/116539451797396019960/posts)。 – 2012-03-05 10:10:38
@DavidCaunt:谢谢!我向林特提交了一个增强请求:http://code.google.com/p/android/issues/detail?id=26434 – 2012-03-05 11:31:19
@DavidCaunt:看起来像ADT 17将是解决方案,当发布时:-)能否请您让你的评论成为答案,以便我可以接受它? – 2012-03-09 09:37:23