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

 1 #!/usr/bin/env python
 2 # encoding: utf-8
 3
 4 import os, sys, getopt
 5 import xml.dom.minidom
 6 import subprocess
 7 from xml.dom.minidom import Node
 8
 9 # 判断是否是App项目依据
10 Axml='AndroidManifest.xml'
11
12 res_en_string="res/values/strings.xml"
13 res_cn_string="res/values-zh-rCN/strings.xml"
14
15 # 检查资源文件列表
16 res_string_files=[res_en_string, res_cn_string]
17
18 # Java调用字符串资源列表
19 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'''
20
21 def _check_string_res(path):
22     """检查字符串资源调用情况
23
24     :path: TODO
25     :returns: TODO
26
27     """
28     os.chdir(path)
29     if not os.path.exists(Axml):
30         return
31
32     # 输出提示
33     print "\n### Processing Project: %s ..\n" % path
34
35     # 获得字符串资源调用情况
36     find_string_called_by_java_array = subprocess.Popen(find_string_called_by_java, shell=True, stdout=subprocess.PIPE).stdout.read().split(' ')
37
38     # 逐个检查资源文件(目前检查中文、英文)
39     for res_string_file in res_string_files:
40         print ">>> Checking %s file .." % res_string_file
41
42         # 解析xml文件,并保存已有资源到 names_had
43         doc = xml.dom.minidom.parse(res_string_file)
44         strings = doc.getElementsByTagName('string')
45         names_had = []
46         for string in strings:
47             name = string.getAttribute('name')
48             names_had.append(name)
49
50         # 逐个检查被调用的字符串资源,不存在此资源时报Warning
51         for check in find_string_called_by_java_array:
52             c=check[9:].strip()
53             if c not in names_had:
54                 print "  - Warning: string name '%s' not found!!!" % c
55
56 def usage(exitval=0):
57     print "\nUsage: %s project_dir1 project_dir2 ..\n" % sys.argv[0]
58
59 if __name__ == '__main__':
60     if len(sys.argv) == 1:
61         if os.path.isfile(Axml):
62             _check_string_res(os.path.abspath('.'))
63         else:
64             usage()
65     elif len(sys.argv) > 1:
66         for path in sys.argv[1:]:
67             if os.path.isdir(path):
68                 _check_string_res(os.path.abspath(path))
69             else:
70                 print "### %s Not a directory, ignored." % path
71     else:
72         usage()

使用方法:

  ./check_string_res.py packages/apps/Settings/

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

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

转载于:https://www.cnblogs.com/scue/p/4463020.html

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

  1. android app 的后台代码,包括后台的Android美食APP项目开源代码

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

  2. android 系统语言切换,Android系统切换语言更新应用界面方法

    最近做的一个升级应用,在下载升级包的过程中又有一个toast类型的dialog悬浮在屏幕右上角,这个时候切换系统语言会出现问题. 当主屏幕为升级应用时,切换系统语言升级应用重启,而重启后并不能自动断点 ...

  3. 一些完整的Android开源app项目

    android开源项目有很多,但是完整的app项目不多,下面是最近我 整理的一些开源app项目: 注: jcodecraeer网站上搜集了很多开源项目,更新很快,非常值得关注. 一.photoup 介 ...

  4. Android studio app项目红叉无法编译

    错误现象如下: 点击run按钮: 可以看到有明显的错误提示: Error: Please select android sdk 解决方案: 主要是修改了.iml(xxx:要run的module名,比如 ...

  5. 十个经典Android开源APP项目

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  6. android如何调取网站后台的图片,基于Bmob后台开发Android的APP项目——从后端获取图片,以及在后端上上传图片...

    第一次写博客感觉还心情还挺激动.当听说有Bmob为移动端制定的后台,正好现在我还并未学会开发后台,于是抱着尝试的心去了解一下(其实我还是个小萌新). 下面这些操作的前提已经创建好项目. 1 . 直接在 ...

  7. 安卓毕业设计app项目基于Uniapp+SSM实现的安卓的掌上校园系统食堂缴费图书馆预约

    目录 一.项目介绍 二.开题报告 三.截图 四.源码获取 一.项目介绍 计算机毕业设计安卓App毕设项目之ssm基于安卓的掌上校园系统-IT实战课堂_哔哩哔哩_bilibili计算机毕业设计安卓App ...

  8. android跟随系统切换语言

    很简单,需要自己编写多一个values文件,按照命名规范(ar:阿拉伯语,en:英语,zh-rCN: 简体中文,zh-rTW:繁体中文),然后编写相应的文件即可. 首先建立相应的文件夹,例如简体中文: ...

  9. 项目建设做好服务器,我院数字化建设项目(一期)服务器系统切换工作顺利完成...

    来源:院信息化工作小组 责编:陈一星 我院数字化建设项目(一期)服务器系统切换工作经过十天的监测,系统运行正常,服务器系统切换工作获得圆满成功. 服务器系统切换工作共分为两阶段,并分别于2012年6月 ...

最新文章

  1. JAVA正则忽略大小写
  2. 鸟哥的Linux私房菜(服务器)- 第十章、申请合法的主机名
  3. Dockerfile----ubuntu-java
  4. db2 mysql sql server_连接数据库的方法(Oracle DB2 SQL Server MySQL...)
  5. 【转载保存】Lucene 实战教程第六章 Lucene 的精确、包含、集合查询 Query 的简单使用
  6. OpenInfra Days China 2020大会议程已上线!
  7. MySQL笔记-InnoDB中Record Lock与Gap Lock
  8. 全方面的了解超宽带信号高速采集记录回放系统
  9. 基于jQ+CSS3页面滚动内容元素动画特效
  10. SSM5.2版本整合
  11. 如何在 Windows 中快速查找文档
  12. android 短信打开APP功能及注意事项
  13. 星际密码(编程题解)
  14. 何为RPA的核心壁垒?RPA的服务方式探析
  15. 大数据风控公司需要企业征信牌照?
  16. PowerCLi 通过vCenter批量创建及管理虚拟交换机到所有esxi主机
  17. oracle日期转换为季度,ORACLE时间字段取年、月、日、季度
  18. 2022.10.26 英语背诵
  19. 酷比魔方iwork12 linux,用KB3195781累集更新补丁1511变1903的酷比魔方iwork12Windows10系统...
  20. c#设计12星座速配软件_星座代码:用vb编一个星座配对的程序代码

热门文章

  1. R语言CRAN软件包Meta分析
  2. Centos的网络配置命令和文件
  3. 性能测试的“2-5-10原则”
  4. C/C++获得当前系统时间
  5. 视频专辑:张孝祥Java邮件开发
  6. 教你用Python表达母亲节的祝福
  7. C#面向集合的扩展(讨论)
  8. semantic-ui-react图像组件不显示图像的问题
  9. 从CTO到创始人 孙元浩基础软件破局之路
  10. HttpURLConnection获取页面源代码乱码问题