2012-03-05 45 views
1

Android本地化变量中的简单拼写错误(例如%1d而不是%1$dstrings.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)
如果不是:我忘了什么检查?

注:this script is open source

+0

我没有意识到这个问题,但它听起来像是应该由ADT中的Lint工具修复的东西。也许你应该问[Tor Norbye](https://plus.google.com/u/0/116539451797396019960/posts)。 – 2012-03-05 10:10:38

+0

@DavidCaunt:谢谢!我向林特提交了一个增强请求:http://code.google.com/p/android/issues/detail?id=26434 – 2012-03-05 11:31:19

+0

@DavidCaunt:看起来像ADT 17将是解决方案,当发布时:-)能否请您让你的评论成为答案,以便我可以接受它? – 2012-03-09 09:37:23

回答

1

这听起来像的东西,应该纳入在ADT皮棉工具。

+1

将在未来的ADT 17中:http://code.google.com/p/android/issues/detail?id=26434 – 2012-03-10 06:11:55

+0

ADT 18和19中可用,用法:'lint --check StringFormatInvalid .' – 2013-12-27 08:15:20