首页> 中国专利> 基于增量的前端多语言国际化翻译方法及装置

基于增量的前端多语言国际化翻译方法及装置

摘要

本发明提供一种基于增量的前端多语言国际化翻译方法及装置,涉及翻译技术,通过根据预设规则对翻译库中的翻译节点生成ID标识,将所述ID标识回填到代码库中,其中,每个所述翻译节点对应的所述ID标识不同;接收用户输入的待翻译文本,基于所述待翻译文本和所述ID标识,生成翻译结果,其中,所述预设规则包括:获取抽取所述翻译节点的时间戳以及自增序列,基于所述时间戳和所述自增序列生成所述ID标识的技术方案,自动生成并回填ID标识的方案可以让开发者不必关注ID标识的维护,也不会因为没有填写defaultMessage而产生错误,同时保证了即使其它字段发生了修改也不会影响最终生成结果。

著录项

  • 公开/公告号CN113111669A

    专利类型发明专利

  • 公开/公告日2021-07-13

    原文格式PDF

  • 申请/专利权人 图灵人工智能研究院(南京)有限公司;

    申请/专利号CN202110661676.5

  • 发明设计人 郭志强;彭林伟;李强;龙利民;

    申请日2021-06-15

  • 分类号G06F40/58(20200101);

  • 代理机构32320 南京禾易知识产权代理有限公司;

  • 代理人张松云

  • 地址 210046 江苏省南京市栖霞区马群街道紫东路2号紫东国际创意园C21栋六楼

  • 入库时间 2023-06-19 11:49:09

说明书

技术领域

本发明涉及翻译技术,尤其涉及一种基于增量的前端多语言国际化翻译方法及装置。

背景技术

在国际化Web应用中,切换到不同的语言页面内容显示不同的文字是非常常见的需求,我们称之为 i18n 国际化(internationalization)。前端对于国际化主要的解决方案就是映射表,使用 key-value 的形式存储不同国家的映射表,然后代码中根据指定的key 从映射表中获取对应的 value 值用于显示。在常见的后端系统中如果需要做国际化也是采用类似的方案,如 Java Spring 项目中使用 .properties 文件存储后端所有需要进行国际化的 key-value 值。当需要添加别国语言时只需要复制一份当前已有的文件并进行翻译再重命名即可。

当应用体积大到一定程度时,这样的 key-value 表会非常大,很多无序的 key会给维护带来很大的困扰。为了解决这个问题一般系统采用命名空间的方式来做切分,如[common.btn.ok]=确认 [page.user.title]=用户列表。传统的根据命名空间的方案需要手动维护 key-value 列表,且为了维护方便需要按照一定的顺序或者规则来排列,所以每次新增或编辑时都需要做全文检索,而且多人维护同一份文件有很大概率产生代码冲突,需要花费不少时间来解决冲突。另外当需要新增或修改已有翻译的 key 时需要同时更新多个 key-value 配置文件,给维护带来很大麻烦。现有技术中通过利用React-Intl 自动抽取并计算 hash 的方式让开发人员免于统一、手动维护映射表的过程,将代码分配到各自的业务中 。

然而,在 React-Intl 的定义中,如果某个节点定义了 ID 则认为是用户指定的key 值,如果没有 ID 则根据 defaultMessage 进行hash 得到,否则将忽略该翻译节点,因而如果开发者忘记设置 defaultMessage 将会产生一个错误。

发明内容

本发明实施例提供一种基于增量的前端多语言国际化翻译方法及装置,不会因为没有填写 defaultMessage 而忽略该翻译节点,避免产生错误。

本发明实施例的第一方面,提供一种基于增量的前端多语言国际化翻译方法,包括:

根据预设规则对翻译库中的翻译节点生成ID标识,将所述ID标识回填到代码库中,其中,每个所述翻译节点对应的所述ID标识不同;

接收用户输入的待翻译文本,基于所述待翻译文本和所述ID标识,生成翻译结果;

其中,所述预设规则包括:

获取抽取所述翻译节点的时间戳以及自增序列,基于所述时间戳和所述自增序列生成所述ID标识。

可选地,在第一方面的一种可能实现方式中,在所述根据预设规则对翻译库中的翻译节点生成ID标识之前,还包括:

对翻译库中的所述翻译节点进行抽取。

可选地,在第一方面的一种可能实现方式中,所述对翻译库中的所述翻译节点进行抽取,包括:

若抽取到的所述翻译节点有所述ID标识,跳过所述翻译节点并执行下次抽取。

可选地,在第一方面的一种可能实现方式中,在所述对翻译库中的所述翻译节点进行抽取之前,还包括:

对所述代码库进行检测,确定所述代码库内的代码为最新代码。

可选地,在第一方面的一种可能实现方式中,所述基于所述时间戳和所述自增序列生成所述ID标识,包括:

以所述时间戳在前,所述自增序列在后,生成所述ID标识。

可选地,在第一方面的一种可能实现方式中,所述预设规则还包括:

基于group 分组字段对所述翻译节点进行组隔离,获取多个分组;

其中,不同所述分组的key 值不同。

可选地,在第一方面的一种可能实现方式中,还包括:

获取用户的上传内容,基于所述上传内容和所述翻译库中的翻译节点确定所述上传内容中的新增节点和移除节点;

基于所述新增节点和所述移除节点,对服务器的存储数据进行增量更新。

可选地,在第一方面的一种可能实现方式中,在生成翻译结果之后,还包括:

将所述翻译结果发送给用户端展示。

可选地,在第一方面的一种可能实现方式中,在所述生成翻译结果之后,还包括:

接收用户上传的反馈文本,将所述反馈文本发送给开发者,所述反馈文本包括新增文本或纠错文本;

接收所述开发者的确认指令,基于所述确认指令和所述反馈文本对所述翻译结果进行更新。

本发明实施例的第二方面,提供一种基于增量的前端多语言国际化翻译装置,包括:

ID模块,用于根据预设规则对翻译库中的翻译节点生成ID标识,将所述ID标识回填到代码库中,其中,每个所述翻译节点对应的所述ID标识不同;

翻译模块,用于接收用户输入的待翻译文本,基于所述待翻译文本和所述ID标识,生成翻译结果;

其中,所述预设规则包括:

获取抽取所述翻译节点的时间戳以及自增序列,基于所述时间戳和所述自增序列生成所述ID标识。

本发明实施例的第三方面,提供一种基于增量的前端多语言国际化翻译设备,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行本发明第一方面及第一方面各种可能涉及的所述方法。

本发明实施例的第四方面,提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现本发明第一方面及第一方面各种可能涉及的所述方法。

本发明提供的一种基于增量的前端多语言国际化翻译方法及装置,基于自动生成并回填ID标识的方案可以让开发者不必关注ID标识的维护,也不会因为没有填写defaultMessage 而产生错误,同时保证了即使其它字段发生了修改也不会影响最终生成结果。

附图说明

图1是本发明实施例提供的一种基于增量的前端多语言国际化翻译方法的流程示意图;

图2是本发明实施例提供的一种翻译界面示意图;

图3是本发明实施例提供的一种基于增量的前端多语言国际化翻译装置的结构示意图;

图4是本发明实施例提供的一种基于增量的前端多语言国际化翻译设备的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含A、B和C”、“包含A、B、C”是指A、B、C三者都包含,“包含A、B或C”是指包含A、B、C三者之一,“包含A、B和/或C”是指包含A、B、C三者中任1个或任2个或3个。

应当理解,在本发明中,“与A对应的B”、“与A相对应的B”、“A与B相对应”或者“B与A相对应”,表示B与A相关联,根据A可以确定B。根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。A与B的匹配,是A与B的相似度大于或等于预设的阈值。

取决于语境,如在此所使用的“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

参见图1,是本发明实施例提供的一种基于增量的前端多语言国际化翻译方法的流程示意图,图1所示方法的执行主体可以是软件和/或硬件装置。本申请的执行主体可以包括但不限于以下中的至少一个:用户设备、网络设备等。其中,用户设备可以包括但不限于计算机、智能手机、个人数字助理(Personal Digital Assistant,简称:PDA)及上述提及的电子设备等。网络设备可以包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机组成的一个超级虚拟计算机。本实施例对此不做限制。包括步骤S101至步骤S103,具体如下:

S101,根据预设规则对翻译库中的翻译节点生成ID标识,将所述ID标识回填到代码库中,其中,每个所述翻译节点对应的所述ID标识不同;

