首页> 中国专利> 替换代码中文字符串的方法以及计算机可读存储介质

替换代码中文字符串的方法以及计算机可读存储介质

摘要

替换代码中文字符串的方法以及计算机可读存储介质,该方法包括:根据代码的文法文件对代码进行词法分析与语法分析,提取出代码中的字符串并从中筛选出中文字符串;判断是否已存在代码的字符串数据文件,若是,则将筛选出的各中文字符串及其所述路径与已存在的字符串数据文件中的对应内容进行差异比较,根据比较结果更新所述字符串数据文件,以得到待翻译数据文件;若否,则导出各中文字符串及其所述路径,形成待翻译数据文件并进行翻译;读取翻译后的替换数据文件,以替换数据文件中的翻译结果替换对应路径下的中文字符串。计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时可实现前述方法的步骤。

著录项

  • 公开/公告号CN107329957A

    专利类型发明专利

  • 公开/公告日2017-11-07

    原文格式PDF

  • 申请/专利权人 网易(杭州)网络有限公司;

    申请/专利号CN201710353562.8

  • 发明设计人 陈立伟;

    申请日2017-05-18

  • 分类号G06F17/28(20060101);G06F17/22(20060101);G06F17/27(20060101);

  • 代理机构44223 深圳新创友知识产权代理有限公司;

  • 代理人徐罗艳

  • 地址 310000 浙江省杭州市滨江区长河街道网商路599号4幢7层

  • 入库时间 2023-06-19 03:42:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-18

    授权

    授权

  • 2017-12-01

    实质审查的生效 IPC(主分类):G06F17/28 申请日:20170518

    实质审查的生效

  • 2017-11-07

    公开

    公开

说明书

技术领域

本发明属于计算机技术领域,具体涉及一种替换代码中文字符串的方法以及一种计算机可读存储介质。

背景技术

在游戏项目的国际化发行工作中,往往需要对游戏中出现的中文字符串进行翻译替换操作,目前常见的翻译替换方式有以下几种,但各自都存在一定的局限性:

1)代码配置表方式:将游戏项目代码的所有字符串数据都设计成配置表的形式,代码中的字符串数据使用的都是配置表索引标识,而不是具体的文本,然后运行时就可以根据不同的语言读取不同的翻译配置表进行解析并显示。这种方式虽然灵活,但是对于代码框架已固定且并非按照这种代码配置表方式来设计的游戏项目来说,不仅代码改动大,而且需要花费大量的人工去进行修改。

2)映射表格方式:使用映射表格形式记录代码中所有的中文字符串,并进行多语言翻译,然后在代码中所有对应出现的位置都增加外层函数处理,在代码运行时将中文字符串替换成映射表中对应翻译的海外语言并显示。这种方式同样需要花费大量的人工去进行操作修改,而且不够灵活,代码中有新增中文字符串的时候,都需要手动更新映射表格数据。

3)代码完全替换方式:将代码中所有的中文字符串都直接手动改写为对应的海外语言。这种方式效率低,而且需要维护多个海外版本的代码分支,同时大量的人工操作也极易导致数据遗漏与出错。

上述第1)种方式对于代码框架已固定的旧项目来说,修改的成本较大,性价比不高;而后两种方式,在代码替换工作这块都会带来大量的人工操作成本,同时由于代码的中文字符串存在重复的情况,也会影响到翻译工作的效率,而且随着代码中文字符串的持续增加,代码的维护成本也会越来越高。

发明内容

本发明的主要目的在于提供一种替换代码中文字符串的方法,以降低代码中文字符串翻译替换过程中的人工操作成本以及代码维护成本,同时提高整个翻译替换过程的效率以及准确率。

本发明为达上述目的提供以下技术方案:

一种替换代码中文字符串的方法,包括以下步骤:

S1、根据代码的文法文件对代码进行词法分析与语法分析,以提取出代码中的所有字符串;

S2、从提取的所有字符串中筛选出中文字符串;

S3、判断一预定系统位置下是否存在所述代码的字符串数据文件,若是,则执行步骤S5;若否,则执行步骤S4;其中,所述字符串数据文件包括中文字符串及其对应的在代码中的路径以及中文字符串对应的翻译结果;

S4、导出各中文字符串及其所述路径,形成待翻译数据文件;

S5、将筛选出的各中文字符串及其所述路径与已存在的字符串数据文件中的对应内容进行差异比较,根据比较结果更新所述字符串数据文件,以得到待翻译数据文件;

S6、读取一替换数据文件,以所述替换数据文件中的翻译结果替换对应的所述路径下的中文字符串,其中,所述替换数据文件由所述待翻译数据文件经中文字符串翻译操作后生成。

