Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译

 #!/usr/bin/env python
# encoding: utf-8 import os, sys, getopt
import xml.dom.minidom
import subprocess
from xml.dom.minidom import Node # 判断是否是App项目依据
Axml='AndroidManifest.xml' res_en_string="res/values/strings.xml"
res_cn_string="res/values-zh-rCN/strings.xml" # 检查资源文件列表
res_string_files=[res_en_string, res_cn_string] # Java调用字符串资源列表
find_string_called_by_java='''find . -name .repo -prune -o -name .git -prune -o -type f -name "*\.java" -print0 | xargs -0 grep --color -n -o 'R.string[0-9A-Za-z_.-]\+'|awk -F':' '{print $3}'|sort|uniq|xargs echo''' def _check_string_res(path):
"""检查字符串资源调用情况 :path: TODO
:returns: TODO """
os.chdir(path)
if not os.path.exists(Axml):
return # 输出提示
print "\n### Processing Project: %s ..\n" % path # 获得字符串资源调用情况
find_string_called_by_java_array = subprocess.Popen(find_string_called_by_java, shell=True, stdout=subprocess.PIPE).stdout.read().split(' ') # 逐个检查资源文件(目前检查中文、英文)
for res_string_file in res_string_files:
print ">>> Checking %s file .." % res_string_file # 解析xml文件,并保存已有资源到 names_had
doc = xml.dom.minidom.parse(res_string_file)
strings = doc.getElementsByTagName('string')
names_had = []
for string in strings:
name = string.getAttribute('name')
names_had.append(name) # 逐个检查被调用的字符串资源,不存在此资源时报Warning
for check in find_string_called_by_java_array:
c=check[9:].strip()
if c not in names_had:
print " - Warning: string name '%s' not found!!!" % c def usage(exitval=0):
print "\nUsage: %s project_dir1 project_dir2 ..\n" % sys.argv[0] if __name__ == '__main__':
if len(sys.argv) == 1:
if os.path.isfile(Axml):
_check_string_res(os.path.abspath('.'))
else:
usage()
elif len(sys.argv) > 1:
for path in sys.argv[1:]:
if os.path.isdir(path):
_check_string_res(os.path.abspath(path))
else:
print "### %s Not a directory, ignored." % path
else:
usage()

使用方法:

  ./check_string_res.py packages/apps/Settings/

  ./check_string_res.py packages/apps/Settings/  packages/apps/QuickSearchBox/ ..

把对应缺少的字符串补上翻译就OK,避免缺少翻译导致Android在切换语言之后出现崩溃的问题;

〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)的更多相关文章

  1. Android hybrid App项目构建和部分基本开发问题

    1.首先是选型:Cordova+Ionic Framework,调试测试环境是Ripple Emulator.开发环境其实可以随便选,我个人选择了Eclipse,当然Android SDK+ADT也是 ...

  2. 包括后台的Android美食APP项目开源代码

    项目简介 小食光定位为一款集美食,社交,LBS服务于一体的美食推荐APP.为你发现周边美食的同时提供一个吃货分享的平台. APP截图     功能模块 美食推荐 :提供基础的美食信息查询: 商家推荐  ...

  3. 9个完整android开源app项目

    一.photoup 介绍: photoup 是一款开源的相册类app,主要功能是将本地图片提交到facebook上去,虽然他的功能和facebook的远程服务相关,但是本身是可以被当作一款 相册应用的 ...

  4. 【Android端APP 安装包检查】安装包检查具体内容及实现方法

    一.安装包检查的具体包含内容有哪些? 1.安装包检查的一般内容包括: 安装包基本信息检查: 文件大小: xx MB 包名: com.xx 名称:  xx 本次安装包证书与外网证书对比一致性:是 版本号 ...

  5. android 中的一些资源注解,让编译器帮你检查代码

    android 中的一些资源注解,让编译器帮你检查代码 写方便的时候可以用注解来声明一些参数,以明确的指示参数的类型,让代码更安全.我们看到,在android源代码里大量使用了注解.我整理了一些注解如 ...

  6. (Android UI)Android应用程序中资源:图片、字符串、颜色、布局等

    Android系统设计采用代码和布局分离的设计模式,因此在设计Android应用程序时需要遵循该设计模式. “把非代码资源(如图片和字符串常量)和代码分离开来始终是一种很好的做法.”---<An ...

  7. Android studio教程:[1] 创建app项目

    Android studio作为面市不久的安卓开发工具,越来越受到大家的喜爱,这里我将介绍如何在Android studio中创建一个APP项目,并在以后经验中介绍其他有关Android studio ...

  8. android适配全机型悬浮框、视频APP项目、手势操作、Kotlin妹子App、相机图片处理等源码

    Android精选源码 图片滤镜处理,相机滤镜实时处理,相机拍照录制 android仿爱壁纸App更换壁纸效果源码 基于Kotlin+MVP+Retrofit+RxJava+Glide 等架构实现短视 ...

  9. Android开源工具项目集合

    最近因为要去外派了,工欲善其事,必先利其器!所以又回顾了一下自己github上所收藏的项目,也算是温故而知新吧. 最流行的Android组件大全 http://www.open-open.com/li ...

随机推荐

  1. linux上apache并发数与服务器内存关系计算!

    Linunx(本次为ubuntu) apache! 连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU.内存.带宽等都有关系. 查看当前的连接数可以用: ps aux | g ...

  2. 步步为营-21-xml的增删改查

    1 增加(存在则添加,不存在则新建) //对xml的操作-- XmlDocument doc = new XmlDocument(); if (File.Exists("Person.xml ...

  3. brew装snappy

    brew装snappy,我在mac上已经开了socks5代理,也尝试了lantern或者duotai.org,结果都下载不动. 解决方法:把snappy包手动从浏览器下载,然后放到缓存目录,再执行br ...

  4. PC_android通信之传输图片并显示在手机端【转】

    从服务器 (PC 端 ) 发送图片到客户端 (android 手机端 ) ,并在手机页面上显示该图片.(注:本文旨在实现功能,并未考虑效率,有待后续跟进.) 1.服务器端 int port=9090; ...

  5. Docker 镜像的导入和导出

    镜像的导入和导出 export 和improt [root@#localhost docker]# docker run -ti ubuntu:update /bin/bash root@cbe3cb ...

  6. 【Java】 剑指offer(67) 把字符串转换成整数

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...

  7. hdu 2036 求多边形面积 (凸、凹多边形)

    <题目链接> Problem Description “ 改革春风吹满地,不会AC没关系;实在不行回老家,还有一亩三分地.谢谢!(乐队奏乐)” 话说部分学生心态极好,每天就知道游戏,这次考 ...

  8. html/css实现阴影蒙版覆盖原网页并显示浮框的功能

    在提供用户修改资料/密码等功能的时候,往往希望给用户这样的使用体验,在不跳转,不弹框的情况下完成对这些功能的操作. 这可以通过一种效果来实现,在同一页面下阴影覆盖整个当前网页并使得原网页中元素无法使用 ...

  9. python在使用MySQLdb模块时报Can't extract file(s) to egg cacheThe following error occurred while trying to extract file(s) to the Python eggcache的错误。

    这个是因为python使用MySQLdb模块与mysql数据库交互时需要一个地方作为cache放置暂存的数据,但是调用python解释器的用户(常常是服务器如apache的www用户)对于cache所 ...

  10. Codeforces.264E.Roadside Trees(线段树 DP LIS)

    题目链接 \(Description\) \(Solution\) 还是看代码好理解吧. 为了方便,我们将x坐标左右反转,再将所有高度取反,这样依然是维护从左到右的LIS,但是每次是在右边删除元素. ...