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

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在切换语言之后出现崩溃的问题;

时间: 2024-09-28 17:56:21

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

Android系统切换语言的时候APP无法更新资源文件的解决方法

你的APP支持多语言环境,假如它正在后台运行,此时用户去更换系统语言,等系统语言换好后直接从后台打开它,此时用户会发现你的界面语言没有和系统语言保持一致:为什么?主要是界面资源没有重新加载 如果你是属于自己在APP内设置语言切换,那么就可以直接在你设置切换的那个activity里做处理,重新启动一次该activity就可以了,但是如果你的APP和我类似本身是没有切换语言功能的,只是跟随系统的,那么你不可能在所有的activity里处理吧!所以我这里就直接在application中重新启动一次ap

Android系统切换语言更新应用界面方法

最近做的一个升级应用,在下载升级包的过程中又有一个toast类型的dialog悬浮在屏幕右上角,这个时候切换系统语言会出现问题. 当主屏幕为升级应用时,切换系统语言升级应用重启,而重启后并不能自动断点续传切换前的下载进度:当主屏幕为launcher的时候,切换系统语言进度条上的提示语言并不能跟着切换: 解决这一问题主要分为以下几步: 1.设置系统切换语言不重启属性,在menifest的activity中设置 android:configChanges="locale|layoutDirectio

9个完整android开源app项目

一.photoup 介绍: ?photoup 是一款开源的相册类app,主要功能是将本地图片提交到facebook上去,虽然他的功能和facebook的远程服务相关,但是本身是可以被当作一款 相册应用的,具有相册应用需要的绝大多数功能,可以很流畅的浏览相册,裁剪图片,缩放图片,图片的编辑:不仅如此,还带有人脸识别这种特色功能,如果我们 能够吸收其中的知识,写一个自己的相册应用就得心应手了,因为从本地相册的角度去看,photoup 在用户体验上仍然是值得改进的,仍然值得我们去开发一款相册程序. 运

APP项目资源对接平台有那几家

随着信息化的逐步深入,无论是企业.政府还是个人,对软件的依赖已经到了必不可少的地步.现在有越来越多的人认识到了软件在日常经营管理中的重要作用.因此软件项目也在不断增长.但随之而来的,承接项目的软件公司.软件团队也越来越多,包括很多个人也加入到承接软件的竞争行列中来了,因此现在对于软件项目的争夺也很激烈.还有很多人甚至不知道上哪里去争取项目,总是抱怨没有项目做;也有的人虽然编程技术不错,但是对于与客户谈项目却是一窍不通,结果应该拿到的项目也拿不到手;也有的虽然已经接到了项目,却发现在实施开发的时候

如何成功对接APP项目资源

接项目最重要的一步是与客户谈需求.客户对软件的需求是项目规划和实施的根本,所以在与客户谈需求时,一定要让用户将所有的想法尽可能的阐述清楚,并把所有的要求罗列出来.这时候不应该害怕"勾引"起客户的潜在需求而增加设计开发的工作量.而应该直接明白地要客户把项目的要求一条条地列出来.这时先把条理.归纳.分析先都扔到一边去,用纸笔将用户最原始.最完整的要求准确地记录下来.假如项目在你对客户的需求没有完全了解清楚的情况下就匆匆上马,那么就会随时发生意想不到的变更,轻则使项目延期或超出预算,重则使得

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

android 中的一些资源注解,让编译器帮你检查代码 写方便的时候可以用注解来声明一些参数,以明确的指示参数的类型,让代码更安全.我们看到,在android源代码里大量使用了注解.我整理了一些注解如下: @NonNull  告诉编译器,这个参数是非空的,编译器会帮你做出检查. 示例: @NonNull public static Snackbar make(@NonNull View view, @StringRes int resId, @Duration int duration) {  

Android开发把项目打包成apk,安卓到手机上,或者提交到app应用商店

#1.用Eclipse的话导出app其实还是很容易的.大家看我的步骤.有图有真相哦 选择一个项目 创建一个新的,位置随便,下面是密码 这里都是一些名字,地区,组织,国家.看你们自己的了 选择你要存放apk的位置 打完收工 Android开发把项目打包成apk,安卓到手机上,或者提交到app应用商店,布布扣,bubuko.com

android studio导入项目出错:Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple errors, see logs

android studio导入项目出错:Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple errors, see logs 解决方式:这个情况是有不同版本的 SDK 并不能合并,建议降低主程序target SDK版本. android studio导入项目出错:Error:Execution failed for task ':app:proce

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

Android studio作为面市不久的安卓开发工具,越来越受到大家的喜爱,这里我将介绍如何在Android studio中创建一个APP项目,并在以后经验中介绍其他有关Android studio的操作和编程方法. 工具/原料 Android studio 方法/步骤 打开软件,在菜单中选择file->new project打开创建向导.   配置项目,确定各个名称和存放项目存放路径: Application name:项目名称 Company Domain:公司域名 Package nam