一种实现计算机软件多语言支持的方法

文档序号:6471105阅读:413来源:国知局
专利名称:一种实现计算机软件多语言支持的方法
技术领域
本发明涉及一种实现计算机软件的多语言支持的方法。
背景技术
当前软件产品和服务的国际化首先需要解决软件多语言支持的
问题。多语言支持,从用户角度来看, 一般是指安装同一套应用 软件,能在多种语言环境下使用;从软件开发者角度来看, 一般是 指编写同一套软件代码,实现同一功能逻辑,但能显示多种语言 用户界面。
原有的多语言软件产品 一般是针对不同语言提供多个程序版本, 这样不仅软件开发效率极低,而且不能满足用户安装一套软件在多 种语言下使用的要求。
解决这个问题的关键技术是如何将多语言数据从软件代码中剥 离出来,单独管理和维护,使多语言数据不影响程序逻辑;并且在 软件运行时,根据用户当前使用的语言环境,动态、准确地加载多 语言数据,通过用户界面显示出来。
中国专利CN200710140464.2公开了 一种用于解决计算机软件多 语言支持问题的方法和系统。该发明采用的方法是从中文软件中提 取中文字符串,并在所述中文字符串的相关位置添加调用函数,然 后针对提取出的中文字符串采用哈希算法生成哈希值,并由所述哈 希值与多语言数据构成多语言资源文件,在软件运行时计算函数中 的中文字符串的哈希值并使用该哈希值在多语言资源文件中匹配多 语言数据。首先,该发明中在软件运行时需要根据函数传入的中文 字符串进行哈希计算,以便定位多语言资源文件中哈希值所在的多 语言数据,当进行哈希计算的中文字符串的长度过长时,会使哈希计算的效率成倍降低;其次,该发明中没有详细描述存储哈希值和 多语言数据的多语言资源文件的二进制存储结构,也没有描述如何 将哈希值映射为多语言数据在多语言资源文件中的二进制存储地 址,因为哈希值并不等同于多语言数据存储在文件中的偏移量地址, 所以不能直接用哈希值寻址;另外,该发明中强调为了提高响应速 度、减小哈希冲突机率、降低多语言资源文件大小,可以采取用多 个多语言资源文件存储多语言数据,但发明中并没有描述这些多语 言资源文件如何组织,按照什么规则分类,如何查找定位,事实上 对于按功能和模块划分的大规模软件系统而言,多语言资源文件可 能数量众多,对多语言资源文件的有效维护管理、自动快速查找定 位,是非常重要的,但该发明中并没有考虑这些。
本技术领域内急需 一种比较完整的能对多语言数据实现有效管 理、高效存储、快速读取响应的计算机软件多语言支持的方法。

