首页> 中国专利> 语言本地化中特征字符串的提取与替换方法

语言本地化中特征字符串的提取与替换方法

摘要

本发明公开了一种语言本地化中特征字符串的提取与替换方法,对文件进行顺序扫描,当扫描到提取模式部分的开始标识符时,按照提取条件提取字符同时记录提取出字符的位置标识,直到扫描到该提取模式部分的结束标识符,继续扫描文件;当扫描到注释模式部分的开始标识符时,继续扫描,不作字符提取,直到扫描到该注释模式部分的结束标识符,继续扫描文本;重复上述步骤直到文本扫描完毕;将提取出的字符连同它们的位置标志一起生成结果文件,按照结果文件的文件名和其中字符的位置标识,以完全匹配的原则将原文件中的特征字符顺序替换为本地语言的字符。该方法实现了自动对代码中的特征字符进行翻译并替换,处理过程简单,适用范围广。

著录项

  • 公开/公告号CN1506875A

    专利类型发明专利

  • 公开/公告日2004-06-23

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN02155273.8

  • 发明设计人 刘学;

    申请日2002-12-12

  • 分类号G06F17/22;G06F17/28;

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人王丽琴

  • 地址 518057 广东省深圳市科技园科发路华为用服大厦

  • 入库时间 2023-12-17 15:26:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-02

    未缴年费专利权终止 IPC(主分类):G06F17/22 授权公告日:20060719 终止日期:20161212 申请日:20021212

    专利权的终止

  • 2006-07-19

    授权

    授权

  • 2004-09-15

    实质审查的生效

    实质审查的生效

  • 2004-06-23

    公开

    公开

说明书

技术领域

本发明涉及软件产品开发、移植领域,特别是一种用户可以自定义提取规则提取字符,在对字符进行翻译后替换原字符的方法。

背景技术

对于软件开发人员来说,语言本地化工作中的难点是将散落在代码中的字符串资源提取出来以便提交翻译,然后再将翻译结果替换到代码中。这项工作十分繁杂,因此需要利用相应的技术使该工作实现自动化,以提高工作效率。

在现有技术中,存在两种类似技术:一种是以DELPHI代码为操作对象的提取和替换技术,通过该技术用户能够得到DELPHI代码中的汉字字符串文本,翻译该文本后可以将DELPHI源代码替换成纯英文代码,该方法利用通用编程工具,采用完全匹配方式,因而准确性高;另一种是基于翻译字典的替换技术,该技术需要维护翻译字典,然后利用翻译字典中的中英文对照关系在源代码中进行替换,其中,源代码可以是各种类型代码,但必须是文本形式,在字符串替换时采取最大匹配原则,即在字典中查找与源代码字符串最为接近的英文对照翻译进行替换,该方法利用字典替换,可以形成翻译对照关系,且此方法应用范围较广。

但是,以上两种现有技术都存在缺点,表现在:

以DELPHI为操作对象的提取和替换技术只适用于DELPHI代码环境,对于开发工作中大量使用的C环境则无法支持,适用范围小;

基于翻译字典的替换技术由于采用最大匹配原则,是不完全匹配,因此准确性差,并且该方法无法分辨语句与字符串资源,可能造成源代码被错误替换并导致编译无法通过,造成致命的错误。

发明内容

有鉴于此,本发明的主要目的在于提供一种字符串提取与替换方法,以满足语言本地化工作的需要。该方法支持用户自定义提取规则,适用DELPHI、C等多种语言代码,且该方法支持输出提取标志,翻译后的字符串可以根据提取时留下的标记准确无误的进行替换,从而保证代码的正确性。

实现本发明,至少包括以下步骤:

a.以扫描模式开始顺序扫描文本,当以最大匹配原则扫描到提取模式部分的开始标识符时,按照自定义规则中的提取条件,提取出符合定义规则中提取条件的字符,同时记录提取出的字符的位置标识,直到扫描到该提取模式部分的结束标识符时,返回扫描模式继续扫描文本;当以最大匹配原则扫描到注释模式部分的开始标识符时,按照自定义规则继续扫描字符,不作字符提取,直到扫描到该注释模式部分的结束标识符,返回扫描模式继续扫描文本,重复本步骤直至判断得到文本扫描完毕;