具体地,本步骤是为了对每个翻译节点设定一个ID标识,且每个所述翻译节点的ID标识都不一样,从而保证每次抽取时同一个翻译节点生成的 key值相同,且相同的 key值意味着可以复用之前的翻译内容,避免了可能因为 defaultMessage 发生修改而导致需要重新翻译的可能。

在实际应用中,翻译人员打开翻译网站,根据页面提示找到所有待翻译的内容进行翻译,翻译完成后点击提交会将此次翻译的内容打包后自动创建一个 Git 仓库的 PullRequest 并通知开发者,开发者合并代码后重新打包编辑就得到了翻译完成后的内容了。

其中,所述预设规则包括获取抽取所述翻译节点的时间戳以及自增序列,基于所述时间戳和所述自增序列生成所述ID标识。

可以理解的是,为保证每个翻译节点生成的ID标识唯一,本方案采用时间戳和自增序列的组合方案来生成,这样即使多个开发人员的机器时间产生冲突(很低的概率会产生相同的时间戳)也可以通过自增序列来保证唯一性。

其中,自增序列例如可以是取自时间戳,在同一秒内按序列自增长,新秒重新计算,自增序列可以是三位,也可以是四位,例如可以是001,或0001,然后结合时间戳可以保证ID标识的唯一性。

在实际应用中,可以以所述时间戳在前,所述自增序列在后,生成所述ID标识,例如可以是时间戳+自增序列的组合方案生成唯一ID标识。

需要说明的是,在对翻译节点设定ID标识之前,需要先将翻译节点从翻译库中抽取出来,然后才能针对性的设定ID标识。因此,在根据预设规则对翻译库中的翻译节点生成ID标识之前,还需要对翻译库中的所述翻译节点进行抽取。

其中,抽取的可以是利用抽取工具进行抽取,例如翻译库中有1000个单词,那么抽取工具需要将1000个单词一一抽取出来,然后对应的自动生成ID标识,抽取工具将抽取后的多国语言文件打包上传到翻译服务器。

另外,若抽取到的所述翻译节点有所述ID标识,跳过所述翻译节点并执行下次抽取。

可以理解的是,为保证每次抽取时同一个翻译节点生成的 key 一致,我们需要将上一步生成的 ID 写回到翻译节点的代码中,这样下次抽取时发现该节点有 ID 标识的则直接跳过计算,直接使用翻译节点上的 ID 标识作为该翻译节点的 key 值。

在实际应用中,在所述对翻译库中的所述翻译节点进行抽取之前,还包括对所述代码库进行检测,确定所述代码库内的代码为最新代码。

可以理解的是,在抽取前抽取工具会对本地代码做一次检测,判断是否是最新的代码,同时提交的信息中除了 json 文件还有本地提交的 Git commit 值,服务端会根据该 commit 值与 Git 仓库中最新的 commit 值进行对比从而保证当前提交的翻译内容是最新的,从而避免因为代码不是最新的而丢失很多翻译内容。

S102,接收用户输入的待翻译文本,基于所述待翻译文本和所述ID标识,生成翻译结果;

可以理解的是,由于每个翻译节点对应的ID标识不同,在获取到用户输入的翻译节点后,获取到对应的ID标识,即可生成翻译结果,不会因为没有填写 defaultMessage 而忽略该翻译节点,避免产生错误。

S103,将所述翻译结果发送给用户端展示。

可以理解的是,翻译结果可以呈现给用户端,在其他实施例中,用户也可以查看翻译结果是否正确,或者是否有未翻译的部分,与开发者进行相应的反馈。

在现有技术中,如果2个翻译节点的 defaultMessage 设置为相同,那么 React-Intl生成的结果中将只存在一份,这是由于 hash 结果导致的。当2个看似相同的文案如果在不同的情景下要求翻译成不同的内容时则无法实现需求,为了解决上述技术问题,本方案在上述实施例的基础上:

基于group 分组字段对所述翻译节点进行组隔离,获取多个分组,其中,不同所述分组的key 值不同。

