Android本地化变量中的简单拼写错误(例如%1d
而不是%1$d
中的strings.xml
)可能导致crash。
我们无法进行彻底的测试(许多屏幕,一些很少显示,几十种语言,非常频繁的发布,没有收入)所以我们必须找到一种更聪明的方式。这些错误没有在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)
如果不是:我忘记了什么检查?
答案 0 :(得分:1)
这听起来应该被纳入ADT中的Lint工具。