本发明提供的上述替换代码中文字符串的方法,基于对代码文法文件的词法与语法分析,匹配代码中的字符串写法(即由单引号、双引号、双重中括号等方式撰写的字符串格式),通过机器化的分析定位,能够全面、准确地定位到代码文件中的所有字符串,可有效避免其它人工定位查找方式带来的遗漏问题;可通过例如java实现方式以自动读取翻译后的数据文件,根据翻译结果所对应的路径将翻译结果自动替换掉对应位置的中文字符串,很好地避免了人工替换过程可能出现的数据出错问题,同时也避免了采用外层函数、配置表等方式所存在的代码不断更新过程中维护成本高的问题,本发明中,当中文字符串有修改时,只需要根据修改版本的代码中的中文字符串更新数据文件,交由翻译人员或通过软件进行更新翻译,后续自动读取翻译后的文本,同样地根据路径来进行自动替换,可避免由于代码文件的持续开发和更新导致的无关冗余数据的产生,可维护性高;从而使得本发明的方法不论是对首次进行翻译的代码而言还是对旧代码进行更新后的翻译而言,只要得到翻译完成的表格数据,即可执行自动读取以及自动替换,整个过程不需要对项目代码进行任何修改操作,也不需要维护多个海外版本的代码分支,适用各种新旧项目的翻译需求,能够极大地降低翻译过程中的人工操作成本和避免遗漏出错。

更进一步地,所述方法还包括对步骤S2筛选出的中文字符串进行去重处理。本方案可以避免对重复的中文字符串进行翻译,以保证每个中文字符串翻译时的唯一性,减少翻译工作量、提高翻译效率。

更进一步地,所述去重处理具体包括:检测每个中文字符串是否有重复项,若有,则多个重复的中文字符串只保留一个;其中,保留的该中文字符串对应于多个路径,所述多个路径包括所述多个重复的中文字符串的所述路径。在本方案中,重复的中文字符串合并为一项进行翻译即重复的中文字符串在翻译时只需翻译一次,而执行合并的这些重复的中文字符串所对应的多个路径则予以原样保留,以在后续替换时以一个翻译文本替换多个路径下的中文字符串,避免了很多重复性的工作。

更进一步地,在进行步骤S1之前,还包括:对代码文件目录进行过滤,以去除不需要进行翻译替换的代码文件,得到过滤后的代码。过滤以去除与游戏无关的代码文件,这些文件不需要进行翻译替换,以提高翻译效率。

更进一步地,步骤S1具体包括:通过预先生成的词法分析器和语法分析器,根据所述文法文件对代码进行所述词法分析和所述语法分析,生成抽象语法树,再根据字符串的语法规则,提取出代码中的所有字符串。

更进一步地,步骤S2具体包括:根据中文的编码制定对应的正则表达式来匹配判断步骤S1提取的每个字符串是否包含中文,若是,则进行存储,从而筛选出中文字符串。

更进一步地,所述中文的编码为Unicode编码、GB2313编码、GBK编码或GB18030编码。

更进一步地,所述字符串数据文件、所述待翻译数据文件和所述替换数据文件均为包含多个条目的表格,每个条目包含一中文字符串、该中文字符串的所述路径以及对应的至少一翻译文本;在表格中,未翻译过的中文字符串所对应的翻译文本置为空。

更进一步地,在表格中,每行包含一个条目,每个条目包括多列,其中各条目的第一列记录中文字符串、第二列记录第一列中文字符串的所述路径,其余一个列或多个列记录翻译文本,不同语言的翻译文本各处于不同的列。

更进一步地,步骤S5具体包括:

判断步骤S2筛选出的中文字符串相对于所述字符串数据文件中的中文字符串而言,是否有删减及新增;若有删减,则将删减的中文字符串及其对应的内容从所述字符串数据文件中去除;若有新增,则将新增的中文字符串及其对应的所述路径作为新增数据添加到所述字符串数据文件中;若筛选出的某一中文字符串在所述字符串数据文件中存在重复样本,则以存在重复样本的该中文字符串的所述路径去替换所述字符串数据文件中对应的原路径。

本发明另还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法的步骤。

附图说明

图1是替换代码中文字符串的方法中获取待翻译数据的步骤流程;

图2是读取翻译后的数据文件并替换至代码中相应路径的步骤流程。

具体实施方式

下面结合附图和优选的实施方式对本发明作进一步说明。

