源代码的多语言化方法及系统的制作方法

xiaoxiao2020-10-23  17

源代码的多语言化方法及系统的制作方法
【技术领域】
[0001] 本发明涉及源代码语言版本修改技术领域,特别是涉及源代码的多语言化方法及 系统。
【背景技术】
[0002] 随着电子设备的智能化和普及化,各种电子设备上的应用程序也越来越多。不同 国家和地区的人通过同一款应用程序(如Facebook)进行交流的情况也越来越多。但由于 不同国家和地区所使用的语言不尽相同,因此软件商还需要提供多种不同语言版本的应用 程序供不同用户使用。尤其是在该国已经比较成熟和知名的软件,希望进行全球化销售时, 软件厂商将面临着一个多语言化的难题,要么重新编写代码,要么对原来的源代码进行多 语言化的改造。
[0003] 现有的提供具有多种不同语言版本的应用程序的方法如下:
[0004] 在源代码编写过程中,需要输出文本串时,使用中间函数实现多语言版本扩展。该 中间函数需要首先获取当前语言类型(如中文),然后根据当前语言类型获取相应的语言文 件(多语言库),从语言文件中提取匹配的文本串(如日文)以进行显示。
[0005] 可见,上述方法需要编程技术人员在编程的时候就写入中间函数来获得文本串并 进行显示,中间函数的写入降低了数据的读取效率,同时由于需要编程技术人员掌握中间 函数并在编程过程中每遇到文本串就使用该中间函数,也造成了编写过程的缓慢和出错率 高。大多数软件开始创建时,并不一定按照多语言化的长远需求进行编写,因此后期再进 行多语言化时,需要编程技术人员学习原来的单语言源代码,然后在原来的单语言源代码 基础上写入中间函数,进行多语言化的改造,这将造成工作量增加,拖延多语言化工作的进 程。

【发明内容】

