CN101393529B - 一种实现计算机软件多语言支持的方法 - Google Patents
一种实现计算机软件多语言支持的方法 Download PDFInfo
- Publication number
- CN101393529B CN101393529B CN2008102259621A CN200810225962A CN101393529B CN 101393529 B CN101393529 B CN 101393529B CN 2008102259621 A CN2008102259621 A CN 2008102259621A CN 200810225962 A CN200810225962 A CN 200810225962A CN 101393529 B CN101393529 B CN 101393529B
- Authority
- CN
- China
- Prior art keywords
- index value
- language data
- language
- storage space
- source file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种实现计算机软件多语言支持的方法,包括:A、在软件代码中使用多语言数据的位置设置调用函数;B、为与调用函数对应的多语言数据生成包括分类值和编号的索引值,并将所述索引值添加到对应的调用函数中;C、生成至少一个多语言资源文件,所述多语言资源文件包括对应相同分类值的多语言数据;D、软件运行中执行所述调用函数时,根据调用函数中索引值中的分类值匹配多语言资源文件;E、根据调用函数中的编号在所匹配的多语言资源文件中匹配多语言数据,向调用函数返回所匹配的多语言数据。本发明可实现多语言数据的有效管理和快速读取响应。
Description
技术领域
本发明涉及一种实现计算机软件的多语言支持的方法。
背景技术
当前软件产品和服务的国际化首先需要解决软件多语言支持的问题。多语言支持,从用户角度来看,一般是指:安装同一套应用软件,能在多种语言环境下使用;从软件开发者角度来看,一般是指:编写同一套软件代码,实现同一功能逻辑,但能显示多种语言用户界面。
原有的多语言软件产品一般是针对不同语言提供多个程序版本,这样不仅软件开发效率极低,而且不能满足用户安装一套软件在多种语言下使用的要求。
解决这个问题的关键技术是如何将多语言数据从软件代码中剥离出来,单独管理和维护,使多语言数据不影响程序逻辑;并且在软件运行时,根据用户当前使用的语言环境,动态、准确地加载多语言数据,通过用户界面显示出来。
中国专利CN200710140464.2公开了一种用于解决计算机软件多语言支持问题的方法和系统。该发明采用的方法是从中文软件中提取中文字符串,并在所述中文字符串的相关位置添加调用函数,然后针对提取出的中文字符串采用哈希算法生成哈希值,并由所述哈希值与多语言数据构成多语言资源文件,在软件运行时计算函数中的中文字符串的哈希值并使用该哈希值在多语言资源文件中匹配多语言数据。首先,该发明中在软件运行时需要根据函数传入的中文字符串进行哈希计算,以便定位多语言资源文件中哈希值所在的多语言数据,当进行哈希计算的中文字符串的长度过长时,会使哈希计算的效率成倍降低;其次,该发明中没有详细描述存储哈希值和多语言数据的多语言资源文件的二进制存储结构,也没有描述如何将哈希值映射为多语言数据在多语言资源文件中的二进制存储地址,因为哈希值并不等同于多语言数据存储在文件中的偏移量地址,所以不能直接用哈希值寻址;另外,该发明中强调为了提高响应速度、减小哈希冲突机率、降低多语言资源文件大小,可以采取用多个多语言资源文件存储多语言数据,但发明中并没有描述这些多语言资源文件如何组织,按照什么规则分类,如何查找定位,事实上对于按功能和模块划分的大规模软件系统而言,多语言资源文件可能数量众多,对多语言资源文件的有效维护管理、自动快速查找定位,是非常重要的,但该发明中并没有考虑这些。
本技术领域内急需一种比较完整的能对多语言数据实现有效管理、高效存储、快速读取响应的计算机软件多语言支持的方法。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现计算机软件多语言支持的方法,可以实现多语言数据的有效管理和快速读取响应。
对于上述技术问题,本发明是这样加以解决的。实现计算机软件多语言支持的方法,包括:
A、在软件代码中使用多语言数据的位置设置调用函数;
B、为与调用函数对应的多语言数据生成包括分类值和编号的索引值,并将所述索引值添加到对应的调用函数中;
C、生成至少一个多语言资源文件,所述多语言资源文件包括对应相同分类值的多语言数据;
D、软件运行中执行所述调用函数时,根据调用函数中索引值中的分类值匹配多语言资源文件;
E、根据调用函数中的编号在所匹配的多语言资源文件中匹配多语言数据,向调用函数返回所匹配的多语言数据。
由上可以看出,为了实现多语言数据的有效管理和快速读取响应,利用索引值的两个部分,将整个过程分为两个层次,即多语言资源文件检索和多语言数据检索。多语言资源文件实现了多语言数据和软件源代码的物理分离,便于多语言数据独立维护和管理。通过索引值中的分类值实现对多语言资源文件进行归类管理和地址逻辑映射,便于快速检索多语言资源文件。通过索引值中的编号所对应的多语言数据的存储地址实现在多语言资源文件内快速检索多语言数据。
优选的是,所述分类值对应于调用函数所在代码段在软件层次结构中的位置。
由上可以看出,通过分类值和代码段的对应,可以实现多语言资源文件和代码段的对应。从而,有利于多语言资源文件的维护管理和快速查找。尤其是对于需要管理大量多语言数据的大规模分层结构的软件系统而言效果更为明显。例如软件的某个功能级别增加一个子功能模块,可以对应的增加一个多语言资源文件即可。而且也方便根据功能模块的层级确定分类值的作用域。采用同一分类值或其子分类值。
优选的是,步骤C后还包括:
C1、生成包含与分类值相对应的索引项的索引表,对应所述索引项存储有多语言资源文件的存储地址;
步骤D中所述根据调用函数中索引值中的分类值匹配多语言资源文件包括:
D1、根据调用函数中索引值中的分类值匹配所述索引表的索引项;
D2、根据匹配的索引项对应的存储地址确定多语言资源文件。
由上可以看出,通过索引表的利用,可以实现在海量多语言资源文件中快速查找所需要的多语言资源文件。因为只需要在索引表中检索就可以直接定位对应的多语言资源文件。
优选的是,所述多语言资源文件中还包括对应相同分类值的子分类值的多语言数据;
步骤D1包括:根据调用函数中索引值中的分类值在索引表中从分类值直接对应的索引项开始向最顶层索引项查找匹配的索引项。
由上可以看出,通过自底向上的匹配索引项,可以有效提高软件系统的容错能力,增加健壮性。同时也方便多语言数据和多语言资源文件的维护。例如在新增加多语言数据的时候,如果找不到与多语言数据直接对应的分类值,当新增加的多语言数据的条目比较多时,可以生成新的多语言资源文件,如果新增加的多语言数据的条目比较少,则可以将这批多语言数据添加到在其所属的父分类值的多语言资源文件中,不用新增加多语言资源文件。
优选的是,步骤B中所述生成包括分类值和编号的索引值的步骤包括:
根据各个多语言数据所在的不同代码段在软件的层次结构的不同位置,设定索引值的不同分类值;
在每个代码段中,从所述代码段初始位置搜索多语言数据,并依次使用所述代码段的分类值和不同的编号为所搜索到的多语言数据生成索引值。
由上可以看出,对于已有软件,在对分类值的作用域,也就是对应与软件的层次结构划分完成之后。分类值可以通过上述步骤实现自动生成。
优选的是,步骤C所述多语言资源文件包括:用于存储索引值的编号和与各编号对应的多语言数据的存储地址的第一存储空间,和用于存储多语言数据的第二存储空间;
所述步骤E包括子步骤:
根据调用函数中的索引值中的编号与所述第一存储空间中的编号进行匹配;
根据所匹配的第一存储空间中的编号所对应的多语言数据的存储地址读取第二存储空间中的多语言数据,并返回给调用函数。
由上可以看出,在多语言资源文件的第一存储空间可以对多语言数据进行快速检索,其类似于通过索引表实现多语言资源文件的快速检索一样,因为就算是需要遍历才能找到对应的多语言数据,其检索动作也只是在第一存储空间中完成。
优选的是,步骤C所述多语言资源文件包括:用于存储索引值和与各索引值对应的多语言数据的存储地址的第一存储空间,和用于存储多语言数据的第二存储空间;
所述步骤E包括子步骤:
根据调用函数中的索引值与第一存储空间中的索引值进行匹配;
根据所匹配的第一存储空间中的索引值所对应的多语言数据的存储地址读取第二存储空间中的多语言数据,并返回给调用函数。
由上可以看出,使用索引值进行匹配而不仅是编号,可以提高软件的容错能力,提高健壮性。也为多语言数据的管理和维护提供了一定的方便。
优选的是,第一存储空间和第二存储空间采用的是连续的二进制存储结构,第一存储空间中依次存有至少一个索引值单元段;
索引值单元段的结构包含:固定长度的索引值长度、索引值和固定长度的多语言数据存储地址和固定长度的多语言数据长度;
所述根据调用函数中的索引值与第一存储空间中的索引值进行匹配包括:
指针定位到多语言资源文件的第一存储空间起始位置,从第一个索引值单元段开始,对指针指向的各个索引值单元段依次取索引值单元段的索引值长度、根据索引值长度完整读取索引值、用所读取的索引值和调用函数中的索引值比较,直到比较结果匹配;
所述根据所匹配的第一存储空间中的索引值所对应的多语言数据的存储地址读取第二存储空间中的多语言数据包括:
读取所匹配的第一存储空间的索引值对应的多语言数据存储地址和多语言数据长度,指针移到第二存储空间中所述多语言数据的存储地址,按照多语言数据长度读取多语言数据。
由上可以看出,二进制存储结构为多语言数据的快速查找提供了基本结构支持,因为整个过程进行的只是类似指针移动、读取、比较这样非常简单的动作。而且因为是二进制结构,所以空间利用率也非常高。
优选的是,多语言资源文件中第一存储空间和第二存储空间首尾相接;
步骤C所述生成多语言资源文件包括:
分别生成第一存储空间和第二存储空间,第一存储空间包含索引值单元段,第二存储空间包含多语言数据;
在第一存储空间中依次写入索引值单元段,在第二存储空间依次写入多语言数据,第一次写入的多语言数据存储地址是第一存储空间的起始位置加上第一个索引值单元段的长度,之后每次新写入第一存储空间的索引值单元段时都要将所有已写入的索引值单元段中的多语言数据存储地址调整为原地址加上新添加的索引值单元段的长度,新添加的多语言数据存储地址为第一存储空间的起始位置加上所有索引值单元段(含新添加的索引值单元段)长度,再加上所有已经写入第二存储空间的多语言数据的长度之和;
将第一存储空间和第二存储空间首尾拼接,形成多语言资源文件。
由上可以看出,连续的二进制存储结构的空间利用率和查找的效率非常高。而索引值单元段和多语言数据是成对写入的,在生成多语言资源文件的时候,需要不断的成对写入索引值单元段和多语言数据。所以直接写入的话会造成对已有数据的覆盖。用临时文件A(对应于本发明所述多语言资源文件的第一存储空间)和B(对应于本发明所述多语言资源文件的第二存储空间)将索引值单元段和多语言数据分开保存,就解决了覆盖的问题。而地址的调整规则解决了临时文件A和B连接的时候,地址变化的问题。
优选的是,所述第一存储空间和第二存储空间分别对应于第一存储文件和第二存储文件;
步骤C所述生成多语言资源文件包括:在第一存储文件中依次写入索引值单元段,在第二存储文件中依次写入对应的多语言数据;
还包括索引值单元段中的多语言数据存储地址的生成步骤:
第一次写入的多语言数据存储地址是第二存储文件的起始地址,之后每次新写入的多语言数据存储地址是上一次写入的多语言数据存储地址加上上次加入多语言数据的长度。
由上可以看出,多语言资源文件也可以分成两个部分分别存储。便于维护和管理。而利用对应的多语言数据存储地址的调整规则可以实现多语言资源文件的自动生成。
优选的是,对于已有软件,步骤C所述生成至少一个多语言资源文件之前还包括:
形成索引值与已有语言数据一一对应的对照文档;
提交翻译并产生索引值与多语言数据的对照文档。
由上可以看出,对于已有软件,因为多语言资源文件中的数据是成对写入的,利用对照文档可以更高效的生成多语言资源文件。
优选的是,其特征在于,步骤E所述根据调用函数中的索引值在所匹配的多语言资源文件中匹配多语言数据后还包括:
将所述索引值和多语言数据对应保存在内存中,用于再次根据索引值读取多语言数据时,优先在内存中根据索引值查找读取。
由上可以看出,从内存和从硬盘中读取数据的速度和效率的差别是非常大的,而往往在软件的使用过程中,需要重复调用同一个功能模块,例如需要多次调用保存界面。所以将已经读取的索引值和多语言数据对应保存在内存中,在读取硬盘数据之前先在内存中查找,将大大提高效率。
附图说明
图1为实现计算机软件多语言支持方法的流程图;
图2为索引值结构图;
图3为索引表结构图;
图4为多语言资源文件的存储结构图;
图5为多语言资源文件中的逻辑关联结构图;
图6为由索引值与多语言数据的对照文档生成多语言资源文件的示意图;
图7为对于已有的中文版软件为多语言数据生成索引值的流程图;
图8为在索引表中检索多语言资源文件的流程图;
图9为资源文件和软件模块结构相对应的示意图;
图10为生成多语言资源文件的流程图;
图11为多语言资源数据文件中读取多语言数据的流程图;
图12为对于已有的中文版软件生成多语言资源文件的流程图;
图13为索引值与多语言数据的对照文档的结构示意图。
具体实施方式
本发明将多语言数据从软件代码中剥离出来,为各个代码段建立包含多个多语言数据的多语言资源文件。并且,由于目前软件多采用模块方式进行架构,而每个代码段对应软件的每个模块,因此各个代码段可以根据各个模块所形成的层次结构进行划分。据此,根据各个代码段所对应的层次结构,对各个代码段对应的多语言资源文件中的索引值的分类值进行命名,即本发明在所述索引值中包括该多语言数据所对应的代码段所在层次结构中的位置。在软件运行调用多语言资源文件时,根据代码段所在层次结构中的位置作为关键字去检索多语言资源文件,加载其中的多语言数据,通过用户界面显示出来,从而实现计算机软件对多语言的支持。
如图1所示为实现计算机软件多语言支持的方法的流程图,下面参照图1对本发明进行详细说明。
步骤101、为各个多语言数据生成索引值,所述索引值的内容包括分类值和编号。
其中,分类值对应了该多语言数据所在的代码段在软件的层次结构中的位置,每个不同的层次之间使用分隔点进行区分。编号用来对同一分类值下的不同多语言数据进行区分。
如图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示出了本例中的多语言资源文件的存储结构,多语言资源文件分为前后两部分(即本发明所述多语言资源文件的两个存储空间),其中前半部连续存储索引值单元段,每个索引值单元段包括“索引值长度”、“索引值”、“多语言数据存储地址”和“多语言数据长度”,后半部连续存储具体的多语言数据,前、后部分中间通过一个分界标记“|”标识。读取时索引值单元段是依次读取的;资源段中多语言数据的起始位置和长度由“多语言数据存储地址”和“多语言数据长度”描述。上述的前后部分的逻辑关联结构具体可参见图5示出的多语言资源文件结构图。图6示出了记载有多个多语言数据的多语言资源文件。
步骤104、对应各个代码段在软件中的层次结构中的位置,为所对应的各个多语言资源文件生成索引表。
如图3示出了本例中的树状结构的索引表,其各个节点对应为各个索引项,而各个索引项分别对应分类值以及该分类值的多语言资源文件的存储位置,这样就可以在索引表中用索引项快速的检索到多语言资源文件,关于对索引表的使用,将在后面进行说明。
步骤105、在程序执行的时候,执行所述调用函数。
步骤106、检索索引表,匹配多语言资源文件,然后执行步骤107,如果匹配失败,则向调用函数返回查找失败,结束本次流程。该步骤的具体实现过程在后文对应图8进行详细说明。
步骤107、检索多语言资源文件,匹配并读取多语言数据,如果匹配失败,则向调用函数返回查找失败。该步骤的具体实现过程在后文对应图11进行详细说明。
由上可见,本发明不同的多语言资源文件包含了不同分类值的多语言数据,从而,各个多语言资源文件对应软件的各个模块,并且对应各个模块的层次结构进行命名,便于按照层级结构逐步缩小范围进行多语言资源文件的快速检索。而且各个模块对应的多语言数据存储在各自独立的资源文件中,便于集中维护管理,而各个多语言资源文件所形成的层级结构,也便于读取时遍历和回溯查询的方便。
其中,对于上述步骤101描述的索引值的生成过程,对于设计中的软件,可以在规划时即按照所设计的软件的层次对多语言数据的索引值进行设计。对于已经存在的软件,可以采用下述方法自动生成,参见图7所示的对于已有的中文版软件为多语言数据生成索引值的流程图,包括以下步骤:
步骤701、根据中文语言数据所在位置,设定索引值的分类值。
例如对于在PU模块中的多语言数据的分类值设定为U8.SCM.PU。
步骤702、设定编号初始值,例如001。
步骤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,在多语言资源数据文件中读取多语言数据的过程进行进一步详细说明:
步骤1101、打开多语言资源文件。
步骤1102、读取的指针定位到所述多语言资源文件起始位置。
步骤1103、先读取4个字节的“索引值长度”。
步骤1104、读取索引值,即指针移动4个字节定位到“索引值”的开始处,读取由“索引值长度”描述的长度。
步骤1105、将读取的索引值与函数传入的索引值进行比较,匹配则进入步骤1106,不匹配则进入步骤1107。
步骤1106、读取多语言数据存储地址和多语言数据长度,即读取“索引值”后的4个字节的“多语言数据存储地址”,接着继续读取4个字节,取得“多语言数据长度”,随后,根据取得的“多语言数据存储地址”将指针直接定位到多语言数据在文件中的存储位置,并根据“多语言数据长度”读取多语言数据并返回给程序,完成本次读取过程。
步骤1107、判断是否有下一个索引值单元段,有则进入步骤1109,无则进入步骤1108,即指针最终会遇到索引值单元段与多语言数据段的分界标记“|”,此时预示查找失败。
步骤1108、返回查找失败。在另一个实施例中,如果一个分类值对应多个多语言资源文件,则可以跳转到索引表中的同级其它多语言数据文件中搜索。
步骤1109、指针根据索引值长度移到下一个索引值单元段,进入步骤1103,即指针向后移动8个字节(“资源地址”4个字节+“资源长度”4个字节)定位到下一个索引值单元段的起始位置。
以上步骤基于多语言资源文件的连续二进制存储结构实现了对多语言数据的快速检索和读取。
对于已有的中文版软件,也可以为其生成多语言资源文件,在参照图7生成索引值之后,再执行下面的步骤生成多语言资源文件,参见图12示出的流程图,包括以下步骤:
步骤1201、形成索引值与中文语言数据的对照文档,其结构如图13所示。
步骤1202、提交翻译并产生索引值与多语言数据的对照文档,图13为一个实施例中的索引值与多语言数据的对照文档的结构示意图。
步骤1203、索引值与多语言数据的对照文档转化成多语言资源文件。
图6为由索引值与多语言数据的对照文档生成多语言资源文件的示意图,其成对写入索引值和多语言数据的具体步骤可以参照图10中步骤完成。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,例如,图4所示的多语言资源文件的存储结构还可以是两个文件,索引值单元段组成第一文件,多语言数据构成第二文件,他们之间由索引值单元段中的多语言数据存储地址进行对应。均应包含在本发明的保护范围之内。
Claims (11)
1.一种实现计算机软件多语言支持的方法,其特征在于,包括:
A、在软件代码中使用多语言数据的位置设置调用函数;
B、为与调用函数对应的多语言数据生成包括分类值和编号的索引值,并将所述索引值添加到对应的调用函数中;
C、生成至少一个多语言资源文件,所述多语言资源文件包括对应相同分类值的多语言数据,包括:
C1、生成包含与分类值相对应的索引项的索引表,对应所述索引项存储有多语言资源文件的存储地址;
D、软件运行中执行所述调用函数时,根据调用函数中索引值中的分类值匹配多语言资源文件,包括:
D1、根据调用函数中索引值中的分类值在索引表中从分类值直接对应的索引项开始向最顶层索引项查找匹配的索引项;和
D2、根据匹配的索引项对应的存储地址确定多语言资源文件;
E、根据调用函数中的编号在所匹配的多语言资源文件中匹配多语言数据,向调用函数返回所匹配的多语言数据。
2.如权利要求1所述的方法,其特征在于,所述分类值对应于调用函数所在代码段在软件层次结构中的位置。
3.如权利要求1所述方法,其特征在于,
所述多语言资源文件还包括对应相同分类值的子分类值的多语言数据。
4.如权利要求1所述的方法,其特征在于,步骤B中所述生成包括分类值和编号的索引值的步骤包括:
根据各个多语言数据所在的不同代码段在软件的层次结构的不同位置,设定索引值的不同分类值;
在每个代码段中,从所述代码段初始位置搜索多语言数据,并依次使用所述代码段的分类值和不同的编号为所搜索到的多语言数据生成索引值。
5.如权利要求1所述的方法,其特征在于,步骤C所述多语言资源文件包括:用于存储索引值的编号和与各编号对应的多语言数据的存储地址的第一存储空间,和用于存储多语言数据的第二存储空间;
所述步骤E包括子步骤:
根据调用函数中的索引值中的编号与所述第一存储空间中的编号进行匹配;
根据所匹配的第一存储空间中的编号所对应的多语言数据的存储地址读取第二存储空间中的多语言数据,并返回给调用函数。
6.如权利要求1所述的方法,其特征在于,步骤C所述多语言资源文件包括:用于存储索引值和与各索引值对应的多语言数据的存储地址的第一存储空间,和用于存储多语言数据的第二存储空间;
所述步骤E包括子步骤:
根据调用函数中的索引值与第一存储空间中的索引值进行匹配;
根据所匹配的第一存储空间中的索引值所对应的多语言数据的存储地址读取第二存储空间中的多语言数据,并返回给调用函数。
7.如权利要求6所述的方法,其特征在于,第一存储空间和第二存储空间采用的是连续的二进制存储结构,第一存储空间中依次存有至少一个索引值单元段;
索引值单元段的结构包含:固定长度的索引值长度、索引值和固定长度的多语言数据存储地址和固定长度的多语言数据长度;
所述根据调用函数中的索引值与第一存储空间中的索引值进行匹配包括:
指针定位到多语言资源文件的第一存储空间起始位置,从第一个索引值单元段开始,对指针指向的各个索引值单元段依次取索引值单元段的索引值长度,根据索引值长度完整读取索引值,用所读取的索引值和调用函数中的索引值比较,直到比较结果匹配;
所述根据所匹配的第一存储空间中的索引值所对应的多语言数据的存储地址读取第二存储空间中的多语言数据包括:
读取所匹配的第一存储空间的索引值对应的多语言数据存储地址和多语言数据长度,指针移到第二存储空间中所述多语言数据的存储地址,按照多语言数据长度读取多语言数据。
8.如权利要求7所述方法,其特征在于,多语言资源文件中第一存储空间和第二存储空间首尾相接;
步骤C所述生成多语言资源文件包括:
分别生成第一存储空间和第二存储空间,第一存储空间包含索引值单元段,第二存储空间包含多语言数据;
在第一存储空间中依次写入索引值单元段,在第二存储空间依次写入多语言数据,第一次写入的多语言数据存储地址是第一存储空间的起始位置加上第一个索引值单元段的长度,之后每次新写入第一存储空间的索引值单元段时都将所有已写入的索引值单元段中的多语言数据存储地址调整为原地址加上新添加的索引值单元段的长度,新添加的多语言数据存储地址为第一存储空间的起始位置加上包括新添加和已写入的所有索引值单元段的索引值单元段长度之和,再加上所有已写入第二存储空间的多语言数据的长度之和;
将第一存储空间和第二存储空间首尾拼接,形成多语言资源文件。
9.如权利要求7所述的方法,其特征在于,
所述第一存储空间和第二存储空间分别对应于第一存储文件和第二存储文件;
步骤C所述生成多语言资源文件包括:在第一存储文件中依次写入索引值单元段,在第二存储文件中依次写入对应的多语言数据;
还包括索引值单元段中的多语言数据存储地址的生成步骤:
第一次写入的多语言数据存储地址是第二存储文件的起始地址,之后每次新写入的多语言数据存储地址是上一次写入的多语言数据存储地址加上上次加入多语言数据的长度。
10.如权利要求1所述的方法,其特征在于,对于已有中文版软件,步骤C所述生成至少一个多语言资源文件之前还包括:
形成索引值与中文语言数据一一对应的对照文档;
提交翻译并产生索引值与多语言数据的对照文档。
11.如权利要求1~2任意一项权利要求所述的方法,其特征在于,步骤E所述根据调用函数中的索引值在所匹配的多语言资源文件中匹配多语言数据后还包括:
将所述索引值和多语言数据对应保存在内存中,用于再次根据索引值读取多语言数据时,优先在内存中根据索引值查找读取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102259621A CN101393529B (zh) | 2008-11-07 | 2008-11-07 | 一种实现计算机软件多语言支持的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102259621A CN101393529B (zh) | 2008-11-07 | 2008-11-07 | 一种实现计算机软件多语言支持的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101393529A CN101393529A (zh) | 2009-03-25 |
CN101393529B true CN101393529B (zh) | 2011-01-12 |
Family
ID=40493835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102259621A Expired - Fee Related CN101393529B (zh) | 2008-11-07 | 2008-11-07 | 一种实现计算机软件多语言支持的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101393529B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694617B (zh) * | 2009-09-01 | 2013-06-05 | 卡斯柯信号有限公司 | 一种基于资源标识符的多语言支持实现方法 |
CN101876907B (zh) * | 2010-05-18 | 2014-08-13 | 杭州海康威视数字技术股份有限公司 | 人机交互界面的多语言实现方法及装置 |
CN102033754A (zh) * | 2010-12-29 | 2011-04-27 | 上海网达软件有限公司 | 通过配置文件构建中间件多分辨率版本代码的方法 |
CN102629248A (zh) * | 2012-02-27 | 2012-08-08 | 中兴通讯股份有限公司 | 一种iptv媒体内容的搜索方法及装置、系统 |
CN103294714B (zh) * | 2012-02-28 | 2016-04-27 | 阿里巴巴集团控股有限公司 | 索引字段的字段属性值的存储位置的确定方法以及装置 |
CN102750308A (zh) * | 2012-03-13 | 2012-10-24 | 新奥特(北京)视频技术有限公司 | 一种实现多语言比赛数据输出的方法 |
CN103714128A (zh) * | 2013-12-11 | 2014-04-09 | 金蝶软件(中国)有限公司 | 切换展示信息的语言类型的方法和系统 |
CN104598560A (zh) * | 2015-01-06 | 2015-05-06 | 绍兴文理学院 | 一种嵌入式系统多字体文字的显示方法和显示系统 |
CN107291480B (zh) * | 2017-08-15 | 2020-12-15 | 中国农业银行股份有限公司 | 一种函数调用方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW252991B (zh) * | 1992-12-04 | 1995-08-01 | Ciba Geigy | |
CN1577263A (zh) * | 2003-06-26 | 2005-02-09 | 华为技术有限公司 | 支持多语言的用户界面实现方法及其装置 |
CN1597296A (zh) * | 2004-07-21 | 2005-03-23 | 福耀玻璃工业集团股份有限公司 | 一种注射成型模具及制造方法 |
CN1776685A (zh) * | 2005-12-16 | 2006-05-24 | 北京中星微电子有限公司 | 一种在fat文件系统中支持多国语言的方法及其装置 |
CN101093513A (zh) * | 2007-08-14 | 2007-12-26 | 金蝶软件(中国)有限公司 | 一种用于解决计算机软件多语言支持问题的方法和系统 |
-
2008
- 2008-11-07 CN CN2008102259621A patent/CN101393529B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW252991B (zh) * | 1992-12-04 | 1995-08-01 | Ciba Geigy | |
CN1577263A (zh) * | 2003-06-26 | 2005-02-09 | 华为技术有限公司 | 支持多语言的用户界面实现方法及其装置 |
CN1597296A (zh) * | 2004-07-21 | 2005-03-23 | 福耀玻璃工业集团股份有限公司 | 一种注射成型模具及制造方法 |
CN1776685A (zh) * | 2005-12-16 | 2006-05-24 | 北京中星微电子有限公司 | 一种在fat文件系统中支持多国语言的方法及其装置 |
CN101093513A (zh) * | 2007-08-14 | 2007-12-26 | 金蝶软件(中国)有限公司 | 一种用于解决计算机软件多语言支持问题的方法和系统 |
Non-Patent Citations (1)
Title |
---|
JP特开平2000-207399A 2000.07.28 |
Also Published As
Publication number | Publication date |
---|---|
CN101393529A (zh) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101393529B (zh) | 一种实现计算机软件多语言支持的方法 | |
US8572126B2 (en) | Systems and methods for optimizing very large n-gram collections for speed and memory | |
JP7118184B2 (ja) | テキストテーマ生成方法、テキストテーマ生成装置、電子機器、記憶媒体およびコンピュータプログラム | |
CN101694668B (zh) | 网页结构相似性确定方法及装置 | |
CN111309757B (zh) | 一种HBase的SQL解释器和优化方法 | |
CN104283567A (zh) | 一种名称数据的压缩、解压缩方法及设备 | |
CN1661593B (zh) | 一种计算机语言翻译方法及其翻译系统 | |
US10929439B2 (en) | Taxonomic tree generation | |
US11157539B2 (en) | Topic set refinement | |
CN102955697B (zh) | 基于面向方面的构件库构建方法 | |
CN107329987A (zh) | 一种基于mongo数据库的搜索系统 | |
CN102279847A (zh) | 软件系统国际化方法和装置 | |
CN102364437A (zh) | 多语言站点开发系统及其实现方法 | |
Abdelmageed et al. | JenTab Meets SemTab 2021's New Challenges. | |
CN101770291B (zh) | 输入系统语意分析数据散列存储和分析方法 | |
US20130179419A1 (en) | Retrieval of prefix completions by way of walking nodes of a trie data structure | |
US8612882B1 (en) | Method and apparatus for creating collections using automatic suggestions | |
JP2021099771A (ja) | 翻訳方法、装置、電子機器、可読記憶媒体、及びコンピュータープログラム | |
JP4714127B2 (ja) | 記号列検索方法、プログラムおよび装置ならびにそのトライの生成方法、プログラムおよび装置 | |
CN102024026B (zh) | 用于处理查询词语的方法和系统 | |
CN111090668B (zh) | 数据检索方法及装置、电子设备和计算机可读存储介质 | |
CN102567016B (zh) | 应用程序编程接口使用示例提取方法及装置 | |
CN101551798A (zh) | 翻译输入法及字库 | |
CN101833571B (zh) | 一种从互联网上自动提取双语翻译词典的方法 | |
Babur et al. | Towards Distributed Model Analytics with Apache Spark. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160309 Address after: 100094 Beijing City, North Road, Haidian District, No. 68, building 2, floor 2 Patentee after: You Pu Information Technology Co., Ltd of UFSOFT Address before: 100094 Haidian District North Road, Beijing, No. 68 Patentee before: UFIDA Software Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110112 Termination date: 20181107 |
|
CF01 | Termination of patent right due to non-payment of annual fee |