本发明的具体实施方式提供一种替换代码中文字符串的方法(下述简称该方法或本发明的方法),通过计算机程序指令来实现,可对代码文件进行自动化与标准化的替换翻译操作,降低游戏项目国际化发行翻译过程中的人工操作成本,同时提高翻译工作效率与准确性,以及降低后续的代码维护成本。本发明还提供一种存储有计算机程序的计算机可读存储介质,该存储介质上存储的该计算机程序在例如电脑等具有处理器的计算机产品上运行时可以实现前述方法的各步骤,使计算机实现前述方法所能实现的功能。下面详细说明替换代码中文字符串的方法的步骤。

替换代码中文字符串的方法,包括以下步骤S1至S6:

S1、读取代码的文法文件,根据该文法文件对该代码进行词法分析与语法分析,以提取出代码中的所有字符串。此处的文法文件是事先编写好的,编写代码的文法文件可采用现有技术手段,因此不进行赘述,编写的文法文件用于进行词法与语法的分析。

S2、从提取的所有字符串中筛选出中文字符串。例如可以根据中文编码(比如中文的Unicode编码、GB2313编码、GBK编码或GB18030编码等)制定对应的正则表达式来匹配判断步骤S1提取的每个字符串是否包含中文,若包含则进行存储,从而就从中筛选出中文字符串。

S3、判断一预定系统位置下是否存在所述代码的字符串数据文件,若是,则执行步骤S5;若否,则执行步骤S4;其中,所述字符串数据文件包括中文字符串及其对应的在代码中的路径以及中文字符串对应的翻译结果。所述预定系统位置是指实现该方法的计算机程序当前所运行的系统路径或计算机程序运行之前配置参数时输入的字符串数据文件所存放的系统路径。应当说明,此处的所述系统路径应当与中文字符串在代码中出现的路径区分,不应混淆。

S4、导出各中文字符串及其所述路径,形成待翻译数据文件。例如,此处的文件可以是表格文件,例如Excel表格或CSV表格或其它形式表格,具体的文件形式不构成对本发明的限制,只要在该待翻译的数据文件中,以对应形式记录有中文字符串及其在代码中的路径,均在保护范围内。

S5、将筛选出的各中文字符串及其所述路径与已存在的字符串数据文件中的对应内容进行差异比较,根据比较结果更新所述字符串数据文件,以得到待翻译数据文件。其中所述待翻译数据文件用于供翻译人员对其中的中文字符串进行翻译,以得到包含翻译结果的替换数据文件;另一些实施例中,也可以采用翻译平台进行翻译,或者直接在实现本发明方法的计算机程序中嵌入用于翻译中文字符串的程序代码,实现一体化自动翻译。优选地,所述待翻译数据文件和所述替换数据文件的形式与所述字符串数据文件的形式相同。

S6、读取所述替换数据文件,以所述替换数据文件中的翻译结果替换对应的所述路径下的中文字符串。

从而,通过执行计算机程序指令自动地、标准化地实现本发明的步骤。

本发明的方法在实现过程中包括两大流程(可定义为前期流程和后期流程),先是提取需要翻译的中文字符串以提供给翻译工作者的流程,即图1所示例的流程;再者是将翻译结果替换代码中对应位置处的中文字符串的流程,即图2所示例的流程。

本发明的方法适用于对多种代码进行其中的中文字符串替换翻译,下面以Lua代码为例进行说明。在游戏项目的技术人员拿到一游戏的Lua代码文件目录,需要进行其中的中文字符串的翻译和替换工作时,即可通过本发明的方法来实现。具体的过程详述如下:

参考图1,前期流程可包括以下步骤01至05:

步骤01、对该Lua代码文件目录进行过滤,去除不需要进行翻译替换的代码文件,再对经过过滤的Lua代码文件编写其文法文件(可采用现有的文法文件进行修改即可);

步骤02、通过事先生成的语法分析器和词法分析器,并根据上述产生的文法文件对Lua代码文件进行语法与词法分析,从而生成该Lua代码文件的抽象语法树;

步骤03、根据字符串的语法规则,从抽象语法树中提取出该Lua代码所包含的所有字符串。在代码中,字符串一般都有特定的写法,可明显区分于非字符串(例如函数等),比如字符串是由单引号、双引号、双重中括号等方式标记,基于此,可自动地定位到所有字符串,同时也能获知各字符串在代码中出现的位置(即所述路径);

步骤04、根据中文的Unicode编码制定对应的正则表达式来匹配判断步骤03提取的每个字符串是否包含中文,如果包含,则该字符串即为需要翻译替换的中文字符串,将每个中文字符串及其对应的路径进行存储,从而筛选出所述Lua代码中所有需要翻译替换的中文字符串;