b.将被提取出的字符及其位置标识生成结果文件;

c.按照结果文件的文件名和其中字符的位置标识,以完全匹配的原则将原文件中的特征字符顺序替换为本地语言的字符。

其中,在步骤a中,所述记录提取字符的位置标识包括:

记录提取字符在文件中的行号,和记录该文件的文件名。

其中,在步骤a中,所述扫描到开始标识符或结束标识符进一步包括:

当所述开始标识符或结束标识符前有所述部分定义的转义标识符时,继续进行原模式的操作,该开始标识符或结束标识符作为字符资源被扫描。

其中,在步骤a中,所述以最大匹配原则扫描包括:

以长标识符优先级高于短标识符优先级的原则进行所述扫描。

其中,在步骤a中,所述判断得到对文本扫描完毕包括:

扫描到文本结束标识符。

其中,在步骤c中,所述将原文件中的特征字符替换为本地语言的字符包括:

c1.备份所述结果文件得到其副本;

c2.保留结果文件中的字符位置标识,将其翻译成所述本地语言的字符,对照副本中字符内容和位置标识形成翻译对照关系;

c3.按照翻译对照关系将翻译成本地语言的特征字符置于原文件中该特征字符所在位置。

其中,在步骤c3中,所述翻译包括人工或通过翻译字典软件翻译。

其中,所述通过翻译字典软件翻译包括:

根据翻译字典中的语言对照关系进行翻译,并将对照关系生成所述翻译字典软件中的一个文件。

其中,该方法进一步包括将所述文件输出。

其中,该方法进一步包括:

按照用户所设定规则输出替换后的原文件。

可见,本发明完成在文本文件中进行特征字符串的提取和替换功能,提取、替换规则由使用者根据具体情况自行制定。本发明支持用户自定义,能适用于各种环境;替换操作过程采用位置标识结合完全匹配机制,使得替换准确无误;在进行替换同时能够生成数据字典,便于今后工作的进行。

附图说明

图1为定义提取C代码中英文字符串资源的提取树结构图。

图2为整个工作的流程示意图。

图3为提取规则状态图。

图4为定义提取DELPHI代码中英文字符串资源的提取树结构图。

具体实施方式

本发明对文件进行扫描,将其中被规定需要翻译的字符提取出来,与其位置标识一起生成结果文件,备份该结果文件并在原结果文件中翻译字符,经过翻译后,对照备份的结果文件的字符内容及其位置标识,将文件中需要翻译的字符替换为翻译后的字符。

下面结合附图对本发明进行详细描述。

(1)以将文件中的英文字符串提取和替换为例:

本实施例从文件名为MYFILE.C的文件中提取英文字符,翻译成汉字后在原位置进行替换,该文件内容为:

Cstring strOut1;

Cstring strOut2;

strOut1=”How are you”;                     //Variable is\\evaluated

strOut2=”Mike:\”How are you\”。”;

TextOut(strOut1);                            /*output strOut1*\

TextOut(strOut2);

在进行字符串提取之前,用户可以根据被提取文件的情况定义提取规则,提取规则的形式为:由提取节点所构成的提取树。参见图1,图1为定义提取C代码中英文字符串资源的提取树结构。在该提取树结构中,有一个根节点,其开始和结束标识符BOF和EOF是文件首尾标识,该标识符限定了根节点以下的子节点提取范围,即所有的提取操作和注释操作必须在文件首尾范围内进行,该根节点的操作模式为扫描模式,即只进行扫描,不进行提取字符。

根节点以下存在4个子提取节点,他们之间属并列关系:提取节点1和提取节点2均为进行提取模式操作的节点,它们之间的不同仅在于提取节点1定义的开始、结束标识符为双引号,而提取节点2定义的开始、结束标识符为单引号,其余部分定义相同:提取条件为英文,输出摸式规定为全部字符串;其中,开始、结束标识符定义了进行提取操作的开始和结束点,转义标识符用于放置于字符串中与特征标识符相同的字符前,以将字符资源同特征标识符区分开,提取条件用于规定了提取字符串中的何种文字,而输出模式则给定了输出字符串的方式;

提取节点3和提取节点4均为进行注释模式操作的节点,在提取节点3中规定开始、结束标识符分别为双斜杠和换行标志,转义标识符为双反斜杠,在注释模式下不进行提取和输出,因此没有规定提取条件和输出模式;提取节点4中规定开始标识符为/*,结束标识符为*/,没有定义转义标识符,其余部分与提取节点3规定的内容一致。

