首页> 中国专利> 基于签到法的字符串资源是否同步的检测方法及系统

基于签到法的字符串资源是否同步的检测方法及系统

摘要

本发明公开了一种基于签到法的字符串资源是否同步的检测方法及系统,所述方法包括读取不同种类语言的资源文件,把同一类语言所有的字符串资源ID放在同一个数组,并使同一含义的字符串资源用同一个ID;采用签到的方式来检测出没有在所有语言的资源文件中都有定义的字符串资源,并将该字符串资源输出到报告文件里,指明该字符串资源在哪种语言里没有定义;所述系统包括资源文件读取模块和字符串资源检测模块。本发明方法及系统可以快速地检测出软件中不同语言种类的字符串资源的差异,即检测出哪一条字符串资源在哪种语言中没有定义,即不同语言的字符串资源存在不同步的问题,并将该字符串资源输出到报告文件里,防止程序出现显示异常或崩溃。

著录项

  • 公开/公告号CN103823686A

    专利类型发明专利

  • 公开/公告日2014-05-28

    原文格式PDF

  • 申请/专利权人 广东欧珀移动通信有限公司;

    申请/专利号CN201410098196.2

  • 发明设计人 唐兴龙;

    申请日2014-03-17

  • 分类号G06F9/44(20060101);

  • 代理机构44245 广州市华学知识产权代理有限公司;

  • 代理人李盛洪

  • 地址 523860 广东省东莞市长安镇乌沙海滨路18号

  • 入库时间 2024-02-19 23:58:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-21

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/44 变更前: 变更后: 申请日:20140317

    专利权人的姓名或者名称、地址的变更

  • 2017-04-19

    授权

    授权

  • 2014-06-25

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20140317

    实质审查的生效

  • 2014-05-28

    公开

    公开

说明书

技术领域

本发明涉及一种字符资源是否同步的检测方法及系统,尤其是一种基于签到法的字符串资源是否同步的检测方法及系统。属于软件开发技术领域。

背景技术

目前,在软件开发中经常会有多种语言的字符串资源,而且数量都比较多,因此经常出现一种问题就是对应的字符串有中文资源,但没有英文资源,或者是缺少繁体资源等,如果出现这种情况就会使软件显示不正确或者是由于找不到资源ID而出现异常。

中国专利申请号为200910081166.X的发明专利申请公开了一种字符串资源定义与调用的同步方法及装置,该申请用于解决在软件开发环境中,开发人员为维护字符串资源容易造成冗余以及出现定义与调用不同步的技术问题。该申请通过添加扫描检测模块自动程序代码中字符串调用以及在字符串资源文件中的字符串定义进行双向的检测,如果发现存在的字符串冗余或未定义的情况则主动提示程序开发人员,从而减轻开发人员的工作分段,但并未出现解决上述技术问题的启示。

发明内容

本发明的目的是为了解决上述现有技术的缺陷,提供一种可以快速地检测出软件中不同语言种类的字符串资源的差异,并防止程序崩溃或显示异常的基于签到法的字符串资源是否同步的检测方法。

本发明的另一目的在于提供一种基于签到法的字符串资源是否同步的检测系统。

本发明的目的可以通过采取如下技术方案达到:

基于签到法的字符串资源是否同步的检测方法,其特征在于所述方法包括:

读取不同种类语言的资源文件,把同一类语言所有的字符串资源ID放在同一个数组,并使同一含义的字符串资源用同一个ID;

采用签到的方式来检测出没有在所有语言的资源文件中都有定义的字符串资源,并将该字符串资源输出到报告文件里,指明该字符串资源在哪种语言里没有定义。

作为一种优选方案,所述签到的方式通过创建ItemSignatureTable对象实现,不同语言中相同含义的字符串资源共用一个ItemSignatureTable对象,该对象包含两个变量,分别为mStringID变量和mSignatureTable变量;

其中,mStringID变量表示字符串资源ID;mSignatureTable变量表示字符串资源的签到表,mSignatureTable变量用二进制中不同的位来标记字符串资源的不同种类语言是否有签到,1表示有签到,0表示未签到。

作为一种优选方案,所述采用签到的方式来检测出没有在所有语言的资源文件中都有定义的字符串,并把该字符串输出到报告文件,指明该字符串在哪种语言里没有定义,具体包括:

遍历所有的字符串资源,通过字符串资源ID在哈希表里查找该ID是否已创建了一张签到表;

若查找的字符串资源ID已创建了一张签到表,则获取ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1;