可以理解的是,本方案在翻译节点上添加了新的 group 分组字段,表示相同的defaultMessage 节点分配到相同的组并使用同一个翻译 key,如 group=”弹框”,则所有相同 defaultMessage 的节点将使用同一个 key,而另一组相同的 defaultMessage 使用的是 group=”确认”,则会使用另一个 key 从而进行组隔离,默认 group 没有参数时将使用全局统一的默认分组,从而满足某些场景下相同的 defaultMessage 使用同样的翻译的需求,同时又满足在不同的情景下要求翻译成不同的内容的需求。

另外,为了实现对服务器中数据的增量更新,在上述实施例的基础上,获取用户的上传内容,基于所述上传内容和所述翻译库中的翻译节点确定所述上传内容中的新增节点和移除节点,基于所述新增节点和所述移除节点,对服务器的存储数据进行增量更新。

可以理解的是,当用户上传内容中某个 key 在服务器上不存在时则判断为新增节点,当某个服务器的内容上的 key 在上传的内容中不存在时则判断为移除节点,服务端收集所有的新增节点和移除节点并更新服务器上存储的数据内容从而实现增量更新。

示例性的,服务器的内容为abc,用户上传的内容为bcd,而 d在服务器的内容中不存在,那么d就是新增节点,a在上传的内容中不存在则判断为移除节点。

需要说明的是,不存在更新节点,如果需要更新节点,应该移除代码中翻译节点上的ID标识从而重新生成ID标识。

此外,翻译结果发送给用户端展示之后,参见图2,用户如果发现翻译结果中有翻译错误或者有文本未被翻译,提供一种方式与开发者进行交互,具体如下:

接收用户上传的反馈文本,将所述反馈文本发送给开发者,所述反馈文本包括新增文本或纠错文本;

接收所述开发者的确认指令,基于所述确认指令和所述反馈文本对所述翻译结果进行更新。

可以理解的是,纠错文本可以是用户对翻译结果进行纠错输入的文本,例如图3中的针对“用户登录-用户名或密码错误”的翻译错误,输入的纠错文本“用户名或登录密码错误”,新增文本可以是用户对未翻译的文本输入的文本,例如图3中的针对未翻译的“NEWS”输入的新增文本“新闻”。

当翻译人员翻译完成后点击“提交”按钮,服务器会将全量的翻译内容导出为多个json 文件并由翻译机器人自动提交一个 Git Pull Request 同时发送一条推送消息给开发者。开发者收到消息后确认服务器自动提交的内容后合并到代码中,在完成验证和测试后重新部署即可看到最新的翻译文案了。如果开发者认为本次提交的翻译内容有误可以驳回本次提交,通知翻译人员进行更新后重新执行一遍翻译流程。

参见图3,是本发明实施例提供的一种基于增量的前端多语言国际化翻译装置的结构示意图,该基于增量的前端多语言国际化翻译装置30包括:

ID模块31,用于根据预设规则对翻译库中的翻译节点生成ID标识,将所述ID标识回填到代码库中,其中,每个所述翻译节点对应的所述ID标识不同;

翻译模块32,用于接收用户输入的待翻译文本,基于所述待翻译文本和所述ID标识,生成翻译结果;

其中,所述预设规则包括:

获取抽取所述翻译节点的时间戳以及自增序列,基于所述时间戳和所述自增序列生成所述ID标识。

图4所示实施例的装置对应地可用于执行图1所示方法实施例中的步骤,其实现原理和技术效果类似,此处不再赘述。

参见图4,是本发明实施例提供的一种基于增量的前端多语言国际化翻译设备的硬件结构示意图,该基于增量的前端多语言国际化翻译设备40包括:处理器41、存储器42和计算机程序;其中

存储器42,用于存储所述计算机程序,该存储器还可以是闪存(flash)。所述计算机程序例如是实现上述方法的应用程序、功能模块等。

处理器41,用于执行所述存储器存储的计算机程序,以实现上述方法中设备执行的各个步骤。具体可以参见前面方法实施例中的相关描述。

可选地,存储器42既可以是独立的,也可以跟处理器41集成在一起。

当所述存储器42是独立于处理器41之外的器件时,所述设备还可以包括:

总线43,用于连接所述存储器42和处理器41。

本发明还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。

其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(ApplicationSpecific Integrated Circuits,简称:ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。

在上述设备的实施例中,应理解,处理器可以是中央处理单元(英文:CentralProcessing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:DigitalSignal Processor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号