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. MonologFX最简demo,javafx外用dialog示例

    参考blog:https://blogs.oracle.com/javajungle/entry/monologfx_floss_javafx_dialogs_for /* * To change t ...

  2. 开发同学的福利--mysql监控工具sqlprofiler,类似sqlserver的profiler工具

    最近无意发现了mysql的客户端监控工具“Nero Profile SQL”,刚开始还不知道怎么使用,经过半小时摸索,现将使用步骤写下来. 背景:开发的时候,如果数据存储层这块使用EF,或者其他orm ...

  3. 如何将自己的Image镜像Push到Docker Hub

    首先需要一个docker官方账号 这里我添加了一个AspNetCore程序 通过创建了一个镜像(前面提过使用Dockerfile处理了) docker build -t dockertest . 首先 ...

  4. POJ 2010 Moo University - Financial Aid (优先队列)

    题意:从C头奶牛中招收N(奇数)头.它们分别得分score_i,需要资助学费aid_i.希望新生所需资助不超过F,同时得分中位数最高.求此中位数. 思路: 先将奶牛排序,考虑每个奶牛作为中位数时,比它 ...

  5. webstrom的热更新没效果

    webstorm保存的时候会先保存到临时文件中,其实并没有真正保存,要在setting->stystem settings下的“use save write”去掉

  6. UOJ Round #1 题解

    题解: 质量不错的一套题目啊..(题解也很不错啊) t1: 首先暴力显然有20分,把ai相同的缩在一起就有40分了 然后会发现由于原来的式子有个%很不方便处理 so计数题嘛 考虑一下容斥 最终步数=初 ...

  7. 【AtCoder】ARC081

    C - Make a Rectangle 每次取两个相同的且最大的边,取两次即可 #include <bits/stdc++.h> #define fi first #define se ...

  8. Linux —— 目录(文件夹)及文件相关处理指令

    可参考这篇文章:https://mp.weixin.qq.com/s?__biz=MzU4MTU3OTI0Mg==&mid=2247484269&idx=1&sn=38869a ...

  9. HDU 2594 (next数组的用法)【KMP】

    <题目链接> 题目大意: 给两个字符串,求第一串的前缀与第二串的后缀匹配的最长序列以及长度. 解题分析: 看到这个求前缀和后缀相同序列的最大长度,我们不难想到KMP中的next数组.做法就 ...

  10. js类型判断-丰富加好用

    一, 自己有时候写一些东西,要做类型判断,还有测试的时候,对于原生的和jQuery中的类型判断,实在不敢恭维,所以就写了一个好用的类型判断,一般情况都够用的. function test(type) ...