用于翻译验证测试的方法和系统与流程

文档序号:12041795阅读:492来源:国知局
用于翻译验证测试的方法和系统与流程
本发明的实施方式一般涉及测试,更具体地,涉及用于翻译验证测试的方法和系统。

背景技术:
翻译验证测试(TVT)在全球化和本地化项目中扮演着很重要的角色。全球化和本地化中的文本资源都是存放在单独的资源文件里,由于可能应用在不同的上下文环境里,因此难以判断这些文本资源的翻译是否正确,或者在系统运行的上下文环境里是否合适。目前用于翻译验证测试通常有两种方法。第一种方法:对文本资源中的文本进行逐个翻译。然而,由于同一个词可能在不同的上下文环境里具有不同的含义,翻译和测试人员在没有上下文的情况下很难判断一个词的翻译是否正确或合适。第二种方法:运行应用,在运行时翻译并进行验证。但是,在运行时翻译并进行验证要求测试人员必须熟悉应用,这往往需要对测试人员进行培训。即使如此,由于很难做到完整覆盖,仍然难以保证翻译的准确性。

技术实现要素:
本发明说明性实施例中认识到现有技术中存在的上述缺点。为此,本公开提供了克服现有技术中一个或多个上述缺点的技术方案。根据本发明的一个实施例,提供了一种用于翻译验证测试TVT的方法,包括:读取源代码对应的符号表和语法树;获取符号表中的widget对象和widget对象方法;根据语法树中的代码调用顺序将widget对象和widget对象方法组织成widget结构树;利用符号表、widget结构树和资源文件产生对应于源代码的索引文件,其中索引文件记录了widget对象之间的关系。根据本发明的另一个实施例,提供了一种用于翻译验证测试TVT的系统,包括:widget解析器,配置为:读取源代码对应的符号表和语法树;获取符号表中的widget对象和widget对象方法;根据语法树中的代码调用顺序将widget对象和widget对象方法组织成widget结构树;参数解析器,配置为:根据符号表、widget结构树和资源文件产生对应于源代码的索引文件,其中索引文件记录了widget对象之间的关系。利用本发明实施例提供的上述一个或多个实施例,为进行翻译验证测试的翻译和测试人员提供上下文信息,因而能够有效解决现有技术中存在的上述缺点。附图说明通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。图1显示了适于用来实现本发明实施方式的示例性计算系统100的框图;图2显示了根据本发明一个实施例的用于翻译验证测试的方法200的流程图;图3显示了根据本发明一个实施例的用于翻译验证测试的系统300的框图;图4显示了语法树的一个示例。具体实施方式下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。图1显示了适于用来实现本发明实施方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。所属技术领域的技术人员知道,本公开可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本公开还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。本发明主要利用基于widget上下文的翻译框架。widget是一个可用的GUI图形组件,其中封装了一些数据,然后提供一些API让程序去操作这个组件。常见的widget包括:JavaSwing组件、SWT组件、Windows本地GUI图形组件、DojoGUI图形组件等。本发明的基于widget上下文的翻译框架首先解析源代码得到对应的符号表和语法树,然后获取符号表中的widget对象和widget对象方法并根据语法树中的代码调用顺序将widget对象和widget对象方法组织成widget结构树,然后利用符号表、widget结构树和资源文件产生对应于源代码的索引文件,其中索引文件记录了widget对象之间的关系。在进行翻译验证测试时,通过读取产生的索引文件,根据索引文件中记录的widget对象之间的关系为要翻译的句子或词提供上下文,从而使得翻译人员能够进行精确的翻译,测试人员也能够准确的验证翻译是否正确或合适。但是应该理解,虽然这里描述的是在进行翻译验证测试时使用本发明的方法,但所属领域技术人员知道,本发明的方法可以用在翻译验证测试的任意阶段。通常,Widget由多个widget对象组成,而widget对象具有对应的翻译单元(通常对应于资源文件中的消息关键字)。根据翻译单元之间的关系,本发明将多个widget对象之间的关系分为两种,强相关和弱相关。如果一个完整的句子由多个翻译单元构成,而构成该完整句子的多个翻译单元被分别存储,由于需要将这些分别存储的多个翻译单元作为一个整体进行翻译,因此,这些翻译单元之间的关系为强相关,同时,这些翻译单元对应的多个widget对象之间的关系也为强相关。如果多个翻译单元出现在同样的上下文中,例如“save(保存)”和“open(打开)”都位于“File(文件)”菜单下面,那么这些翻译单元之间的关系为弱相关,同时,这些翻译单元对应的多个widget对象之间的关系也为弱相关。下面参看图2,其中显示了根据本发明的一个实施例的用于翻译验证测试的方法200的流程图。根据本发明的一个实施例,用于翻译验证测试的方法200从步骤202开始。接下来,方法200进入步骤204,其中读取源代码对应的符号表和语法树。符号表和语法树通常通过对源代码进行语义分析产生。如何进行语义分析以获得符号表和语法树属于现有技术,这里不再赘述。符号表中包含源代码中出现的元素,元素的类型(元素的类型可能是类、方法、对象等)、所属的类等信息。语法树则记录了整个代码的调用顺序,语法树中涉及的变量、方法的名字都可以在符号表中查询到相应的值。以如下代码为例:Dialogd=newDialog();d.setTitle(getResouce(dTitleKey))Menum=newMenu();m.setText(getResouce(mTextKey))MenuItemmiA=newMenuItem();miA.setText(getResouce(miATextKey))MenuItemmiB=newMenuItem();miB.setText(getResouce(miBTextKey))ToolBartb=newToolBar();tb.setText(getResouce(tbTextKey))tb.setLabel(getResouce(tbLabelKey))d.addChild(m);m.addChild(miA);m.addChild(miB);d.addChild(tb)通过对上述源代码进行语法分析得到的符号表如下表1所示。表1由于语法树记录了整个代码的调用顺序,因此往往很大,这里仅用图4示例性的显示对应于前两行代码的语法树。表1的符号表和图4的语法树仅仅出于示例的目的。接下来,方法200进入步骤206,其中获取符号表中的widget对象和widget对象方法。根据本发明的一个实施例,可以首先获取符号表中所有的对象,然后针对于每一个对象,判断该对象所属的类是否为widget类。如果该对象所属的类是widget类,则确定该对象为widget对象。那些对应于widget对象的方法即为widget对象方法,这些方法可以包括例如setTitle、setText的set方法,也可以包括以getResource()作为参数的那些方法等。以表1为例,可以得到其中的对象:d、m、miA、miB、tb、dTitleKey、mTextKey、miATextKey、miBTextKey、tbTextKey、tbLabelKey。然后,针对每一个对象判断该对象所属的类是否为widget类。例如,对于对象d,其所属的类Dialog为widget类,因此,确定对象d为widget对象。再例如,对于对象dTitleKey,其所属的类String不是widget类,因此,确定对象dTitleKey为非widget对象。通过上述过程,可以得到符号表中所有的widget对象为:d、m、miA、miB和tb。对应于这些widget对象的方法,即widget对象方法为:setTitle、setLabel、getResource和addChild。尽管上面结合表1的示例描述了通过首先获取符号表中的所有的对象,然后针对于每一个对象,判断该对象所属的类是否为widget类进而确定该对象是否为widget对象。但所属领域技术人员知道,也可以采用其他任何方式来达到获取符号表中的widget对象的目的,例如可以通过首先获取符号表中所有的widget类并依据widget类获取与之相关的对象从而得到widget对象。上面的描述仅仅出于示例的目的,不能作为对本发明保护范围的限制。接下来,方法200进入步骤208,其中根据语法树中的代码调用顺序将widget对象和widget对象方法组织成widget结构树。该widget结构树包括各个widget对象以及他们之间的关系。最终构成的widget结构树中的widget对象具有四种关系:兄弟节点关系、父节点关系、子节点关系或是其本身。下面仍以上面给出的代码为例进行说明,但是需要强调,这里的说明只是示例性的,不能作为对本发明保护范围的限制。对于上面给出的代码,首先按照代码执行顺序遍历语法树。在遍历的过程中:1)对于搭建widget的widget对象方法,例如addChild等方法,记录调用者、被调用者和出现顺序。之后,利用记录的调用者、被调用者以及出现顺序构建widget结构树。仍以上面的代码为例,当遍历完毕之后,可以构建得到如下结构2)对于set方法,例如setText、setLabel等widget对象方法,记录调用者和对应的set方法的名称。之后,将记录的调用者和对应的set方法的名字添加到上述生成的widget结构树中以完善widget结构树。仍以上面的代码为例,当遍历完毕之后,可以在上述1)的基础上,进一步完善widget结构树得到如下结构:接下来,方法200进入步骤210,其中利用符号表、widget结构树和资源文件产生对应于源代码的索引文件,其中索引文件记录了widget对象之间的关系。根据本发明的一个实施例,首先利用符号表、widget结构树和资源文件获取widget对象之间的相关性,然后根据widget对象之间的相关性产生对应于源代码的索引文件。下面详细介绍如何利用符号表、widget结构树和资源文件获取widget对象之间的相关性。应该理解,下面的一个或多个实施例仅仅是示例性的描述,不能作为对本发明保护范围的限制。根据本发明的一个实施例,首先获取符号表中的所有set方法,即那些能够用资源文件中的消息关键字设置的widget对象方法,例如setTitle()、setLabel()等。然后,通过静态解析set方法中的参数,利用参数在资源文件,通常是ResourceBundle,中追踪消息关键字。下面分别结合不同的实施例,针对不同的情况详细说明如何利用set方法中的参数在资源文件中追踪消息关键字。根据本发明的一个实施例,如果set方法中的参数为与消息关键字链接的字符串,也就是说,能够在资源文件中追踪到该消息关键字,那么记录该set方法与该消息关键字为成功匹配。例如,对于方法setTitle(getResource(keyA)),其中的参数getResource(keyA)与消息关键字keyA链接,也就是说,能够在资源文件中追踪到该消息关键字keyA,那么记录该set方法与keyA为成功匹配。根据本发明的一个实施例,如果set方法中的参数为与串联消息关键字链接的字符串,那么针对串联消息关键字的各个部分分别进行追踪。如果串联消息关键字的某部分最终能够追踪到字符串常量,那么记录该set方法与串联该消息关键字的该部分为成功匹配。如果某部分最终不能追踪到字符串常量,那么将串联该消息关键字的该部分标记为通配符。例如,对于方法:setTitle(getResource(keyA+untraceable)),其中的参数getResource(keyA+untraceable)与串联消息关键字keyA+untraceable链接,那么针对该串联消息关键字的各个部分分别进行追踪,最终,keyA能够追踪到字符串常量,而“untraceable”不能追踪到字符串常量,因此,记录该set方法与所有以keyA开始的消息关键字为成功匹配。根据本发明的一个实施例,如果set方法中的参数为与消息串联,那么对消息串联的各个部分分别进行追踪,并且记录消息串联的各个部分追踪得到的各个消息关键字。然后,记录该set方法与得到的各个消息关键字为成功匹配,同时,记录各个消息关键字之间为强相关。例如,对于set方法:setTitle(getResource(keyA)+getResource(keyB)),其中的参数getResource(keyA)+getResource(keyB)为消息串联,对于消息串联的各个部分分别进行追踪得到消息关键字keyA和keyB。然后记录该set方法与keyA和keyB为成功匹配,并且记录keyA和keyB之间为强相关。通过上述处理,利用set方法中的参数在资源文件中追踪到消息关键字的同时也获得了消息关键字之间的相关性。由于消息关键字对应于前面提到的翻译单元,而翻译单元对应于widget对象,因此,消息关键字之间的相关性也反映了widget对象之间的相关性。接下来,根据本发明的一个实施例,利用widget结构树检测widget对象之间的相关性。通过widget结构树可以进一步检测widget对象之间的相关性。例如,可以通过分别将方法名和所属类代入widget结构树双重循环遍历所有的set方法来实现。如果相关,记录set方法中成功匹配的两套消息关键字之间相关。例如,widget结构树表明ClassA.methodA和ClassB.methodB相关,而keyA和keyB被记录为与ClassA.methodA成功匹配,keyC和keyD被记录为与ClassB.methodB成功匹配,那么进一步可以得到以下四组相关:KeyA和keyC、keyA和keyD、keyB和keyC以及keyB和keyD。通过上述处理,能够得到更加全面的widget对象之间的相关性。根据本发明的一个实施例,利用上面得到的widget对象之间的相关性,产生对应于源代码的索引文件,索引文件记录了widget对象之间的相关性。有了索引文件之后,当TVT测试人员对照资源文件进行逐条翻译时,通过读取索引文件的内容,实时的将当前翻译单元对应的强相关和弱相关的翻译单元呈现出来,使得TVT测试人员能够参考上下文环境,从而能够提高翻译的准确性。下面参见图3,其中显示了根据本发明一个实施例的用于翻译验证测试的系统300的框图,系统300包括:widget解析器302,配置为:读取源代码对应的符号表和语法树;获取符号表中的widget对象和widget对象方法;根据语法树中的代码调用顺序将widget对象和widget对象方法组织成widget结构树;参数解析器304,配置为:根据符号表、widget结构树和资源文件产生对应于源代码的索引文件,其中索引文件记录了widget对象之间的关系。根据本发明的一个实施例,通过对源代码进行语义分析产生符号表和相应的语法树。根据本发明的一个实施例,其中widget解析器302进一步配置为:按照代码执行顺序遍历语法树。根据本发明的一个实施例,其中widget解析器302进一步配置为:对于搭建widget的方法,记录调用者、被调用者和出现顺序。对于set方法,记录调用者和对应的set方法的名字。根据本发明的一个实施例,其中参数解析器304进一步配置为:静态地解析widget对象方法的参数;根据符号表,利用widget对象方法的参数在资源文件中追踪消息关键字;利用widget树结构检测widget对象之间的相关性;利用widget对象方法的参数、消息关键字、widget对象之间的相关性产生对应于源代码的索引文件。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1