[0006] 本发明实施例的目的在于提供一种源代码的多语言化方法及系统,以提高对源代 码进行多语言化的工作效率。
[0007] 为达到上述目的,本发明实施例公开了一种源代码的多语言化方法,包括 :
[0008] 获取原始源代码中的原始语言文本串;
[0009] 获取与所述原始语言文本串对应的目标语言文本串;
[0010] 生成对应存储有所述原始语言文本串和至少一个所述目标语言文本串的语言配 置文件;
[0011] 根据所述语言配置文件及所述原始源代码,生成目标语言版本的源代码。
[0012] 优选的,还包括:将所述目标语言版本的源代码编译为所述目标语言版本的应用 程序。
[0013] 优选的,所述获取原始源代码中的原始语言文本串,包括:
[0014] 确定原始源代码中的文本串分隔符;
[0015] 获取所述原始源代码中相互对应的所述文本串分隔符之间的原始语言文本串。
[0016] 优选的,所述确定原始源代码中的文本串分隔符,包括:
[0017] 获得原始源代码的程序语言类型;
[0018] 根据所述程序语言类型,将与所述程序语言类型匹配的文本串分隔符确定为所述 原始源代码中的文本串分隔符。
[0019] 优选的,所述获得原始源代码的程序语言类型,包括:
[0020] 获得用户输入的原始源代码的程序语言类型;
[0021] 或者,对原始源代码的程序语言类型进行识别,获得所述原始源代码的程序语言 类型。
[0022] 优选的,所述获取与所述原始语言文本串对应的目标语言文本串,包括:
[0023] 接收用户对语言类型的第一选择指令;
[0024] 根据所述第一选择指令确定目标语言的类型;
[0025] 将所述原始语言文本串翻译为与所述原始语言文本串对应的目标语言文本串,所 述目标语言文本串的语言类型属于所述目标语言的类型。
[0026] 优选的,所述根据所述语言配置文件及所述原始源代码,生成目标语言版本的源 代码,包括:
[0027] 接收用户对所确定的目标语言类型的第二选择指令;
[0028] 依据所述语言配置文件及所述原始源代码生成与所述第二选择指令对应的目标 语言版本的源代码。
[0029] 优选的,所述依据所述语言配置文件及所述原始源代码生成与所述第二选择指令 对应的目标语言版本的源代码,包括:
[0030] 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关 系,将所述原始源代码中的原始语言文本串替换为与所述第二选择指令对应的目标语言文 本串,生成与所述第二选择指令对应目标语言版本的源代码;
[0031] 或者,获得所述原始源代码的副本,根据所述语言配置文件中原始语言文本串和 至少一个目标语言文本串的对应关系,将所述原始源代码的副本中的原始语言文本串替换 为与所述第二选择指令对应的目标语言文本串,生成与所述第二选择指令对应目标语言版 本的源代码。
[0032] 优选的,所述依据所述语言配置文件及所述原始源代码生成目标语言版本的源代 码,包括:
[0033] 依据所述语言配置文件及所述原始源代码生成与所述第一选择指令对应的目标 语言版本的源代码。
[0034] 优选的,所述依据所述语言配置文件及所述原始源代码生成与所述第一选择指令 对应的目标语言版本的源代码,包括:
[0035] 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关 系,将所述原始源代码中的原始语言文本串替换为所述语言配置文件中与所述原始语言文 本串相对应的目标语言文本串,生成与所述第一选择指令对应目标语言版本的源代码;
[0036] 或者,获得所述原始源代码的副本,根据所述语言配置文件中原始语言文本串和 至少一个目标语言文本串的对应关系,将所述原始源代码的副本中的原始语言文本串替换 为所述语言配置文件中与所述原始语言文本串相对应的目标语言文本串,生成与所述第一 选择指令对应目标语言版本的源代码。
[0037] 优选的,根据所述第一选择指令确定的目标语言的类型为n种,对所述原始语言 文本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种类型目标语言 的n个目标语言文本串,用户通过所述第二选择指令所选择的目标语言的类型为m种,m和 n均为正整数,且n>m,所述获得所述原始源代码的副本,根据所述语言配置文件中原始语 言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本中的原始语言 文本串替换为与所述第二选择指令对应的目标语言文本串,生成与所述第二选择指令对应 目标语言版本的源代码,包括:
[0038] 获得所述原始源代码的m个副本;
[0039] 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关 系,分别将所述原始源代码的m个副本中的原始语言文本串替换为与所述第二选择指令对 应的一种目标语言的目标语言文本串,生成与所述第二选择指令对应的m个目标语言版本 的源代码。
[0040] 优选的,根据所述第一选择指令确定的目标语言的类型为n种,对所述原始语言 文本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种类型目标语言 的n个目标语言文本串,n为正整数,所述获得所述原始源代码的副本,根据所述语言配置 文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本 中的原始语言文本串替换为所述语言配置文件中与所述原始语言文本串相对应的目标语 言文本串,生成与所述第一选择指令对应目标语言版本的源代码,包括 :
[0041] 获得所述原始源代码的n个副本;
[0042] 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关 系,分别将所述原始源代码的n个副本中的原始语言文本串替换为所述语言配置文件中与 所述原始语言文本串相对应的一种目标语言的目标语言文本串,生成与所述第一选择指令 对应的n个目标语言版本的源代码。
[0043] 优选的,在根据所述语言配置文件及所述原始源代码,生成目标语言版本的源代 码后,还包括:
[0044] 判断所述目标语言版本的源代码中是否存在所述原始语言文本串,如果存在,则 输出提示信息以提示用户。
[0045] 优选的,所述输出提示信息以提示用户,包括:
[0046] 获得所述目标语言版本的源代码中存在的所述原始语言文本串的位置信息;
[0047] 将所述位置信息输出给用户。
[0048] 一种源代码的多语言化系统,包括:原始语言文本串获得单元、目标语言文本串获 得单元、文件生成单元和目标语言代码生成单元,
[0049] 所述原始语言文本串获得单元,用于获取原始源代码中的原始语言文本串;
[0050] 所述目标语言文本串获得单元,用于获取与所述原始语言文本串对应的目标语言 文本串;
[0051] 所述文件生成单元,用于生成对应存储有所述原始语言文本串和至少一个所述目 标语言文本串的语言配置文件;
[0052] 所述目标语言代码生成单元,用于根据所述语言配置文件及所述原始源代码生成 目标语言版本的源代码。
[0053] 优选的,还包括:应用程序编译单元,用于将所述目标语言版本的源代码编译为所 述目标语言版本的应用程序。
[0054] 优选的,所述原始语言文本串获得单元,包括:分隔符确定子单元和文本串获得子 单元,
[0055] 所述分隔符确定子单元,用于确定原始源代码中的文本串分隔符;
[0056] 所述文本串获得子单元,用于获取所述原始源代码中相互对应的所述文本串分隔 符之间的原始语言文本串。
[0057] 优选的,所述分隔符确定子单元,包括:语言类型获得子单元和分隔符子单元,
[0058] 所述语言类型获得子单元,用于获得原始源代码的程序语言类型;
[0059] 所述分隔符子单元,用于根据所述程序语言类型,将与所述程序语言类型匹配的 文本串分隔符确定为所述原始源代码中的文本串分隔符。
[0060] 优选的,所述语言类型获得子单元,包括:用户输入子单元或识别子单元,
[0061] 所述用户输入子单元,用于获得用户输入的原始源代码的程序语言类型;
[0062] 所述识别子单元,用于对原始源代码的程序语言类型进行识别,获得所述原始源 代码的程序语言类型。
[0063] 优选的,所述目标语言文本串获得单元,包括:第一指令接收子单元、目标语言确 定子单元和翻译子单元;
[0064] 所述第一指令接收子单元,用于接收用户对语言类型的第一选择指令;
[0065] 所述目标语言确定子单元,用于根据所述第一选择指令确定目标语言的类型;
[0066] 所述翻译子单元,用于将所述原始语言文本串翻译为与所述原始语言文本串对应 的目标语言文本串,所述目标语言文本串的语言类型属于所述目标语言的类型。
[0067] 优选的,所述目标语言代码生成单元,包括:第二指令接收子单元和第一代码生成 子单元;
[0068] 所述第二指令接收子单元,用于接收用户对所确定的目标语言类型的第二选择指 令;
[0069] 所述第一代码生成子单元,用于依据所述语言配置文件及所述原始源代码生成与 所述第二选择指令对应的目标语言版本的源代 码。
[0070] 优选的,所述第一代码生成子单元,包括:第一代码替换子单元或第一副本替换子 单元,
[0071] 所述第一代码替换子单元,用于根据所述语言配置文件中原始语言文本串和至少 一个目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为与所述第 二选择指令对应的目标语言文本串,生成与所述第二选择指令对应目标语言版本的源代 码;
[0072] 所述第一副本替换子单元,用于获得所述原始源代码的副本,根据所述语言配置 文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本 中的原始语言文本串替换为与所述第二选择指令对应的目标语言文本串,生成与所述第二 选择指令对应目标语言版本的源代码。
[0073] 优选的,所述目标语言代码生成单元,用于依据所述语言配置文件及所述原始源 代码生成与所述第一选择指令对应的目标语言版本的源代码。
[0074] 优选的,所述目标语言代码生成单元,包括:第二代码替换子单元或第二副本替换 子单元,
[0075] 所述第二代码替换子单元,用于根据所述语言配置文件中原始语言文本串和至少 一个目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为所述语言 配置文件中与所述原始语言文本串相对应的目标语言文本串,生成与所述第一选择指令对 应目标语言版本的源代码;
[0076] 所述第二副本替换子单元,用于获得所述原始源代码的副本,根据所述语言配置 文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本 中的原始语言文本串替换为所述语言配置文件中与所述原始语言文本串相对应的目标语 言文本串,生成与所述第一选择指令对应目标语言版本的源代码。
[0077] 优选的,根据所述第一选择指令确定的目标语言的类型为n种,对所述原始语言 文本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种类型目标语言 的n个目标语言文本串,用户通过所述第二选择指令所选择的目标语言的类型为m种,m和 n均为正整数,且n>m,所述第一副本替换子单元,包括:第一副本获得模块和第一副本替 换模块,
[0078] 所述第一副本获得模块,用于获得所述原始源代码的m个副本;
[0079] 所述第一副本替换模块,用于根据所述语言配置文件中原始语言文本串和至少一 个目标语言文本串的对应关系,分别将所述原始源代码的m个副本中的原始语言文本串替 换为与所述第二选择指令对应的一种目标语言的目标语言文本串,生成与所述第二选择指 令对应的m个目标语言版本的源代码。
[0080] 优选的,根据所述第一选择指令确定的目标语言的类型为n种,对所述原始语言 文本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种类型目标语言 的n个目标语言文本串,n为正整数,所述第二副本替换子单元,包括:第二副本获得模块和 第二副本替换模块,
[0081] 所述第二副本获得模块,用于获得所述原始源代码的n个副本;
[0082] 所述第二副本替换模块,用于根据所述语言配置文件中原始语言文本串和至少一 个目标语言文本串的对应关系,分别将所述原始源代码的n个副本中的原始语言文本串替 换为所述语言配置文件中与所述原始语言文本串相对应的一种目标语言的目标语言文本 串,生成与所述第一选择指令对应的n个目标语言版本的源代码。
[0083] 优选的,还包括:判断单元和提示单元,
[0084] 所述判断单元,用于在所述目标语言代码生成单元根据所述语言配置文件及所述 原始源代码,生成目标语言版本的源代码后,判断所述目标语言版本的源代码中是否存在 所述原始语言文本串,如果是,则触发所述提示单元;
[0085] 所述提示单元,用于输出提示信息以提示用户。
[0086] 优选的,所述提示单元,包括:位置获得单元和位置输出单元,
[0087] 所述位置获得单元,用于获得所述目标语言版本的源代码中存在的所述原始语言 文本串的位置信息;
[0088] 所述位置输出单元,用于将所述位置信息输出给用户。
[0089] 一种插件,所述插件可被第一应用程序调用,所述插件包括:原始语言文本串获得 单元、目标语言文本串获得单元、文件生成单元和目标语言代码生成单元,
[0090] 所述原始语言文本串获得单元,用于获取原始源代码中的原始语言文本串;
[0091] 所述目标语言文本串获得单元,用于获取与所述原始语言文本串对应的目标语言 文本串;
[0092] 所述文件生成单元,用于生成对应存储有所述原始语言文本串和至少一个所述目 标语言文本串的语言配置文件;
[0093] 所述目标语言代码生成单元,用于根据所述语言配置文件及所述原始源代码生成 目标语言版本的源代码。
[0094] 优选的,所述第一应用程序为编程应用程序或编译应用程序。
[0095] 本发明实施例提供的源代码的多语言化方法及系统,可以自动判断源代码的编程 语言类型,根据不同的编程语言类型自动提取源代码中的原始语言文本串并获得对应的目 标语言文本串,生成为目标语言版本的源代码。本发明不需要使用中间函数,因此数据的读 取效率较高,也不需要编程技术人员掌握中间函数。本发明实现了多语言化的过程的自动 化,处理速度较快,出错率低。自动改造完成后,根据错误提示,编程技术人员仅需要对未成 功替换的原始语言文本串做修改处理即可,提高了多语言化的效率。本发明也使得编程技 术人员不需要学习原来的单语言源代码,较少了工作量,加快了多语言化的工作的进程。 [0096] 当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优 点。
【附图说明】
[0097] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0098] 图1为本发明实施例提供的一种源代码的多语言化方法的流程图;
[0099] 图2为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0100]图3为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0101] 图4为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0102] 图5为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0103] 图6为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0104] 图7为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0105] 图8为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0106] 图9为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0107] 图10为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0108] 图11为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0109] 图12为本发明实施例提供的另一种源代码的多语言化方法的流程图;
[0110] 图13为本发明实施例提供的一种源代码的多语言化系统的结构示意图;
[0111] 图14为本发明实施例提供的另一种源代码的多语言化系统的结构示意图。
【具体实施方式】
[0112] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0113] 首先对本发明所使用的词汇进行说明:本发明使用了原始语言、目标语言、程序语 目这二个词汇,其中原始语目和目标语目均指自然语目,如中文、英文等;程序语目为计算 机语目,如C语目,也称编程语目。
[0114] 如图1所示,本发明实施例提供的一种源代码的多语言化方法,可以包括:
[0115]S100、获取原始源代码中的原始语言文本串;
[0116] 其中,源代码是未编译的按照一定的程序设计语言规范书写的文本文件。源代码 (也称源程序),是一系列人类可读的计算机语言指令。在现代程序语言中,源代码可以是以 书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编 译出计算机程序。通过编译器可以将源代码编译为计算机可以执行的二进制指令。
[0117] 可选的,原始语言版本可以为中文版本。分析各种编程语言后得出,应用程序与用 户交互所显示给用户的文本串(如通知中的文本、菜单中的文本等)在源代码中,通常被包 含在特定的文本串分隔符中,如等。其中,不同的程序语言类型 所匹配的文本串分隔符不尽相同。程序语言类型可以有多种,如C语言、JAVAJavaScript、 PHP等。举例来说,JavaScript中的单引号为文本串分隔符,而在C语言中单引号不作为文 本串分隔符。
[0118]软件界面中显示给用户的提示信息需要进行多语言化的处理,以方便掌握不同语 种的用户阅读,由于不同的编程语言编写出的源代码,会采用不同的文本串分隔符来标记 软件界面中显示给用户的提示信息,因此需要先确定原始源代码中哪些文本需要进行多语 言化的处理。
[0119] 其中,如何获得原始语言文本串,如图2所示,S100可以包括S110和S120 :
[0120]S110、确定原始源代码中的文本串分隔符;
[0121] 其中,S110可以包括:
[0122] 获得原始源代码的程序语言类型;
[0123] 根据所述程序语言类型,将与所述程序语言类型匹配的文本串分隔符确定为所述 原始源代码中的文本串分隔符。
[0124] 其中,获得原始源代码的程序语言类型,可以包括:
[0125]获得用户输入的原始源代码的程序语言类型;
[0126]或者,对原始源代码的程序语言类型进行识别,获得所述原始源代码的程序语言 类型。
[0127]具体的,可以获取原始源代码中出现的关键字、语句、运算符等,根据首行的关键 字、语句、运算符之一,判断源代码采用何种编程语言进行编写,如不能判断出唯一的一种 编程语言,则获取原始源代码下一行的关键字、语句、运算符之一,进行判断,直到可以确定 源代码的编程语言为止。获取编程语言类型后,根据该编程语言的类型获取适合该编程语 言类型的所有文本串分隔符。当然,也可以由用户直接输入程序语言类型。
[0128] 本发明提供一种插件或系统,该插件或系统提供用户输入程序语言类型的显示界 面,这样可以节省判断程序语言类型的时间,由用户来确定原始源代码是何种编程语言编 写的。具体的,可以在显示界面上提供各程序语言类型的选项以供用户进行选择,在接收用 户对程序语言类型的选择指令后,就可以根据预设的程序语言类型与文本串分隔符的匹配 关系,确定相匹配的文本串分隔符。
[0129]S120、获取所述原始源代码中相 互对应的所述文本串分隔符之间的原始语言文本 串。
[0130] 具体的,在原始源代码中逐个查找文本串分隔符,找到一个文本串分隔符后,将该 文本串分割符之间的文本串提取出来,即获得了原始语言文本串。
[0131]S200、获取与所述原始语言文本串对应的目标语言文本串;
[0132]S300、生成对应存储有所述原始语言文本串和至少一个所述目标语言文本串的语 言配置文件;
[0133] 在实际应用中,可以仅生成一个存储有所有原始语言文本串和所有目标语言文本 串的语言配置文件,也可以生成多个语言配置文件,每个语言配置文件中存储有部分原始 语言文本串及对应的目标语言文本串。当然,在本发明其他实施例中的语言配置文件中,也 可以存储有所有的原始语言文本串及部分目标语言文本串。
[0134] 具体的,可以根据原始语言文本串和目标语言文本串一一对应的关系,生成语言 配置文件,该语言配置文件中保存有一一对应的原始语言文本串和目标语言文本串。
[0135] 在实际应用中,可以首先生成存储有原始语言文本串的语言配置文件,在获得与 所述原始语言文本串对应的目标语言文本串后,建立原始语言文本串和目标语言文本串的 对应关系,再将目标语言文本串对应存储在所述语言配置文件中。其中,语言配置文件仅是 本发明对将相对应的原始语言文本串和目标语言文本串进行保存后生成的文件的一种命 名,在本发明其他实施例中,还可以有其他命名,如文本串对照表、翻译库等。
[0136] 其中,目标语言文本串是对原始语言文本串进行翻译后获得的,优选的,本发明可 以自动将原始语言文本串翻译为目标语言文本串。具体的,用户可以首先对语言进行选择, 从而确定目标语言,用户选择的目标语言可以包括多种,如英语、日语、韩语、马来西亚语 等。
[0137] 具体的,语言配置文件中原始语言文本串与目标语言文本串可以使用表格方式进 行存储,也可使用哈希表进行存储,也可使用JS0N语法进行存储。
[0138] 下面公开一种使用哈希表存储原始语言文本串"你好"及其对应的目标语言文本 串"hello,,、"二九t二怒(i"的举例,如下:
[0139]
[0140] 上述举例中,分隔符为"",目标语言包括:美式英语及日语。
[0141] 其中,如图3所示,在本发明的另一实施例中,S300可以包括:
[0142]S310、接收用户对语言类型的第一选择指令;
[0143] 具体的,本发明为用户提供输入语言类型的功能,由用户来指定原始源代码编译 后的软件拟采用何种语言类型呈现给用户。
[0144]S320、根据所述第一选择指令确定目标语言的类型;
[0145] 具体的,接收用户选择语言类型的指令后,根据该指令可以确定目标源代码编程 成的软件拟采用何种语言类型呈现给用户,例如接收到用户的第一选择指令为软件界面采 用日文呈现,则目标语言被标记为日文。
[0146]S330、将所述原始语言文本串翻译为与所述原始语言文本串对应的目标语言文本 串,所述目标语言文本串的语言类型属于所述目标语言的类型。
[0147] 具体的,将原始语言文本串翻译为目标语言类型的目标语言文本串,例如将源代 码中的原始语言文本串翻译为日文的目标语言文本串。
[0148] 图3所示实施例可使得用户选择所要翻译为的目标语言的类型,从而决定将原始 语言文本串翻译为何种语言的文本串。用户可以仅选择当前对源代码进行多语言化所需要 的语言类型,也可以选择更多的语言类型。例如:用户需要将中文版本的源代码修改为英文 版本的源代码,那么用户的第一选择指令可以只选择英语进行翻译,这样就可以只生成英 语版本的源代码;当然,用户的第一选择指令也可以同时选择英语和日语进行翻译,在生成 目标语言版本的源代码时,可以仅生成英语版本的源代码,也可以同时生成英语版本和日 语版本的源代码。虽然应用程序是逐步进入不同国家,但技术人员可以预先选择有可能进 入的国家所使用的语言版本进行翻译,得到该语言版本的文本串存入语言配置文件中。这 样在后续需要进入该国家时,就可以直接通过语言配置文件生成相应语言版本的源代码, 将翻译工作进行了提前,提高了目标语言版本的源代码的生成速度。
[0149]S400、根据所述语言配置文件及所述原始源代码,生成目标语言版本的源代码。
[0150] 具体的,根据语言配置文件中原始语言文本串和至少一个目标语言文本串的对应 关系,查找原始源代码或原始源代码副本中的原始语言文本串,并根据语言配置文件中的 对应条目,将原始语言文本替换为目标语言文本,随后生成的目标语言版本的源代码,即可 编译为目标语言版本的应用程序。
[0151] 具体的,在图3所示实施例的基础上,S400可以为如下两种方式中的任何一种:
[0152]方式一:
[0153] 如图4所示,S400可以包括:
[0154]S410、接收用户对所确定的目标语言类型的第二选择指令;
[0155] S420、依据所述语言配置文件及所述原始源代码生成与所述第二选择指令对应的 目标语言版本的源代码。
[0156] 图4所示实施例中,用户可以进一步选择所要生成的源代码的目标语言版本,例 如:语言配置文件中与原始语言文本串匹配的目标语言文本串的语言类型共有三种,分别 为英文、日文和韩文,则用户对这三种目标语言进行选择,从而决定生成哪种或哪几种目标 语言版本的源代码,例如用户选择英文和日文,则S420生成英文版本的源代码和日文版本 的源代码。当然,用户也可以仅通过第二选择指令选择一种目标语言,从而仅生成一种目标 语言版本的源代码。
[0157] 在本发明其他实施例中,语言配置文件的生成和目标语言版本的源代码的生成可 以由相同或不同的技术人员完成,例如由张某进行生成语言配置文件的工作,由李某依据 张某工作后得到的语言配置文件进行生成目标语言版本的源代码的工作。
[0158] 当然,在本发明其他实施例中,语言配置文件的生成和目标语言版本的源代码的 生成也可以在相同的时间段或不同的时间段内完成,例如上半年生成语言配置文件,下半 年根据所生成的语言配置文件生成目标语言版本的源代码。
[0159] 当然,也可以将上述两种情况进行任何结合,例如:某公司要对某中文软件进行国 际化,但是由于不同国家的市场的进入时间并不确定,因此所要翻译的语言并不确定。职工 甲负责语言配置文件的生成,他根据公司可能进入的国家的语言,翻译生成了含有英、日、 韩、法、德这五种语言的文本串的语言配置文件。半年后,该公司要率先进入日本市场,于是 职工乙根据之前生成的语言配置文件,选择日语作为所要生成的源代码的语言版本,将该 应用程序的源代码修改为日语版本的源代码。
[0160] 其中,如图5所示,S420可以包括:S421、根据所述语言配置文件中原始语言文本 串和至少一个目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为 与所述第二选择指令对应的目标语言文本串,生成与所述第二选择指令对应目标语言版本 的源代码;
[0161] 或者,如图6所示,S420可以包括:S422、获得所述原始源代码的副本,根据所述语 言配置文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码 的副本中的原始语言文本串替换与所述第二选择指令对应的目标语言文本串,生成与所述 第二选择指令对应目标语言版本的源代码。
[0162] 由于S421是直接在原始源代码上进行文本串替换,因此更适用于仅将原始源代 码转化为一种目标语言版本的源代码。而S422在原始源代码的副本上进行文本串替换,替 换时不会对原始源代码造成修改,因此在将原始源代码转化为另一种目标语言版本源代码 时,可以继续使用原始源代码。可见,S422更适用于将一种原始源代码转化为多种目标语 言版本的源代码。当然,本发明对以上两种方式的应用并不做限定,S421也可以适用于将 一种原始源代码转化为多种目标语言版本的源代码,S422也可以适用于仅将原始源代码转 化为一种目标语言版本的源代码。
[0163] 方式二、如图7所示,S400可以包括:S430、依据所述语言配置文件及所述原始源 代码生成与所述第一选择指令对应的目标语言版本的源代码。
[0164] 方式二相对于方式一而言,不需要用户再次对目标语言进行选择,可以直接生成 语言配置文件中各目标语言版本的源代码,更加快捷方便。例如:语言配置文件中与原始 语言文本串匹配的目标语言文本串的语言类型共有三种,分别为英文、日文和韩文,则S330 生成英文版本的源代码、日文版本的源代码和韩文版本的源代码。
[0165] 其中,如图8所示,S430可以包括:S431、根据所述语言配置文件中原始语言文本 串和至少一个目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为 所述语言配置文件中与所述原始语言文本串相对应的目标语言文本串,生成与所述第一选 择指令对应目标语言版本的源代码;
[0166] 或者,如图9所示,S430可以包括:S432、获得所述原始源代码的副本,根据所述语 言配置文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码 的副本中的原始语言文本串替换为所述语言配置文件中与所述原始语言文本串相对应的 目标语言文本串,生成与所述第一选择指令对应目标语言版本的源代码。
[0167]S431和S432的区别与S421和S422的区别类似,不再赘述。
[0168] 对于方式一,在生成多种目标语言版本的源代码时,可以一个一个的分别先后生 成:每次获得一个原始源代码的副本,然后将该副本修改为其中一个目标语言的源代码,然 后再获得一个副本,继续生成其他目标语言的源代码;也可以同时生成,首先获得多个原始 语言的源代码的副本,然后将各副本分别修改为一个目标语言版本的源代码。
[0169] 因此,当根据所述第一选择指令确定的目标语言可以为n个,对所述原始语言文 本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种目标语言的n个目 标语言文本串,用户通过所述第二选择指令所选择的目标语言为m个,m和n均为正整数, 且n彡m时,S422可以包括:
[0170] 获得所述原始源代码的m个副本;
[0171] 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关 系,分别将所述原始源代码的m个副本中的原始语言文本串替换为与所述第二选择指令对 应的一种目标语言的目标语言文本串,生成与所述第二选择指令对应的m个目标语言版本 的源代码。
[0172] 同样,对于方式二,当根据所述第一选择指令确定的目标语言为n个,对所述原始 语言文本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种目标语言 的n个目标语言文本串,n为正整数时,S432可以包括:
[0173] 获得所述原始源代码的n个副本;
[0174] 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关 系,分别将所述原始源代码的n个副本中的原始语言文本串替换为所述语言配置文件中与 所述原始语言文本串相对应的一种目标语言的目标语言文本串,生成与所述第一选择指令 对应的n个目标 语言版本的源代码。
[0175] 在方式一和方式二中,在进行文本串替换时,可以遍历原始源代码和原始源代码 的副本,如果遍历到语言配置文件中的原始语言文本串,则将其替换为相对应的目标语言 文本串。当然,也可以有其他替换方法和替换顺序,本发明不做限定。
[0176] 本发明实施例提供的一种源代码的多语言化方法,可以自动判断源代码的编程语 言类型,根据不同的编程语言类型自动提取源代码中的原始语言文本串并获得对应的目标 语言文本串,生成为目标语言版本的源代码。本发明不需要使用中间函数,因此数据的读取 效率较高,也不需要编程技术人员掌握中间函数。本发明实现了多语言化的过程的自动化, 处理速度较快,出错率低。自动改造完成后,根据错误提示,编程技术人员仅需要对未成功 替换的原始语言文本串做修改处理即可,提高了多语言化的效率。本发明也使得编程技术 人员不需要学习原来的单语言源代码,较少了工作量,加快了多语言化的工作的进程。
[0177] 如图10所示,本发明实施例提供的另一种源代码的多语言化方法中,还可以包 括:
[0178]S500、将所述目标语言版本的源代码编译为所述目标语言版本的应用程序。
[0179] 在获得目标语言版本的源代码后,如果未出现报错情况,可以随后将目标语言的 源代码编译为目标语言版本的应用程序,或者可以通过编译器等将其编译为目标语言版本 的应用程序,以进行发布供用户使用。
[0180] 如图11所示,在图1所示实施例的基础上,本发明实施例提供的另一种源代码的 多语言化方法,在S400后,还可以包括:
[0181]S440、判断所述目标语言版本的源代码中是否存在所述原始语言文本串,如果存 在,则执行S450,否则可以不进行处理或如图11所示执行S500;
[0182]S450、输出提示信息以提示用户。
[0183] 由于技术人员在编写源代码时可能并非完全规范,因此在S100提取原始源代码 中的原始语言文本串时,可能无法提取全部的原始语言文本串,如:拼接字符串没有使用 String,format()、字符没有使用html实体等。
[0184] 例如,导致错误的书写方式为:
[0185] $ ('body')?html(' <b> 李蕾 </b> 你好,今天是:<b> 星期三 </b>')
[0186] var string=,<a>所有,+_map [type]+,</a>'
[0187] var msg=,成功为您移动〈span class="success-file-number">,+len_ok+,〈/ span〉个文件,失败〈span class=〃fail_f ile_number〃>,+len_fail+,〈/span〉个文件'
[0188] 正确的一种书写方式为:
[0189]$ ('body')?html('{0}你好,今天是:{1} '?format('<b>李蕾</b>','<b>星期三
[0190] var string=,<a> {0},+_map [type] +,</a>,? format (,所有')
[0191] varmsg=' 成功为您移动{0}个文件,失败{1}个文件'?format('〈spanclass=〃s uccess-file-number^)' +len_ok+' </span>','<spanclass=〃fail-file_number〃>, +len_ fail+' </span>')
[0192] 在这种情况下,生成的目标语言版本的源代码中就会还留有原始语言文本串。图 2所示实施例当判断获知仍留有原始语言文本串时,可以提示用户该信息,询问用户是否 进行处理,避免由于提取不完全造成的语言版本"翻译"不全的问题。具体的,在提示用 户信息时,可以对目标语言版本的源代码中存在所述原始语言文本串的位置处进行标记, 记录下行数和列数,并提示用户已标记的位置处可能存在问题,并记录详细日志(如i18n. unmatched,md)提示开发者。这些提示信息通过屏幕显示给用户。
[0193]如何判断是否留有原始语言文本串,具体的,当原始语言的文字为中文、日本、韩 文等非IS08859-1字符时,可以通过对生成的目标语言版本的源代码中非IS08859-1字 符的检测来确定是否翻译完毕,例如对于原始语言为中文版本的源代码,如果未翻译完毕, 则可能留下未翻译的中文,此时就可以通过非IS08859-1字符的检测找到它,并记录它所 在的位置以提示用户。S08859-1,又称Latin-1或"西欧语言",是国际标准化组织内ISO/IEC8859的第一个8位字符集。它以ASCII为基础,在空置的OxAO-OxFF的范围内,加入96 个字母及符号,藉以供使用变音符号的拉丁字母语言使用。
[0194] 如图12所示,在图11所示实施例的基础上,本发明实施例提供的另一种源代码的 多语言化方法中,S450可以包括:
[0195]S451、获得所述目标语言版本的源代码中存在的所述原始语言文本串的位置信 息;
[0196]S452、将所述位置信息输出给用户。
[0197] 由于编程技术人员编写的源代码可能并不规范,因此会导致编程技术人员所使用 的文本串分隔符与本发明所确定的文本串分隔符并不完全一致,使得不一致的文本串分隔 符中的文本串无法被翻译和替换,进而导致残留原始语言的文本串。因此,提示信息中可以 包括有源代码不规范的提示信息及建议修改为规范源代码的提示信息。进一步,提示信息 中还可以同时包括有规范源代码的示例,以提示编程技术人员。
[0198] 通过位置信息的输出,本发明可以帮助编程技术人员快速定位留有原始语言文本 串的位置,从而由编程技术人员进行修改。在本发明其他实施例中,还可以根据位置信息建 立跳转到该位置的跳转指令,并在显示界面上提供按钮等供用户点击来触发该跳转指令, 从而直接跳转到该位置,不再需要用户手动查找,更加方便快捷。
[0199] 下面提供本发明的一种源代码的多语言化方法的【具体实施方式】:
[0200] 步骤1 :提取原始源代码中的非IS08859-1字符;
[0201] 具体的,也可以根据需求,指定IS08859-1编码以外的其他编码方案。以下以最常 用的IS08859-1进行举例。
[0202] 举例一、提取到的非IS08859-1字符包括:"操作失败,请稍后再试"和"正在努力 为您删除{〇}个文件"。
[0203] 可以理解的是,在中文版本的应用程序的源代码中,文本串分隔符中的原始语言 文本串即为非IS08859-1字符。
[0204] 如出现几个连续非IS008859-1字符,可以归并为一串文本串,在翻译时作为一个 词语或句子进行翻译、替换。
[0205] 步骤2 :接收用户对目标语言的选择指令,生成包含有原始语言文本串的语言配 置文件;
[0206] 仍使用上述举例一进行说明:用户选择的目标语言为美式英语和日语,则可以生 成包括如下内容的配置文件:
[0207]
[0208]
[0209] 上述语言配置文件可以命名为il8n.lang.js。
[0210] 步骤3 :获得与所述原始语言文本串对应的目标语言文本串,将目标语言文本串 语言对应存储到语言配置文件中。
[0211] 具体的,可以自动或者人工将原始语言文本串中的原始语言文本串翻译为目标语 言文本串。
[0212] 仍以举例一为例进行说明,将语言配置文件il8n.lang.js中的原始语言文本串 翻译为美式英语及日语,并存储到语言配置文件中。语言配置文件中的内容为:
[0214] 具体的,可以分别对多个应用程序的源代码进行原始语言文本串提取并获得对应 的目标语言文本串,将多个应用程序的原始语言文本串及对应的目标语言文本串均存入一 个语言配置文件中,这样,该语言配置文件中的文本串就更为丰富,在对某应用程序进行多 语言化过程中,由于该语言配置文件中存储有该源代码中部分或全部原始语言文本串对 应的目标语言文本串,因此可以不必再对语言配置文件中存储有的原始语言文本串进行翻 译,直接获取语言配置文件中相对应的目标语言文本串即可。在遇到该语言配置文件中不 存在的原始语言文本串时,可以继续将该原始语言文本串及对应的目标语言文本串加入该 语言配置文件中。在经过一段时间的多语言化处理后,上述语言配置文件可以作为最终完 整包文件而不再进行文本串更新,在这种情况下,可以修改该语言配置文件的名称。
[0215] 步骤4:获得所述原始源代码的副本,将所述原始源代码的副本中的原始语言文 本串替换为对应的目标语言文本串,生成目标语言版本的源代码;
[0216] 步骤5 :将所述目标语言版本的源代码构建为所述目标语言版本的应用程序。
[0217] 与上述方法实施例相对应,如图13所示,本发明还提供了一种源代码的多语言化 系统,包括:原始语言文本串获得单元100、目标语言文本串获得单元200、文件生成单元 300和目标语言代码生成单元400,
[0218] 所述原始语言文本串获得单元100,用于获取原始源代码中的原始语言文本串;
[0219] 其中,原始语言文本串获得单元100,可以包括:分隔符确定子单元和文本串获得 子单元,
[0220] 所述分隔符确定子单元,用于确定原始源代码中的文本串分隔符;
[0221] 所述文本串获得子单元,用于获取所述原始源代码中相互对应的所述文本串分隔 符之间的原始语言文本串。其中,所述分隔符确定子单元,可以包括:语言类型获得子单元 和分隔符子单兀,
[0222] 所述语言类型获得子单元,用于获得原始源代码的程序语言类型;
[0223] 所述分隔符子单元,用于根据所述程序语言类型,将与所述程序语言类型匹配的 文本串分隔符确定为所述原始源代码中的文本串分隔符。
[0224] 其中,语言类型获得子单元,可以包括:用户输入子单元或识别子单元,
[0225] 所述用户输入子单元,用于获得用户输入的原始源代码的程序语言类型;
[0226] 所述识别子单元,用于对原始源代码的程序语言类型进行识别,获得所述原始源 代码的程序语言类型。
[0227] 所述目标语言文本串获得单元200,用于获取与所述原始语言文本串对应的目标 语目文本串;
[0228] 文件生成单元300,用于生成对应存储有所述原始语言文本串和至少一个所述目 标语言文本串的语言配置文件;
[0229] 其中,目标语言文本串获得单元200,可以包括:第一指令接收子单元、目标语言 确定子单元和翻译子单元;
[0230] 所述第一指令接收子单元,用于接收用户对语言类型的第一选择指令;
[0231] 所述目标语言确定子单元,用于根据所述第一选择指令确定目标语言的类型;
[0232] 所述翻译子单 元,用于将所述原始语言文本串翻译为与所述原始语言文本串对应 的目标语言文本串,所述目标语言文本串的语言类型属于所述目标语言的类型。
[0233] 所述目标语言代码生成单元400,用于根据所述语言配置文件及所述原始源代码 生成目标语言版本的源代码。
[0234] 其中,所述目标语言代码生成单元400,可以有两种具体实施方案:
[0235] 方案一、目标语言代码生成单元400包括:第二指令接收子单元和第一代码生成 子单元;
[0236] 所述第二指令接收子单元,用于接收用户对所确定的目标语言类型的第二选择指 令;
[0237] 所述第一代码生成子单元,用于依据所述语言配置文件及所述原始源代码生成与 所述第二选择指令对应的目标语言版本的源代码。
[0238] 其中,所述第一代码生成子单元,可以包括:第一代码替换子单元或第一副本替换 子单元,
[0239] 所述第一代码替换子单元,用于根据所述语言配置文件中原始语言文本串和至少 一个目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为与所述第 二选择指令对应的目标语言文本串,生成与所述第二选择指令对应目标语言版本的源代 码;
[0240] 所述第一副本替换子单元,用于获得所述原始源代码的副本,根据所述语言配置 文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本 中的原始语言文本串替换为与所述第二选择指令对应的目标语言文本串,生成与所述第二 选择指令对应目标语言版本的源代码。
[0241] 方案二、目标语言代码生成单元400,可以用于:依据所述语言配置文件及所述原 始源代码生成与所述第一选择指令对应的目标语言版本的源代码。
[0242] 在方案二中,目标语言代码生成单元400,可以包括:第二代码替换子单元或第二 副本替换子单元,
[0243] 所述第二代码替换子单元,用于根据所述语言配置文件中原始语言文本串和至少 一个目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为所述语言 配置文件中与所述原始语言文本串相对应的目标语言文本串,生成与所述第一选择指令对 应目标语言版本的源代码;
[0244] 所述第二副本替换子单元,用于获得所述原始源代码的副本,根据所述语言配置 文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本 中的原始语言文本串替换为所述语言配置文件中与所述原始语言文本串相对应的目标语 言文本串,生成与所述第一选择指令对应目标语言版本的源代码。
[0245] 对于方案一,当根据所述第一选择指令确定的目标语言的类型为n种,对所述原 始语言文本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种类型目 标语言的n个目标语言文本串,用户通过所述第二选择指令所选择的目标语言的类型为m 种,m和n均为正整数,且n>m时,所述第一副本替换子单元,可以包括:第一副本获得模 块和第一副本替换模块,
[0246] 所述第一副本获得模块,用于获得所述原始源代码的m个副本;
[0247] 所述第一副本替换模块,用于根据所述语言配置文件中原始语言文本串和至少一 个目标语言文本串的对应关系,分别将所述原始源代码的m个副本中的原始语言文本串替 换为与所述第二选择指令对应的一种目标语言的目标语言文本串,生成与所述第二选择指 令对应的m个目标语言版本的源代码。
[0248] 对于方案二,当根据所述第一选择指令确定的目标语言的类型为n种,对所述原 始语言文本串进行翻译后生成的语言配置文件中每一个原始语言文本串对应n种类型目 标语言的n个目标语言文本串,n为正整数时,所述第二副本替换子单元,可以包括:第二副 本获得模块和第二副本替换模块,
[0249] 所述第二副本获得模块,用于获得所述原始源代码的n个副本;
[0250] 所述第二副本替换模块,用于根据所述语言配置文件中原始语言文本串和至少一 个目标语言文本串的对应关系,分别将所述原始源代码的n个副本中的原始语言文本串替 换为所述语言配置文件中与所述原始语言文本串相对应的一种目标语言的目标语言文本 串,生成与所述第一选择指令对应的n个目标语言版本的源代码。
[0251] 本发明实施例提供的一种源代码的多语言化系统,可以自动判断源代码的编程语 言类型,根据不同的编程语言类型自动提取源代码中的原始语言文本串并获得对应的目标 语言文本串,生成为目标语言版本的源代码。本发明不需要使用中间函数,因此数据的读取 效率较高,也不需要编程技术人员掌握中间函数。本发明实现了多语言化的过程的自动化, 处理速度较快,出错率低。自动改造完成后,根据错误提示,编程技术人员仅需要对未成功 替换的原始语言文本串做修改处理即可,提高了多语言化的效率。本发明也使得编程技术 人员不需要学习原来的单语言源代码,较少了工作量,加快了多语言化的工作的进程。
[0252] 本发明实施例提供的另一种源代码的多语言化系统,如图14所示,还可以包括: 应用程序编译单元500,用于将所述目标语言版本的源代码编译为所述目标语言版本的应 用程序。在获得目标语言版本的源代码后,就可以通过编译器等将其编译为目标语言版本 的应用程序,以进行发布供用户使用。
[0253] 本发明实施例提供的另一种源代码的多语言化系统,还可以包括:判断单元和提 示单元,
[0254] 所述判断单元,用于在所述目标语言代码生成单元根据所述语言配置文件及所述 原始源代码,生成目标语言版本的源代码后,判断所述目标语言版本的源代码中是否存在 所述原始语言文本串,如果是,则触发所述提示单元;
[0255] 所述提示单元,用于输出提示信息以提示用户。
[0256] 优选的,所述提示单元可以包括:位置获得单元和位置输出单元,
[0257] 所述位置获得单元,用于获得所述目标语言版本的源代码中存在的所述原始语言 文本串的位置信息;
[0258] 所述位置输出单元,用于将所述位置信息输出给用户。
[0259] 其中,所述提示信息中包括有:源代码不规范的提示信息及建议修改为规范源代 码的提示信息。
[0260] 本发明还提供了一种插件,该插件可被第一应用程序调用,该插件可以包括:原始 语言文本串获得单元、目标语言文本串获得单元、文件生成单元和目标语言代码生成单元,
[0261] 所述原始语言文本串获得单元,用于获取原始源代码中的原始语言文本串;
[0262] 所述目标语言文本串获得单元,用于获取与所述原始语言文本串对应的目标语言 文本串;
[0263] 所述文件生成单元,用于生成对应存储有所述原始语言文本串和至少一个所述目 标语言文本串的语言配置文件;
[0264] 所述目标语言代码生成单元,用于根据所述语言配置文件及所述原始源代码生成 目标语言版本的源代码。
[0265] 其中,所述第一应用程序为编程应用程序或编译应用程序。
[0266] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实 体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存 在任何这种实际的关系或者顺序。而且,术语"包括"、"包含"或者其任何其他变体意在涵 盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要 素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备 所固有的要素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并不排除 在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0267] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部 分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实 施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例 的部分说明即可。
[0268] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在 本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围 内。
【主权项】
1. 一种源代码的多语言化方法,其特征在于,包括: 获取原始源代码中的原始语言文本串; 获取与所述原始语言文本串对应的目标语言文本串; 生成对应存储有所述原始语言文本串和至少一个所述目标语言文本串的语言配置文 件; 根据所述语言配置文件及所述原始源代码,生成目标语言版本的源代码。2. 根据权利要求1所述的方法,其特征在于,还包括:将所述目标语言版本的源代码编 译为所述目标语言版本的应用程序。3. 根据权利要求1或2所述的方法,其特征在于,所述获取原始源代码中的原始语言文 本串,包括: 确定原始源代码中的文本串分隔符; 获取所述原始源代码中相互对应的所述文本串分隔符之间的原始语言文本串。4. 根据权利要求3所述的方法,其特征在于,所述确定原始源代码中的文本串分隔符, 包括: 获得原始源代码的程序语言类型; 根据所述程序语言类型,将与所述程序语言类型匹配的文本串分隔符确定为所述原始 源代码中的文本串分隔符。5. 根据权利要求4所述的方法,其特征在于,所述获得原始源代码的程序语言类型,包 括: 获得用户输入的原始源代码的程序语言类型; 或者,对原始源代码的程序语言类型进行识别,获得所述原始源代码的程序语言类型。6. 根据权利要求1所述的方法,其特征在于,所述获取与所述原始语言文本串对应的 目标语言文本串,包括: 接收用户对语言类型的第一选择指令; 根据所述第一选择指令确定目标语言的类型; 将所述原始语言文本串翻译为与所述原始语言文本串对应的目标语言文本串,所述目 标语言文本串的语言类型属于所述目标语言的类型。7. 根据权利要求6所述的方法,其特征在于,所述根据所述语言配置文件及所述原始 源代码,生成目标语言版本的源代码,包括: 接收用户对所确定的目标语言类型的第二选择指令; 依据所述语言配置文件及所述原始源代码生成与所述第二选择指令对应的目标语言 版本的源代码。8. 根据权利要求7所述的方法,其特征在于,所述依据所述语言配置文件及所述原始 源代码生成与所述第二选择指令对应的目标语言版本的源代码,包括 : 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关系,将 所述原始源代码中的原始语言文本串替换为与所述第二选择指令对应的目标语言文本串, 生成与所述第二选择指令对应目标语言版本的源代码; 或者,获得所述原始源代码的副本,根据所述语言配置文件中原始语言文本串和至少 一个目标语言文本串的对应关系,将所述原始源代码的副本中的原始语言文本串替换为与 所述第二选择指令对应的目标语言文本串,生成与所述第二选择指令对应目标语言版本的 源代码。9. 根据权利要求6所述的方法,其特征在于,所述依据所述语言配置文件及所述原始 源代码生成目标语言版本的源代码,包括: 依据所述语言配置文件及所述原始源代码生成与所述第一选择指令对应的目标语言 版本的源代码。10. 根据权利要求9所述的方法,其特征在于,所述依据所述语言配置文件及所述原始 源代码生成与所述第一选择指令对应的目标语言版本的源代码,包括 : 根据所述 语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关系,将 所述原始源代码中的原始语言文本串替换为所述语言配置文件中与所述原始语言文本串 相对应的目标语言文本串,生成与所述第一选择指令对应目标语言版本的源代码; 或者,获得所述原始源代码的副本,根据所述语言配置文件中原始语言文本串和至少 一个目标语言文本串的对应关系,将所述原始源代码的副本中的原始语言文本串替换为所 述语言配置文件中与所述原始语言文本串相对应的目标语言文本串,生成与所述第一选择 指令对应目标语言版本的源代码。11. 根据权利要求8所述的方法,其特征在于,根据所述第一选择指令确定的目标语言 的类型为n种,对所述原始语言文本串进行翻译后生成的语言配置文件中每一个原始语言 文本串对应n种类型目标语言的n个目标语言文本串,用户通过所述第二选择指令所选择 的目标语言的类型为m种,m和n均为正整数,且n彡m,所述获得所述原始源代码的副本, 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关系,将所述 原始源代码的副本中的原始语言文本串替换为与所述第二选择指令对应的目标语言文本 串,生成与所述第二选择指令对应目标语言版本的源代码,包括 : 获得所述原始源代码的m个副本; 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关系,分 别将所述原始源代码的m个副本中的原始语言文本串替换为与所述第二选择指令对应的 一种目标语言的目标语言文本串,生成与所述第二选择指令对应的m个目标语言版本的源 代码。12. 根据权利要求10所述的方法,其特征在于,根据所述第一选择指令确定的目标语 言的类型为n种,对所述原始语言文本串进行翻译后生成的语言配置文件中每一个原始语 言文本串对应n种类型目标语言的n个目标语言文本串,n为正整数,所述获得所述原始源 代码的副本,根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应 关系,将所述原始源代码的副本中的原始语言文本串替换为所述语言配置文件中与所述原 始语言文本串相对应的目标语言文本串,生成与所述第一选择指令对应目标语言版本的源 代码,包括: 获得所述原始源代码的n个副本; 根据所述语言配置文件中原始语言文本串和至少一个目标语言文本串的对应关系,分 别将所述原始源代码的n个副本中的原始语言文本串替换为所述语言配置文件中与所述 原始语言文本串相对应的一种目标语言的目标语言文本串,生成与所述第一选择指令对应 的n个目标语言版本的源代码。13. 根据权利要求1或2所述的方法,其特征在于,在根据所述语言配置文件及所述原 始源代码,生成目标语言版本的源代码后,还包括: 判断所述目标语言版本的源代码中是否存在所述原始语言文本串,如果存在,则输出 提示信息以提示用户。14. 根据权利要求13所述的方法,其特征在于,所述输出提示信息以提示用户,包括: 获得所述目标语言版本的源代码中存在的所述原始语言文本串的位置信息; 将所述位置信息输出给用户。15. -种源代码的多语言化系统,其特征在于,包括:原始语言文本串获得单元、目标 语言文本串获得单元、文件生成单元和目标语言代码生成单元, 所述原始语言文本串获得单元,用于获取原始源代码中的原始语言文本串; 所述目标语言文本串获得单元,用于获取与所述原始语言文本串对应的目标语言文本 串; 所述文件生成单元,用于生成对应存储有所述原始语言文本串和至少一个所述目标语 言文本串的语言配置文件; 所述目标语言代码生成单元,用于根据所述语言配置文件及所述原始源代码生成目标 语言版本的源代码。16. 根据权利要求15所述的系统,其特征在于,还包括:应用程序编译单元,用于将所 述目标语言版本的源代码编译为所述目标语言版本的应用程序。17. 根据权利要求15或16所述的系统,其特征在于,所述原始语言文本串获得单元,包 括:分隔符确定子单元和文本串获得子单元, 所述分隔符确定子单元,用于确定原始源代码中的文本串分隔符; 所述文本串获得子单元,用于获取所述原始源代码中相互对应的所述文本串分隔符之 间的原始语目文本串。18. 根据权利要求17所述的系统,其特征在于,所述分隔符确定子单元,包括:语言类 型获得子单元和分隔符子单元, 所述语言类型获得子单元,用于获得原始源代码的程序语言类型; 所述分隔符子单元,用于根据所述程序语言类型,将与所述程序语言类型匹配的文本 串分隔符确定为所述原始源代码中的文本串分隔符。19. 根据权利要求18所述的系统,其特征在于,所述语言类型获得子单元,包括:用户 输入子单元或识别子单元, 所述用户输入子单元,用于获得用户输入的原始源代码的程序语言类型; 所述识别子单元,用于对原始源代码的程序语言类型进行识别,获得所述原始源代码 的程序语言类型。20. 根据权利要求15所述的系统,其特征在于,所述目标语言文本串获得单元,包括: 第一指令接收子单元、目标语言确定子单元和翻译子单元; 所述第一指令接收子单元,用于接收用户对语言类型的第一选择指令; 所述目标语言确定子单元,用于根据所述第一选择指令确定目标语言的类型; 所述翻译子单元,用于将所述原始语言文本串翻译为与所述原始语言文本串对应的目 标语言文本串,所述目标语言文本串的语言类型属于所述目标语言的类型。21. 根据权利要求20所述的系统,其特征在于,所述目标语言代码生成单元,包括:第 二指令接收子单元和第一代码生成子单元; 所述第二指令接收子单元,用于接收用户对所确定的目标语言类型的第二选择指令; 所述第一代码生成子单元,用于依据所述语言配置文件及所述原始源代码生成与所述 第二选择指令对应的目标语言版本的源代码。22. 根据权利要求21所述的系统,其特征在于,所述第一代码生成子单元,包括:第一 代码替换子单元或第一副本替换子单元, 所述第一代码替换子单元,用于根据所述语言配置文件中原始语言文本串和至少一个 目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为与所述第二选 择指令对应的目标语言文本串,生成与所述第二选择指令对应目标语言版本的源代码; 所述第一副本替换子单元,用于获得所述原始源代码的副本,根据所述语言配置文件 中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本中的 原始语言文本串替换为与所述第二选择指令对应的目标语言文本串,生成与所述第二选择 指令对应目标语言版本的源代码。23. 根据权利要求20所述的系统,其特征在于,所述目标语言代码生成单元,用于依据 所述语言配置文件及所述原始源代码生成与所述第一选择指令对应的目标语言版本的源 代码。24. 根据权利要求23所述的系统,其特征在于,所述目标语言代码生成单元,包括:第 二代码替换子单元或第二副本替换子单元, 所述第二代码替换子单元,用于根据所述语言配置文件中原始语言文本串和至少一个 目标语言文本串的对应关系,将所述原始源代码中的原始语言文本串替换为所述语言配置 文件中与所述原始语言文本串相对应的目标语言文本串,生成与所述第一选择指令对应目 标语言版本的源代码; 所述第二副本替换子单元,用于获得所述原始源代码的副本,根据所述语言配置文件 中原始语言文本串和至少一个目标语言文本串的对应关系,将所述原始源代码的副本中的 原始语言文本串替换为所述语言配置文件中与所述原始语言文本串相对应的目标语言文 本串,生成与所述第一选择指令对应目标语言版本的源代码。25. 根据权利要求22所述的系统,其特征在于,根据所述第一选择指令确定的目标语 言的类型为n种,对所述原始语言文本串进行翻译后生成的语言配置文件中每一个原始语 言文本串对应n种类型目标语言的n个目标语言文本串,用户通过所述第二选择指令所选 择的目标语言的类型为m种,m和n均为正整数,且n>m,所述第一副本替换子单元,包括: 第一副本获得模块和第一副本替换模块, 所述第一副本获得模块,用于获得所述原始源代码的m个副本; 所述第一副本替换模块,用于根据所述语言配置文件中原始语言文本串和至少一个目 标语言文本串的对应关系,分别将所述原始源代码的m个副本中的原始语言文本串替换为 与所述第二选择指令对应的一种目标语言的目标语言文本串,生成与所述第二选择指令对 应的m个目标语言版本的源代码。26. 根据权利要求24所述的系统,其特征在于,根据所述第一选择指令确定的目标语 言的类型为n种,对所述原始语言文本串进行翻译后生成的语言配置文件中每一个原始语 言文本串对应n种类型目标语言的n个目标语言文本串,n为正整数,所述第二副本替换子 单元,包括:第二副本获得模块和第二副本替换模块, 所述第二副本获得模块,用于获得所述原始源代码的n个副本; 所述第二副本替换模块,用于根据所述语言配置文件中原始语言文本串和至少一个目 标语言文本串的对应关系,分别将所述原始源代码的n个副本中的原始语言文本串替换为 所述语言配置文件中与所述原始语言文本串相对应的一种目标语言的目标语言文本串,生 成与所述第一选择指令对应的n个目标语言版本的源代码。27. 根据权利要求15或16所述的系统,其特征在于,还包括:判断单元和提示单元, 所述判断单元,用于在所述目标语言代码生成单元根据所述语言配置文件及所述原始 源代码,生成目标语言版本的源代码后,判断所述目标语言版本的源代码中是否存在所述 原始语言文本串,如果是,则触发所述提示单元; 所述提示单元,用于输出提示信息以提示用户。28. 根据权利要求27所述的系统,其特征在于,所述提示单元,包括:位置获得单元和 位置输出单元, 所述位置获得单元,用于获得所述目标语言版本的源代码中存在的所述原始语言文本 串的位置信息; 所述位置输出单元,用于将所述位置信息输出给用户。29. -种插件,其特征在于,所述插件可被第一应用程序调用,所述插件包括:原始语 言文本串获得单元、目标语言文本串获得单元、文件生成单元和目标语言代码生成单元, 所述原始语言文本串获得单元,用于获取原始源代码中的原始语言文本串; 所述目标语言文本串获得单元,用于获取与所述原始语言文本串对应的目标语言文本 串; 所述文件生成单元,用于生成对应存储有所述原始语言文本串和至少一个所述目标语 言文本串的语言配置文件; 所述目标语言代码生成单元,用于根据所述语言配置文件及所述原始源代码生成目标 语言版本的源代码。30. 根据权利要求29所述的插件,其特征在于,所述第一应用程序为编程应用程序或 编译应用程序。
【专利摘要】本发明实施例提供的源代码的多语言化方法及系统,可以自动判断源代码的编程语言类型,根据不同的编程语言类型自动提取源代码中的原始语言文本串并获得对应的目标语言文本串,生成为目标语言版本的源代码。本发明不需要使用中间函数,因此数据的读取效率较高,也不需要编程技术人员掌握中间函数。本发明实现了多语言化的过程的自动化,处理速度较快,出错率低。自动改造完成后,根据错误提示,编程技术人员仅需要对未成功替换的原始语言文本串做修改处理即可,提高了多语言化的效率。本发明也使得编程技术人员不需要学习原来的单语言源代码,较少了工作量,加快了多语言化的工作的进程。
【IPC分类】G06F9/445, G06F9/44
【公开号】CN104899010
【申请号】CN201410076610
【发明人】刘芳菲
【申请人】北京金山云网络技术有限公司, 北京金山云科技有限公司
【公开日】2015年9月9日
【申请日】2014年3月4日

最新回复(0)