用户可以根据实际需要配置该提取树:可以更改各个提取节点的内容,还可以在某个提取节点下定义子提取节点,这时,定义了子提取节点的这个提取节点无效,只起进一步划定提取范围的效果,具体操作按照其子节点描述的操作模式进行。

参见图2,图2为整个提取工作的流程示意图:在本发明实施例中,在定义提取规则之后,在图1所示根节点规定的文件首尾标识BOF和EOF之间,对文件MYFILE.C进行顺序扫描,参见图3所示提取规则状态图,本实施例完成图2所示扫描并提取字符步骤201包括以下步骤:

以扫描模式顺序扫描MYFILE.C文件的1~2行,并在扫描过程始终按照最大匹配原则寻找提取树中4个提取节点中任意一个所规定的开始特征标识符;

直到扫描至第3行,在“strOut1=“How are you”;”中,扫描到提取节点1规定的开始标识符双引号,进入提取模式工作,在提取模式下,顺序扫描并记录字符串“How are you”,由于提取条件规定提取英文,因此将该字符串中的英文How are you提取出来形成提取结果;在提取模式工作过程中,始终按照最大匹配原则寻找该节点规定的结束标识符,直到在该行扫描到结束标识符双引号,返回扫描模式工作;

扫描模式在第3行扫描到节点3规定的开始标识符双斜杠//,进入注释模式工作,注释模式只进行顺序扫描,不进行提取,扫描到该行最后,遇到转义标识符\\,其后的结束标识符换行标志被作为字符资源进行扫描;在注释模式工作过程中,始终按照最大匹配原则寻找该节点规定的结束标识符,直到扫描到第4行末尾,遇到结束标识符换行标志,返回扫描模式工作;

扫描模式开始对第5行进行顺序扫描,并在扫描过程始终按照最大匹配原则寻找提取树中4个节点中任意一个所规定的开始特征标识符,直到扫描到节点1规定的开始标识符双引号,进入提取模式工作,在提取模式下,顺序扫描并记录字符串,直到扫描到转义标识符反斜杠\,由于转义标识符的作用,其后与结束标识符形式一致的双引号因此成为字符资源被扫描,从而避免了将实际字符资源误当作特征标识符识别;其后,还遇到了另一个转义标识符,同样按照上述做法操作,最终,此模式下得到的提取结果为Mike:“How are you”;在提取模式工作过程中,始终按照最大匹配原则寻找该节点规定的结束标识符,直到扫描遇到结束标识符双引号,返回扫描模式工作;

继续进行扫描,在对第6行的扫描中,遇到节点4规定的开始标识符/*,进入注释模式工作,只进行扫描,不记录字符,在注释模式工作过程中,始终按照最大匹配原则寻找该节点规定的结束标识符,直到遇到结束标识符*/,返回扫描模式工作;

继续进行扫描模式工作,并始终按照最大匹配原则寻找根节点规定的结束标识符直至扫描到文件结束标志EOF,结束整个提取过程;

其中,在提取模式工作中,均需记录被提取的英文在文件中的行号作为位置标识;

提取字符串的过程结束,将提取结果及其位置标识一并输出,执行图2所示步骤202生成结果文件MYFILE.C。

重新参见图2,在生成结果文件后,执行步骤203将该文件拷贝生成文件副本,将结果文件中的英文翻译成汉字:可以进行步骤204采用字典翻译,也可以采用手动翻译,本实施例采用数据字典进行翻译;执行步骤205将翻译后的结果文件与结果文件副本中的字符及其位置标识形成对照关系,以成为替换来源;然后,执行步骤206用此替换来源按照文件名以对照关系执行顺序替换;替换结束后,由于用户在如图1所述的提取树中规定输出全部字串,因此,执行步骤207将被替换过的原文件MYFILE的所有字符输出;同时,还可以将对照关系以字典文件的形式输出。替换后文件MYFILE.C的内容为:

Cstring strOut1;

Cstring strOut2;

strOut1=”你好”;                                //Variable is\\evaluated

strOut2=”麦克:\”你好吗\”。”;

TextOut(strOut1);                                /*output strOut1*\

TextOut(strOut2);

(2)以文件中的汉字字符串提取和替换为例:

本实施例从文件名为YOURFILE.C的文件中提取汉字字符串,翻译成英文后在原位置进行替换,以完成英语国家对中国所编写软件的本地化过程。该文件的内容为:

Cstring strOut11;

Cstring strOut12;

Cstring strOut13;

StrOut11=”你好吗”;                               //变量被\\赋值

StrOut12=”小王:\”你们好吗\”。”;

StrOut13=‘这是不一样的’;

TextOut(strOut11);        /*输出第一个变量*\

TextOut(strOut12);

TextOut(strOut13);

对该文件中的汉字字符的处理过程与实施例1中的处理过程类似,不同之处在于:

由于要将该文件中的汉字字符提取出来,因此,在定义提取规则时,将图1所示根节点、提取节点1和2的提取条件定义为汉字,规则的其余部分与图1所示的实施例1中定义的规则一致。

处理文件的流程与实施例1一致,不同之处仅在于结果文件的文件名为YOURFILE.C。经过处理后的文件YOURFILE.C中的汉字字符串被替换为英文字符,其内容为:

Cstring strOut11;

Cstring strOut12;

Cstring strOut13;

StrOut11=”How are you”;                     //Variable is\\evaluated

StrOut12=”xiaowang:\”How are you\”。”;

StrOut13=‘It is not same’;

TextOut(strOut11);                             /*输出第一个变量*\

TextOut(strOut12);

TextOut(strOut13);

在DELPHI语言本地化的过程中,会遇到转义标识符与特征标识符相同的特殊情况,以下面一段DELPHI语句为例:

strInfo:=‘It isn“t same’;

参见图4所示,在该例中,提取节点1的特征标识符为“‘”,转义标识符也为“‘”,与特征标识符相同。当扫描到该语句时,遇到特征标识符“‘”,进入提取模式顺序扫描并记录字符,扫描到字符n后,遇到单引号“‘”,按照最大匹配原则将该单引号和其后的单引号联系看待,即:将这两个单引号中的第一个看作转义标识符,此时第二个单引号由于该转义标识符的作用成为字符资源被处理,这样避免了在转义标识符与开始或结束特征标识符形式一致时,误将转义标识符当作开始或结束特征标识符的情况;最终,此模式下的提取结果为:It isn’t same;在提取模式工作过程中,始终按照最大匹配原则寻找该节点规定的结束标识符。对于DELPHI语句的其它处理方法与C语言的两个例子的处理方法相同。

通过将提取规则中提取条件定义为不同语言,本发明还可实现其它语言的本地化工作,例如在中国将来自俄罗斯的文件中的俄文提取替换为中文,或在德国将来自日本的文件中的日文替换为德文等等,其处理方法与上述两个实施例基本一致,限于篇幅,此处不再赘述。

可见,在以上实施例中,用户根据不同的语言本地化需要以提取树的形式定义不同的提取规则,在对文件的扫描过程中,当以最大匹配原则扫描到提取树中任何一个提取点的开始标识符时,以该节点规定的方式操作,直至扫描到该节点的结束标识符;在扫描过程中,利用转义标识符有效的避免了与开始或结束标识符相同的字符资源被误作为开始或结束标识符;在扫描过程中,将提取得到字符及其位置标识一起生成结果文件,结果文件被备份并被翻译,形成翻译对照关系,根据此对照关系在原文件中进行字符替换。

该方法实现了按照定义规则以不同模式扫描文件;在替换过程中,采用位置标识结合完全匹配机制,保证了替换的准确性;在翻译结束后将翻译结果以文件形式输出,以维护数据字典。本发明实现起来高效、可靠,能够很好的达到用户的需求。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号