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: TODO25     :returns: TODO26 27     """28     os.chdir(path)29     if not os.path.exists(Axml):30         return31 32     # 输出提示33     print "\n### Processing Project: %s ..\n" % path34 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_file41 42         # 解析xml文件,并保存已有资源到 names_had43         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         # 逐个检查被调用的字符串资源,不存在此资源时报Warning51         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!!!" % c55 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." % path71     else:72         usage()

使用方法:

  ./check_string_res.py packages/apps/Settings/

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

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

更多相关文章

  1. android 资源文件命名规则 drawable mipmap一样的
  2. Android主题切换
  3. C#/IOS/Android通用加密解密方法
  4. Android中String资源文件的String.format方法(java)
  5. Android读写XML(下)——创建XML文档
  6. Android读写XML(下)——创建XML文档
  7. Android中Bundle的使用示例
  8. Android中资源管理机制详细分析
  9. Android中Bundle的使用示例

随机推荐

  1. list_item 们
  2. Android Studio 导入项目时遇到sdk locat
  3. Android(安卓)信号处理面面观 之 信号定
  4. 如何在Android中取得当前进程名
  5. Android BroadcastReceiver 简介
  6. TextView实现电话、网址链接
  7. Android 中的Theme和Style使用
  8. [android]无聊写个android的GCDのdispatc
  9. 拦截短信,不让系统发通知
  10. android studio报错Gradle project sync