步骤05、判断事先输入的系统位置(例如在运行本方法的程序代码之前需要进行参数配置,此时可输入一个或多个计算机系统文件位置,这些位置可以是本方法的程序代码运行的位置,也可以是其它可能存放有关数据文件的位置,其形式例如C:ProgramFilesIntel)下是否存在该Lua代码的字符串数据文件,所述字符串数据文件例如是Excel表格,在该表格中,包括很多行数据,每一行可看成一个条目,每个条目对应地记录有一个中文字符串及其相关内容(包括路径和翻译文本),例如下表所示:

表1

上述表1即是字符串数据文件的一种具体示例,表格中每一行代表一个数据条目,每个条目记录一个中文字符串及其相关内容,表格的每一列记录同类内容。例如,第一列各行分别记录中文字符串“死亡”、“复活”、“进攻”等,第二列各行分别记录第一列中文字符串在代码中的路径,第三列各行分别记录第一列中文字符串的翻译文本,使得每一行分别记录的是不同中文字符串及其各自的相关数据内容。表格中还可通过第四列、第五列……记录不同语言翻译文本。

在该步骤05中,如果经过判断发现已存在Lua代码的字符串数据文件,则自动读取该字符串数据文件(如果是多个则读取修改日期最新的那个),然后将筛选出的中文字符串及其路径与读取的该字符串数据文件进行以下比对操作,以更新该字符串数据文件使之成为待翻译数据文件:

判断筛选出的中文字符串相对于所述字符串数据文件中的中文字符串而言,是否有删减及新增;若有删减,则将删减的中文字符串及其对应的内容从所述字符串数据文件中去除;若有新增,则将新增的中文字符串及其对应的所述路径作为新增数据添加到所述字符串数据文件中;若筛选出的某一中文字符串在所述字符串数据文件中存在重复样本,则以存在重复样本的该中文字符串的所述路径去替换所述重复样本的所述路径。举例来说,假设上述表1是读取到的已存在的字符串数据文件,而筛选出的中文字符串包括“死亡”、“进攻”、“防守”,对应的路径分别为“路径4、路径9”、“路径3”、“路径5”,经过上述比对操作发现:“复活”已删减,则将表1中“复活”所在的一行数据全部删除;“防守”为新增的,则将“防守”及其对应路径“路径5”作为新增数据添加到表1中,同时其翻译列置为空;相同的字符串“死亡”所对应的路径有变化,则采用新的路径“路径4、路径9”去替换表1中“死亡”所对应的“路径1”。从而,执行完更新得到待翻译数据文件表2:

表2

死亡路径4、路径9die其它外语翻译文本进攻路径3attack其它外语翻译文本防守路径5

表2所示例的待翻译数据文件中,仅需对“防守”进行翻译,从而节省了大量的翻译工作。

在该步骤05中,如果经过判断发现不存在Lua代码的字符串数据文件,则优选地先对筛选出的中文字符串进行去重处理,以保证每个中文字符串翻译时的唯一性,避免一个中文字符串进行多次翻译。在一种具体的实施例中,所述去重处理包括:检测每个中文字符串是否有重复项,若有,则多个重复的中文字符串只保留一个;其中,保留的该中文字符串对应于多个路径,所述多个路径包括所述多个重复的中文字符串的所述路径。例如,在筛选出的中文字符串中存在两个“防守”,路径分别是“路径7”和“路径8”,则将两个“防守”条目进行合并,只保留一个“防守”,但所保留的“防守”对应两个路径“路径7”和“路径8”,从而在翻译时只需要翻译一次。

经过上述的去重处理后,再将中文字符串及其对应的路径存储至一文件例如表格中,形成一个全新的待翻译数据文件。至此,所述前期流程基本结束,待翻译人员对待翻译数据文件中翻译文本列仍为空的中文字符串进行翻译或通过翻译软件等手段自动对待翻译数据文件中翻译文本列仍为空的中文字符串进行翻译,以得到翻译完成的可用于替换Lua代码中的中文字符串的替换数据文件,再执行所述后期流程。

所述后期流程的流程步骤可参考图2,包括以下步骤06至08:

步骤06、自动读取翻译后的替换数据文件,本发明方法可用例如Java来实现,其可自动读取一些文件例如Excel、CSV等;

步骤07、获取Lua代码文件目录并定位需要替换的位置;

步骤08、用替换数据文件中的翻译文本替换对应路径下的中文字符串;接前述的例子,假设读取的替换数据文件是对表2进行翻译后得到的,则本方法通过设计一可实现替换功能的函数,此时调用该函数实现用表2中第三列的内容(即翻译文本)替换第二列中所示的路径下的内容(即中文字符串)。由于替换操作通过一函数即可实现,针对表2是基于已存在的字符串数据文件更新而来的情况,既可全部进行替换(这样也很快捷),也可以只替换更新过的部分。

至此,所述后期流程基本完成,输出完成替换的Lua代码文件即可。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号