发明内容
有鉴于此,本发明的主要目的在于提供一种实现计算机软件多语 言支持的方法,可以实现多语言数据的有效管理和快速读取响应。
对于上述技术问题,本发明是这样加以解决的。实现计算机软件 多语言支持的方法,包括
A、 在软件代码中使用多语言数据的位置设置调用函数;
B、 为与调用函数对应的多语言数据生成包括分类值和编号的索 引值,并将所述索引值添加到对应的调用函数中;
C、 生成至少一个多语言资源文件,所述多语言资源文件包括对 应相同分类值的多语言数据;
D、 软件运行中执行所述调用函数时,根据调用函数中索引值中 的分类值匹配多语言资源文件;
E、 根据调用函数中的编号在所匹配的多语言资源文件中匹配多 语言数据,向调用函数返回所匹配的多语言数据。
由上可以看出,为了实现多语言数据的有效管理和快速读取响
应,利用索引值的两个部分,将整个过程分为两个层次,即多语言 资源文件检索和多语言数据检索。多语言资源文件实现了多语言数 据和软件源代码的物理分离,便于多语言数据独立维护和管理。通 过索引值中的分类值实现对多语言资源文件进行归类管理和地址逻 辑映射,便于快速检索多语言资源文件。通过索引值中的编号所对 应的多语言数据的存储地址实现在多语言资源文件内快速检索多语 言数据。
优选的是,所述分类值对应于调用函数所在代码段在软件层次结 构中的位置。
由上可以看出,通过分类值和代码段的对应,可以实现多语言资 源文件和代码段的对应。从而,有利于多语言资源文件的维护管理 和快速查找。尤其是对于需要管理大量多语言数据的大规模分层结 构的软件系统而言效果更为明显。例如软件的某个功能级别增加一 个子功能才莫块,可以对应的增加一个多语言资源文件即可。而且也 方便根据功能模块的层级确定分类值的作用域。采用同一分类值或 其子分类值。
优选的是,步骤C后还包括
Cl、生成包含与分类值相对应的索引项的索引表,对应所述索 引项存储有多语言资源文件的存储地址;
步骤D中所述根据调用函数中索引值中的分类值匹配多语言资 源文件包括
Dl、根据调用函数中索引值中的分类值匹配所述索引表的索引
项;
D2、根据匹配的索引项对应的存储地址确定多语言资源文件。 由上可以看出,通过索引表的利用,可以实现在海量多语言资源
文件中快速查找所需要的多语言资源文件。因为只需要在索引表中
检索就可以直接定位对应的多语言资源文件。
优选的是,所述多语言资源文件中还包括对应相同分类值的子分
类值的多语言数据;
步骤D1包括根据调用函数中索引值中的分类值在索引表中从 分类值直接对应的索引项开始向最顶层索引项查找匹配的索引项。
由上可以看出,通过自底向上的匹配索引项,可以有效提高软件 系统的容错能力,增加健壮性。同时也方便多语言数据和多语言资 源文件的维护。例如在新增加多语言数据的时候,如果找不到与多 语言数据直接对应的分类值,当新增加的多语言数据的条目比较多 时,可以生成新的多语言资源文件,如果新增加的多语言数据的条 目比较少,则可以将这批多语言数据添加到在其所属的父分类值的 多语言资源文件中,不用新增加多语言资源文件。
优选的是,步骤B中所述生成包括分类值和编号的索引值的步 骤包括
根据各个多语言数据所在的不同代码段在软件的层次结构的不 同位置,设定索引值的不同分类值;
在每个代码段中,从所述代码段初始位置搜索多语言数据,并依 次使用所述代码段的分类值和不同的编号为所搜索$ 'j的多语言数据 生成索引值。
由上可以看出,对于已有软件,在对分类值的作用域,也就是对 应与软件的层次结构划分完成之后。分类值可以通过上述步骤实现 自动生成。
优选的是,步骤C所述多语言资源文件包括用于存储索引值的 编号和与各编号对应的多语言数据的存储地址的第 一存储空间,和
用于存储多语言数据的第二存储空间; 所述步骤E包括子步骤
根据调用函数中的索引值中的编号与所述第 一存储空间中的编 号进行匹配;
根据所匹配的第 一存储空间中的编号所对应的多语言数据的存 储地址读取第二存储空间中的多语言数据,并返回给调用函数。
由上可以看出,在多语言资源文件的第 一 存储空间可以对多语言 数据进行快速检索,其类似于通过索引表实现多语言资源文件的快
速检索一样,因为就算是需要遍历才能找到对应的多语言数据,其 检索动作也只是在第一存储空间中完成。
优选的是,步骤C所述多语言资源文件包括用于存储索引值和 与各索引值对应的多语言数据的存储地址的第 一存储空间,和用于 存储多语言数据的第二存储空间;
所述步骤E包括子步骤
根据调用函数中的索引值与第 一存储空间中的索引值进行匹配; 根据所匹配的第 一存储空间中的索引值所对应的多语言数据的
存储地址读取第二存储空间中的多语言数据,并返回给调用函数。 由上可以看出,使用索引值进行匹配而不仅是编号,可以提高软
件的容错能力,提高健壮性。也为多语言数据的管理和维护提供了
一定的方4更。
优选的是,第 一存储空间和第二存储空间采用的是连续的二进制 存储结构,第一存储空间中依次存有至少一个索引值单元段;
索引值单元段的结构包含固定长度的索引值长度、索引值和固 定长度的多语言数据存储地址和固定长度的多语言数据长度;
所述根据调用函数中的索引值与第 一存储空间中的索引值进行 匹配包4舌
指针定位到多语言资源文件的第 一存储空间起始位置,从第 一个 索引值单元段开始,对指针指向的各个索引值单元段依次取索引值 单元段的索引值长度、根据索引值长度完整读取索引值、用所读取 的索引值和调用函数中的索引值比较,直到比较结果匹配;
所述根据所匹配的第 一存储空间中的索引值所对应的多语言数 据的存储地址读取第二存储空间中的多语言数据包括
读取所匹配的第 一存储空间的索引值对应的多语言数据存储地 址和多语言数据长度,指针移到第二存储空间中所述多语言数据的 存储地址,按照多语言数据长度读取多语言数据。
由上可以看出,二进制存储结构为多语言数据的快速查找提供了 基本结构支持,因为整个过程进行的只是类似指针移动、读取、比
较这样非常简单的动作。而且因为是二进制结构,所以空间利用率 也非常高。
优选的是,多语言资源文件中第 一存储空间和第二存储空间首尾
相接;
步骤C所述生成多语言资源文件包括
分别生成第 一存储空间和第二存储空间,第 一存储空间包含索引 值单元段,第二存储空间包含多语言数据;
在第 一存储空间中依次写入索引值单元段,在第二存储空间依次 写入多语言数据,第 一次写入的多语言数据存储地址是第 一存储空 间的起始位置加上第一个索引值单元段的长度,之后每次新写入第 一存储空间的索引值单元段时都要将所有已写入的索引值单元段中 的多语言数据存储地址调整为原地址加上新添加的索引值单元段的 长度,新添加的多语言数据存储地址为第 一存储空间的起始位置加 上所有索引值单元段(含新添加的索引值单元段)长度,再加上所 有已经写入第二存储空间的多语言数据的长度之和;
将第 一存储空间和第二存储空间首尾拼接,形成多语言资源文件。
由上可以看出,连续的二进制存储结构的空间利用率和查找的效 率非常高。而索引值单元段和多语言数据是成对写入的,在生成多 语言资源文件的时候,需要不断的成对写入索引值单元段和多语言 数据。所以直接写入的话会造成对已有数据的覆盖。用临时文件A (对应于本发明所述多语言资源文件的第一存储空间)和B (对应 于本发明所述多语言资源文件的第二存储空间)将索引值单元段和 多语言数据分开保存,就解决了覆盖的问题。而地址的调整规则解 决了临时文件A和B连接的时候,地址变化的问题。
优选的是,所述第 一存储空间和第二存储空间分别对应于第 一存 储文件和第二存储文件;
步骤C所述生成多语言资源文件包括在第 一存储文件中依次写 入索引值单元段,在第二存储文件中依次写入对应的多语言数据;
还包括索引值单元段中的多语言数据存储地址的生成步骤
第一次写入的多语言数据存储地址是第二存储文件的起始地址, 之后每次新写入的多语言数据存储地址是上一次写入的多语言数据 存储地址加上上次加入多语言数据的长度。
由上可以看出,多语言资源文件也可以分成两个部分分别存储。 便于维护和管理。而利用对应的多语言数据存储地址的调整规则可 以实现多语言资源文件的自动生成。
优选的是,对于已有软件,步骤C所述生成至少一个多语言资源 文件之前还包括
形成索引值与已有语言数据——对应的对照文档;
提交翻译并产生索引值与多语言数据的对照文档。
由上可以看出,对于已有软件,因为多语言资源文件中的数据是 成对写入的,利用对照文档可以更高效的生成多语言资源文件。
优选的是,其特征在于,步骤E所述根据调用函数中的索引值 在所匹配的多语言资源文件中匹配多语言数据后还包括
将所述索引值和多语言数据对应保存在内存中,用于再次根据索 引值读取多语言数据时,优先在内存中根据索引值查找读取。
由上可以看出,从内存和从硬盘中读取数据的速度和效率的差别 是非常大的,而往往在软件的使用过程中,需要重复调用同一个功 能模块,例如需要多次调用保存界面。所以将已经读取的索引值和 多语言数据对应保存在内存中,在读取硬盘数据之前先在内存中查 找,将大大提高效率。