若查找的字符串资源ID还未创建一张签到表,则创建ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1,然后把ItemSignatureTable对象加入哈希表;

遍历哈希表里的每一项,查看表中所有ItemSignatureTable对象中mSignatureTable变量的语言位是否全部为1,若至少有一个位不为1,则说明相应的字符串资源的某种语言没有来签到;

在相应的字符串资源至少有一种语言没有来签到时,通过位运算判断mSignatureTable变量的语言位哪一位为0,即可知哪种语言没有定义该字符串资源;

将没有在所有语言的资源文件中都有定义的字符串资源输出到报告文件里,并指明该字符串资源在哪种语言里没有定义。

作为一种优选方案,所述把ItemSignatureTable对象加入哈希表后,key值表示字符串资源ID,value值表示ItemSignatureTable对象。

本发明的另一目的可以通过采取如下技术方案达到:

基于签到法的字符串资源是否同步的检测系统,其特征在于所述系统包括:

资源文件读取模块,用于读取不同种类语言的资源文件,把同一类语言所有的字符串资源ID放在同一个数组,并使同一含义的字符串资源用同一个ID;

字符串资源检测模块,用于采用签到的方式来检测出没有在所有语言的资源文件中都有定义的字符串资源,并将该字符串资源输出到报告文件里,指明该字符串资源在哪种语言里没有定义。

作为一种优选方案,所述字符串资源检测模块,具体包括:

字符串资源遍历单元,用于遍历所有的字符串资源,通过字符串资源ID在哈希表里查找该ID是否已创建了一张签到表;

对象获取单元,用于若查找的字符串资源ID已创建了一张签到表,则获取ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1;

对象创建单元,用于若查找的字符串资源ID还未创建一张签到表,则创建ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1,然后把ItemSignatureTable对象加入哈希表;

哈希表遍历单元,用于遍历哈希表里的每一项,查看表中所有ItemSignatureTable对象中mSignatureTable变量的语言位是否全部为1,若至少有一个位不为1,则说明相应的字符串资源至少有一种语言没有来签到;

字符串资源判断单元,用于在相应的字符串资源至少有一种语言没有来签到时,通过位运算判断mSignatureTable变量的语言位哪一位为0;

字符串资源输出单元,用于将没有在所有语言的资源文件中都有定义的字符串资源输出到报告文件里,并指明该字符串资源在哪种语言里没有定义。

本发明相对于现有技术具有如下的有益效果:

本发明方法及系统采用签到的方式,可以快速地检测出软件中不同语言种类的字符串资源的差异,即检测出哪一条字符串资源在哪种语言中没有定义,即不同语言的字符串资源存在不同步的问题,并将该字符串资源输出到报告文件里,防止程序出现显示异常或崩溃,能广泛应用于软件开发中。

附图说明

图1为本发明实施例1的基于签到法的字符串资源是否同步的检测方法的流程示意图。

图2a为本发明实施例1的基于签到法的字符串资源是否同步的检测方法中数组ArrayCn示意图。

图2b为本发明实施例1的基于签到法的字符串资源是否同步的检测方法中数组ArrayTw示意图。

图2c为本发明实施例1的基于签到法的字符串资源是否同步的检测方法中数组ArrayEn示意图。

图3为本发明实施例1的基于签到法的字符串资源是否同步的检测方法中签到过程的流程示意图。

图4为本发明实施例4的基于签到法的字符串资源是否同步的检测系统结构框图。

具体实施方式

实施例1:

如图1所示,本实施例的基于签到法的字符串资源是否同步的检测方法包括以下步骤:

1)读取不同种类语言的资源文件,把同一类语言所有的字符串资源ID放在同一个数组,并使同一含义的字符串资源用同一个ID;

如图2a~2c所示,本实施例以中文、繁体以及英文三种语言的资源为例,中文资源ID放到数组ArrayCn,繁体资源ID放到数组ArrayTw,英文资源放到ArrayEn,其中数组ArrayCn包括item1、item2、item3、item4、item5和item6,数组ArrayTw包括item1、item2、item3和item4,ArrayEn包括item1、item2、item3、item4、item5和item8;

2)采用签到的方式来检测出没有在所有语言的资源文件中都有定义的字符串资源,并将该字符串资源输出到报告文件里,指明该字符串资源在哪种语言里没有定义;

步骤2)中,所述签到的方式可以通过创建ItemSignatureTable对象实现,不同语言中相同含义的字符串资源共用一个ItemSignatureTable对象,所述ItemSignatureTable对象的创建如下:

ItemSignatureTable对象包含两个变量,分别为mStringID变量和mSignatureTable变量,mStringID变量表示字符串资源ID;mSignatureTable变量表示字符串资源的签到表,mSignatureTable变量用二进制中不同的位来标记字符串资源的不同种类语言是否有签到,1表示有签到,0表示未签到,在此定义mSignatureTable二进制的最后三位分别表示不同的语言(即最后三位作为语言位),如最后一位表示中文,倒数第二位表示繁体,倒数第三位表示英文;

如图1和图3所示,本实施例的步骤2)具体包括:

2.1)遍历所有的字符串资源,通过字符串资源ID在哈希表里查找该ID是否已创建了一张签到表;

2.2)若查找的字符串资源ID已创建了一张签到表,则获取ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1;

2.3)若查找的字符串资源ID还未创建一张签到表,则创建ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1,然后把ItemSignatureTable对象加入哈希表,key值表示字符串资源ID,value值表示ItemSignatureTable对象;

2.4)遍历哈希表里的每一项,查看表中所有ItemSignatureTable对象中mSignatureTable变量的最后三位是否全部为1,若至少有一个位不为1,则说明相应的字符串资源的某种语言没有来签到,此时通过位运算判断mSignatureTable变量的后三位哪一位为0,即可知哪种语言没有定义该字符串资源,将该字符串资源输出到报告文件里,并指明该字符串资源在哪种语言里没有定义;

本步骤以item5为例,它的最后签到结果是00000101,可以看到最后一位和倒数第三位均为1,倒数第二位为0,说明中文和英文都有签到,而繁体没有签到,这就说明item5的字符串资源在繁体里面没有定义,将item5的字符串资源输出到报告文件里,并指明在繁体里没有定义。

实施例2:

如图2a~2c和图3所示,本实施例的步骤2.4)以item6为例,它的最后签到结果是00000001,可以看到最后一位为1,倒数第二位和倒数第三位均为0,说明中文有签到,而繁体和英文没有签到,这就说明item6的字符串资源在繁体和英文里面没有定义,将item6的字符串资源输出到报告文件里,并指明在繁体里没有定义。

实施例3:

如图2a~图2c和图3所示,本实施例的步骤2.4)以item8为例,它的最后签到结果是00000100,可以看到倒数第三位为1,最后一位和倒数第二位均为0,说明英文有签到,而中文和繁体没有签到,这就说明item8的字符串资源在中文和繁体里面没有定义,将item8的字符串资源输出到报告文件里,并指明在中文和繁体里没有定义。

实施例4:

如图4所示,本实施例的基于签到法的字符串资源是否同步的检测系统,其特征在于:

资源文件读取模块,用于读取不同种类语言的资源文件,把同一类语言所有的字符串资源ID放在同一个数组,并使同一含义的字符串资源用同一个ID;

字符串资源检测模块,用于采用签到的方式来检测出没有在所有语言的资源文件中都有定义的字符串资源,并把该字符串资源输出到报告文件,指明该字符串资源在哪种语言里没有定义。

其中,所述字符串资源检测模块,具体包括:

字符串资源遍历单元,用于遍历所有的字符串资源,通过字符串资源ID在哈希表里查找该ID是否已创建了一张签到表;

对象获取单元,用于若查找的字符串资源ID已创建了一张签到表,则获取ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1;

对象创建单元,用于若查找的字符串资源ID还未创建一张签到表,则创建ItemSignatureTable对象,并在mSignatureTable变量中相应语言的位设置为1,然后把ItemSignatureTable对象加入哈希表;

哈希表遍历单元,用于遍历哈希表里的每一项,查看表中所有ItemSignatureTable对象中mSignatureTable变量的语言位是否全部为1,若至少有一个位不为1,则说明相应的字符串资源的某种语言没有来签到;

字符串资源判断单元,用于在相应的字符串资源的某种语言没有来签到时,通过位运算判断mSignatureTable变量的语言位哪一位为0;

字符串资源输出单元,用于将没有在所有语言的资源文件中都有定义的字符串资源输出到报告文件里,并指明该字符串资源在哪种语言里没有定义。

综上所述,本发明方法及系统可以快速地检测出软件中不同语言种类的字符串资源的差异,即检测出哪一条字符串资源在哪种语言中没有定义,并将该字符串资源输出到报告文件里,防止程序出现显示异常或崩溃,能广泛应用于软件开发中。

上述实施例中所述的系统可以是手机、电子书、PDA、人机交互终端或其他具有显示功能的手持式终端设备。

另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。

以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号