图1为实现计算机软件多语言支持方法的流程图2为索引值结构图3为索引表结构图4为多语言资源文件的存储结构图5为多语言资源文件中的逻辑关联结构图6为由索引值与多语言数据的对照文档生成多语言资源文件 的示意图7为对于已有的中文版软件为多语言数据生成索引值的流程
图8为在索引表中检索多语言资源文件的流程图9为资源文件和软件模块结构相对应的示意图10为生成多语言资源文件的流程图11为多语言资源数据文件中读取多语言数据的流程图12为对于已有的中文版软件生成多语言资源文件的流程图13为索引值与多语言数据的对照文档的结构示意图。
具体实施例方式
本发明将多语言数据从软件代码中剥离出来,为各个代码段建立 包含多个多语言数据的多语言资源文件。并且,由于目前软件多采 用模块方式进行架构,而每个代码段对应软件的每个模块,因此各 个代码段可以根据各个模块所形成的层次结构进行划分。据此,根 据各个代码段所对应的层次结构,对各个代码段对应的多语言资源 文件中的索引值的分类值进行命名,即本发明在所述索引值中包括 该多语言数据所对应的代码段所在层次结构中的位置。在软件运行 调用多语言资源文件时,根据代码段所在层次结构中的位置作为关 键字去检索多语言资源文件,加载其中的多语言数据,通过用户界 面显示出来,从而实现计算机软件对多语言的支持。
如图1所示为实现计算机软件多语言支持的方法的流程图,下面 参照图l对本发明进行详细说明。
步骤IOI、为各个多语言数据生成索引值,所述索引值的内容包 括分类值和编号。
其中,分类值对应了该多语言数据所在的代码段在软件的层次结 构中的位置,每个不同的层次之间使用分隔点进行区分。编号用来
对同一分类值下的不同多语言数据进行区分。
如图2示出了一个索引值,其中该索引值U8.SCM.PU.001的分 类值为U8.SCM.PU,编号为001。图3示出了该索引值与软件层次 结构的对应关系,其中U8为软件的顶层的模块,SCM为U8的一 个子模块,PU为SCM的一个子模块,对应软件由上到下的层次结 构,索引值命名为所述的U8.SCM.PU。根据各个模块的关系,相应 的,U8.SCM.PU可以称为是U8.SCM的子分类,U8.SCM是U8的子 分类,反之,U8是U8.SCM的父分类,U8.SCM是U8.SCM.PU的父 分类。
步骤102、在所述计算机软件的源代码中使用多语言数据的位置 设置调用函数,所述调用函数中包括此处位置的多语言数据的索引 值。
调用函数可在软件执行时,根据索引值读取多语言数据。其中读 取过程将在后面进行说明。
步骤103、生成至少一个多语言资源文件。其中,每个多语言资 源文件包含的多语言数据对应相同分类值或者对应相同分类值的子 分类值。其中生成多语言资源文件的具体过程将在后文对应图10进 行说明。
其中,如图4示出了本例中的多语言资源文件的存储结构,多语 言资源文件分为前后两部分(即本发明所述多语言资源文件的两个 存储空间),其中前半部连续存储索引值单元段,每个索引值单元 段包括"索引值长度"、"索引值"、"多语言数据存储地址"和 "多语言数据长度",后半部连续存储具体的多语言数据,前、后 部分中间通过一个分界标记T,标识。读取时索引值单元段是依次 读取的;资源段中多语言数据的起始位置和长度由"多语言数据存 储地址,,和"多语言数据长度"描述。上述的前后部分的逻辑关联 结构具体可参见图5示出的多语言资源文件结构图。图6示出了记
载有多个多语言数据的多语言资源文件。
步骤104、对应各个代码段在软件中的层次结构中的位置,为所
对应的各个多语言资源文件生成索引表。
如图3示出了本例中的树状结构的索引表,其各个节点对应为各 个索引项,而各个索引项分别对应分类值以及该分类值的多语言资 源文件的存储位置,这样就可以在索引表中用索引项快速的检索到 多语言资源文件,关于对索引表的使用,将在后面进行说明。
步骤105、在程序执行的时候,执行所述调用函数。
步骤106、检索索引表,匹配多语言资源文件,然后执行步骤107, 如果匹配失败,则向调用函数返回查找失败,结束本次流程。该步 骤的具体实现过程在后文对应图8进行详细说明。
步骤107、冲全索多语言资源文件,匹配并读:f又多语言数据,如果 匹配失败,则向调用函数返回查找失败。该步骤的具体实现过程在 后文对应图ll进行详细说明。
由上可见,本发明不同的多语言资源文件包含了不同分类值的多 语言数据,从而,各个多语言资源文件对应软件的各个模块,并且 对应各个模块的层次结构进行命名,便于按照层级结构逐步缩小范 围进行多语言资源文件的快速检索。而且各个模块对应的多语言数 据存储在各自独立的资源文件中,便于集中维护管理,而各个多语 言资源文件所形成的层级结构,也便于读取时遍历和回溯查询的方 便。
其中,对于上述步骤101描述的索引值的生成过程,对于设计中 的软件,可以在规划时即按照所设计的软件的层次对多语言数据的 索引值进行设计。对于已经存在的软件,可以采用下述方法自动生 成,参见图7所示的对于已有的中文版软件为多语言数据生成索引 值的流程图,包括以下步骤
步骤701、根据中文语言数据所在位置,设定索引值的分类值。
例如对于在PU模块中的多语言数据的分类值设定为 U8.SCM.PU。
步骤702、设定编号初始值,例如OOl。
步骤703、从源代码的该分类值初始位置开始搜索第一个中文语 言数据,并赋予第 一 个中文语言数据的索引值编号为编号初始值, 生成其索引值。
在本步骤中,由于中文和英文字母、数字、基本符号在计算机中 的编码是不同的,在Unicode ( —种支持多国语言的国际通用的字符 编码体系)编码集中,中文字符的编码范围为X4E00~X9FA5。所 以可以据此实现自动识别并提取软件源代码中的中文字符串,然后 进行编码。例如PU模块中的第一个中文语言数据的索引值为 U8.SCM.PU.001。
步骤704、搜索下一个中文语言数据。
步骤705、赋予该中文语言数据的索引值编号为与该分类值中之 前赋予的所有编号不同的新的编号。
为了确保编号在该分类值中具有唯一性可以采用不同方法,在本 实施例中,采用的是在前一个编号的基础上加1来生成新的编号, 例如第二个中文语言数据的编号为002。
步骤706、返回步骤704,直到源代码的该分类值作用范围的结 束位置。
下面,结合图8对上述的步骤106读取多语言资源文件的步骤再 进一步进行详细描述,包括
步骤801、在程序执行的时候,执行所述调用函数,并加载索引表。
步骤802、解析调用函数传入的索引值,获取该索引值所包含的 分类值。
本实施例中分类值为索引值中最后一个分隔点"."前的文本, 比如U8.SCM.PU.001这个索引值的分类值为U8.SCM.PU。
步骤803 804、在索引表中查找与此分类值匹配的索引项,查找 到匹配的索引项时执行步骤805,否则执行步骤806。
在本实施例中,索引表是对应于软件的层次结构的一棵树,索引
项是树的节点。例如图3中与U8.SCM.PU匹配的索引项为 U8->SCM->PU,根据匹配到的索引项便可以直接找到对应的资源文 件所存储的地址,在此示例中对应于"多语言资源文件4"。
步骤805、依照多语言资源文件的存储地址读取多语言资源文 件,结束多语言资源文件的读取步骤。
步骤806、判断是否有父分类值,是则进入步骤807,否则进入 步骤808。
严格的说一个多语言资源文件代表一个资源分类,即存储在一个 多语言资源文件中的所有索引值必须是同 一分类值,但是为了增加 软件的健壮性,提高其容错能力,在本例中,多语言资源文件中还 可能包括其分类值的子分类值的多语言数据。也就是说此资源文件 中所有索引值的分类值是属于同一分类值或该分类值的子分类。如 图9所示对应于U8.SCM的多语言资源文件1中,既有U8.SCM的 多语言数据,又有其子分类的U8.SCM.C的多语言数据。比如在 检索U8.SCM.C.001时,其末级分类值为U8.SCM.C,如果初次匹配 不到分类值U8.SCM.C对应的多语言资源文件,则还可以检索对应 的父分类U8.SCM。
步骤807、取分类值的父分类值,转到步骤803。比如如果 U8.SCM.ST找不到对应的直接索引项,则截掉索引值分类前缀中的 最后一段,取父分类U8.SCM进行匹配。
步骤808,向调用函数返回查找失败。
由此,利用分类值实现了对多语言资源文件的快速检索。
多语言资源文件的二进制存储结构特征为资源的快速查找检索 提供了基本结构支持。同时二进制存储结构也使得多语言资源文件 十分紧凑,空间利用率高,提高了存储效率。在另一个实施例中还 可以每个语言种类对应一个此种结构的资源文件。
在计算机磁盘系统中,二进制文件在磁盘中的存储空间是连续 的,要将数据写到文件中只能不断地追加到文件尾部,如果在中间 进行插入的话,就会覆盖原有的数据。而生成多语言资源文件的过
程是需要将索引值单元段和多语言数据成对的写入的。所以需要采 用特别的方法避免新的字段将原字段覆盖。
下面结合图10进一步详细说明步骤103即多语言资源文件的生 成过程。
图10中的临时文件A和临时文件B分别表示本发明所述多语言 资源文件的第 一存储空间和第二存储空间。
步骤1001、生成临时文件A,用于临时保存前部。 步骤1002、生成临时文件B,用于临时保存后部。 步骤1003、在临时文件A中写入第一个索引值单元段。 对于第 一个索引值/多语言数据对,首先构造索引值单元段结构, 如图4的前部所示。其中索引值的二进制长度和多语言数据的二进 制长度都可以直接计算出来,而第三项多语言数据存储地址,在本 例中是在多语言资源文件中的地址偏移量,也就是起始位置加上索 引值单元段的长度。
步骤1004、在临时文件B中写入对应的多语言数据。 步骤1005、判断是否还有其它多语言数据,有则进入步骤1007 中,无则进入步骤1006中。
步骤1006、将临时文件A和B首尾拼接,结束本次多语言资源 文件的生成过程。
步骤1007、在临时文件A中写入新的索引值单元段,新写入的 多语言数据存储地址为多语言资源文件起始位置加上包括新写入的 所有索引值单元段长度、在加上所有已经写入临时文件B的多语言 数据的长度的总和。
步骤1008、在临时文件B中写入对应的多语言数据。 步骤1009、调整多语言数据存储地址,进入步骤1005中,每一 次新索引值/多语言数据对的写入都需要去调整前面已经写入索引值 临时文件的所有索引值单元段中多语言数据存储地址,直到最后一 个索引值/多语言数据对写入临时文件完毕。新地址为原地址加上新 添加的索引值单元段的长度。
以上步骤实现了多语言资源文件在连续二进制存储结构下的生 成过程。
在查找到多语言资源文件后,需要在多语言资源文件中检索并读 取多语言数据。下面结合图11,以"索引值长度"、"多语言数据
存储地址,,和"多语言数据长度,,均为4个字节为例对步骤107,在 多语言资源数据文件中读取多语言数据的过程进行进 一 步详细说 明
步骤IIOI、打开多语言资源文件。
步骤1102、读取的指针定位到所述多语言资源文件起始位置。
步骤1103、先读取4个字节的"索引值长度"。
步骤1104、读取索引值,即指针移动4个字节定位到"索引值" 的开始处,读取由"索引值长度"描述的长度。
步骤1105、将读取的索引值与函数传入的索引值进行比较,匹 配则进入步骤1106,不匹配则进入步骤1107。
步骤1106、读取多语言数据存储地址和多语言数据长度,即读 取"索引值"后的4个字节的"多语言数据存储地址",接着继续 读取4个字节,取得"多语言数据长度",随后,根据取得的"多 语言数据存储地址"将指针直接定位到多语言数据在文件中的存储 位置,并根据"多语言数据长度"读取多语言数据并返回给程序, 完成本次读取过禾呈。
步骤1107、判断是否有下一个索引值单元段,有则进入步骤 1109,无则进入步骤1108,即指针最终会遇到索引值单元段与多语 言数据段的分界标记T,,此时预示查找失败。
步骤1108、返回查找失败。在另一个实施例中,如果一个分类 值对应多个多语言资源文件,则可以跳转到索引表中的同级其它多 语言数据文件中搜索。
步骤1109、指针根据索引值长度移到下一个索引值单元段,进 入步骤1103,即指针向后移动8个字节("资源地址"4个字节+"资 源长度"4个字节)定位到下一个索引值单元段的起始位置。
以上步骤基于多语言资源文件的连续二进制存储结构实现了对 多语言数据的快速检索和读取。
对于已有的中文版软件,也可以为其生成多语言资源文件,在参
照图7生成索引值之后,再执行下面的步骤生成多语言资源文件, 参见图12示出的流程图,包括以下步骤
步骤1201、形成索引值与中文语言数据的对照文档,其结构如 图13所示。
步骤1202、提交翻译并产生索引值与多语言数据的对照文档, 图13为 一 个实施例中的索引值与多语言数据的对照文档的结构示意 图。
步骤1203、索引值与多语言数据的对照文档转化成多语言资源 文件。
图6为由索引值与多语言数据的对照文档生成多语言资源文件 的示意图,其成对写入索引值和多语言数据的具体步骤可以参照图 IO中步骤完成。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明, 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进 等,例如,图4所示的多语言资源文件的存储结构还可以是两个文 件,索引值单元段组成第一文件,多语言数据构成第二文件,他们 之间由索引值单元段中的多语言数据存储地址进行对应。均应包含 在本发明的保护范围之内。
权利要求
1. 一种实现计算机软件多语言支持的方法,其特征在于,包括A、在软件代码中使用多语言数据的位置设置调用函数;B、为与调用函数对应的多语言数据生成包括分类值和编号的索引值,并将所述索引值添加到对应的调用函数中;C、生成至少一个多语言资源文件,所述多语言资源文件包括对应相同分类值的多语言数据;D、软件运行中执行所述调用函数时,根据调用函数中索引值中的分类值匹配多语言资源文件;E、根据调用函数中的编号在所匹配的多语言资源文件中匹配多语言数据,向调用函数返回所匹配的多语言数据。
2. 如权利要求l所述的方法,其特征在于,所述分类值对应于 调用函数所在代码段在软件层次结构中的位置。
3. 如权利要求l所述的方法,其特征在于,步骤C后还包括 Cl、生成包含与分类值相对应的索引项的索引表,对应所述索引项存储有多语言资源文件的存储地址;步骤D中所述根据调用函数中索引值中的分类值匹配多语言资 源文件包括Dl、根据调用函数中索引值中的分类值匹配所述索引表的索引项;D2、根据匹配的索引项对应的存储地址确定多语言资源文件。
4. 如权利要求3所述方法,其特征在于,所述多语言资源文件还包括对应相同分类值的子分类值的多语 言数据;步骤D1包括根据调用函数中索引值中的分类值在索引表中从 分类值直接对应的索引项开始向最顶层索引项查找匹配的索引项。
5. 如权利要求l所述的方法,其特征在于,步骤B中所述生成 包括分类值和编号的索引值的步骤包括 根据各个多语言数据所在的不同代码段在软件的层次结构的不同位置,设定索引值的不同分类值;在每个代码段中,从所述代码段初始位置搜索多语言数据,并依 次使用所述代码段的分类值和不同的编号为所搜索到的多语言数据 生成索引值。
6. 如权利要求l所述的方法,其特征在于,步骤C所述多语言 资源文件包括用于存储索引值的编号和与各编号对应的多语言数 据的存储地址的第 一 存储空间,和用于存储多语言数据的第二存储 空间;所述步骤E包括子步骤根据调用函数中的索引值中的编号与所述第 一存储空间中的编 号进行匹配;根据所匹配的第一存储空间中的编号所对应的多语言数据的存 储地址读取第二存储空间中的多语言数据,并返回给调用函数。
7. 如权利要求l所述的方法,其特征在于,步骤C所述多语言 资源文件包括用于存储索引值和与各索引值对应的多语言数据的 存储地址的第 一存储空间,和用于存储多语言数据的第二存储空间;所述步骤E包括子步骤根据调用函数中的索引值与第 一存储空间中的索引值进行匹配; 根据所匹配的第 一存储空间中的索引值所对应的多语言数据的 存储地址读取第二存储空间中的多语言数据,并返回给调用函数。
8. 如权利要求7所述的方法,其特征在于,第一存储空间和第 二存储空间采用的是连续的二进制存储结构,第 一存储空间中依次 存有至少一个索引值单元段;索引值单元段的结构包含固定长度的索引值长度、索引值和固 定长度的多语言数据存储地址和固定长度的多语言数据长度;所述根据调用函数中的索引值与第一存储空间中的索引值进行 匹配包括指针定位到多语言资源文件的第 一存储空间起始位置,从第 一个 索引值单元段开始,对指针指向的各个索引值单元段依次取索引值 单元段的索引值长度、根据索引值长度完整读取索引值、用所读取的索引值和调用函数中的索引值比较,直到比较结果匹配;所述根据所匹配的第 一存储空间中的索引值所对应的多语言数据的存储地址读取第二存储空间中的多语言数据包括读取所匹配的第 一存储空间的索引值对应的多语言数据存储地址和多语言数据长度,指针移到第二存储空间中所述多语言数据的存储地址,按照多语言数据长度读取多语言数据。
9. 如权利要求8所述方法,其特征在于,多语言资源文件中第 一存储空间和第二存储空间首尾相接;步骤C所述生成多语言资源文件包括分别生成第 一存储空间和第二存储空间,第 一存储空间包含索引 值单元段,第二存储空间包含多语言数据;在第一存储空间中依次写入索引值单元段,在第二存储空间依次 写入多语言数据,第 一次写入的多语言数据存储地址是第 一存储空 间的起始位置加上第一个索引值单元段的长度,之后每次新写入第多语言数据存储地址调整为原地址加上新添加的索引值单元段的长 度,新添加的多语言数据存储地址为第一存储空间的起始位置加上和,再加上所有已写入第二存储空间的多语言数据的长度之和; 将第 一存储空间和第二存储空间首尾拼接,形成多语言资源文件。
10. 如权利要求8所述的方法,其特征在于,所述第 一存储空间和第二存储空间分别对应于第 一存储文件和 第二存储文件;步骤C所述生成多语言资源文件包括在第 一 存储文件中依次写 入索引值单元段,,在第二存储文件中依次写入对应的多语言数据; 还包括索引值单元段中的多语言数据存储地址的生成步骤第 一 次写入的多语言数据存储地址是第二存储文件的起始地址, 之后每次新写入的多语言数据存储地址是上一次写入的多语言数据 存储地址加上上次加入多语言数据的长度。
11. 如权利要求l所述的方法,其特征在于,对于已有中文版软件,步骤C所述生成至少一个多语言资源文件之前还包括 形成索引值与中文语言数据——对应的对照文档; 提交翻译并产生索引值与多语言数据的对照文档。
12. 如权利要求1 ~3任意一项权利要求所述的方法,其特征在于, 步骤E所述根据调用函数中的索引值在所匹配的多语言资源文件中 匹配多语言数据后还包括将所述索引值和多语言数据对应保存在内存中,用于再次根据索 引值读取多语言数据时,优先在内存中根据索引值查找读取。
全文摘要
本发明公开了一种实现计算机软件多语言支持的方法,包括A.在软件代码中使用多语言数据的位置设置调用函数;B.为与调用函数对应的多语言数据生成包括分类值和编号的索引值,并将所述索引值添加到对应的调用函数中;C.生成至少一个多语言资源文件,所述多语言资源文件包括对应相同分类值的多语言数据;D.软件运行中执行所述调用函数时,根据调用函数中索引值中的分类值匹配多语言资源文件;E.根据调用函数中的编号在所匹配的多语言资源文件中匹配多语言数据,向调用函数返回所匹配的多语言数据。本发明可实现多语言数据的有效管理和快速读取响应。
文档编号G06F17/30GK101393529SQ20081022596
公开日2009年3月25日 申请日期2008年11月7日 优先权日2008年11月7日
发明者静 李 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1