多语言资源管理方法、模块、设备、系统及可读存储介质
文献发布时间:2023-06-19 11:26:00
技术领域
本发明涉及语言管理技术领域,特别是涉及一种多语言资源管理方法、模块、设备、系统及可读存储介质。
背景技术
随着国内自主可编程控制系统高速发展,控制系统设备的控制系统组态软件的国际化已成为一个大趋势。不同国家的用户均希望使用具有本国语言的应用程序,而不同语言的长度、内容、显示风格都有所区别,这就需要开发不同的显示界面和功能块。
现有传统的组态软件切换语言的方式是在代码中依据需要,对每个模块预设好不同语言类型对应的动态库,例如:Report.dll(中文)、Report_EN.dll(英文),界面根据用户选择的软件功能再去加载选择的软件功能对应的语言动态库,执行选择的语言动态库对应的业务逻辑。
这种多语言加载方式中,所有动态库需要在程序启动时加载完成,在软件使用过程中无法在线切换语言类型,如果需要切换语言,必须重新启动程序;另外,如果要新增语言类型,就需要修改原有代码,并重新开发或者增量开发资源加载、查找、切换等处理逻辑,还需要新增用于支持这个语言类型的特定动态库,并需要针对新增语言的动态库增加对应的显示控件,而以后每一个新增模块也需要开发不同的多语言资源包,这样一来,软件的开发、维护成本成倍数级别增加,代码冗余、开发、维护成本极高。
综上所述,如何降低多语言模块的维护成本,并提升语言类型切换的自主性以及效率,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种多语言资源管理方法、模块、设备、系统及可读存储介质,可以降低多语言模块的维护成本,并提升语言类型切换的自主性以及效率。
为解决上述技术问题,本发明提供如下技术方案:
一种多语言资源管理方法,包括:
接收到业务模块发送的数据输出请求后,获取待输出的响应数据对应的字符串ID以及指定的语言类型ID;其中,所述响应数据由所述业务模块生成;
从配置的多语言类型的资源文件中提取所述语言类型ID下所述字符串ID对应的字符串;
将所述字符串发送至所述业务模块,以便所述业务模块输出所述字符串。
可选地,接收到业务模块发送的数据输出请求后,获取待输出的响应数据对应的字符串ID以及指定的语言类型ID,包括:
接收到数据输出请求后,从所述数据输出请求中提取待输出的响应数据对应的字符串ID;
判断所述数据输出请求中是否包括指定的语言类型ID;
若包括,提取所述数据输出请求中指定的语言类型ID;
若不包括,获取所述业务模块历史指定的语言类型ID。
可选地,所述多语言资源管理方法还包括:
接收到语言类型ID查询请求后,读取所述资源文件中当前的默认语言类型ID;
将所述默认语言类型ID反馈至所述语言类型ID查询请求的发起端。
可选地,所述多语言资源管理方法还包括:
接收到语言描述信息查询请求后,确定指定的语言类型ID,作为目标语言类型ID;
读取所述资源文件中所述目标语言类型ID对应的描述信息,作为目标描述信息;
将所述目标描述信息发送至所述语言描述信息查询请求的发起端。
可选地,所述多语言资源管理方法还包括:
接收到语言类型扩展请求后,获取新增语言类型的资源文件;
生成所述新增语言类型对应的配置信息;其中,所述配置信息包括:语言类型ID以及语言描述信息;
建立所述配置信息与所述资源文件之间以及所述配置信息之间的映射关系。
可选地,所述多语言资源管理方法还包括:
接收到报警或日志信息输出请求后,确定待生成的报警或日志信息类型对应的基础字符串编号、当前待拼接的自定义变量以及指定的语言类型ID;
根据预置系统字符串表确定所述基础字符串编号对应存储的中文字符串;
将所述中文字符串转换为所述语言类型ID对应的语言类型,作为基础转换字符串;
将所述自定义变量填充至所述基础转换字符串中,得到拼接信息。
一种多语言模块,包括:
信息确定单元,用于接收到业务模块发送的数据输出请求后,获取待输出的响应数据对应的字符串ID以及指定的语言类型ID;其中,所述响应数据由所述业务模块生成;
字符串提取单元,用于从配置的多语言类型的资源文件中提取所述语言类型ID下所述字符串ID对应的字符串;
字符串发送单元,用于将所述字符串发送至所述业务模块,以便所述业务模块输出所述字符串。
一种多语言资源管理系统,包括:
用户交互装置,用于接收到业务服务请求后,识别所述业务服务请求对应的业务操作;将所述业务服务请求发送至所述业务操作对应的业务模块;
所述业务模块,用于对所述业务服务请求进行业务响应,得到待输出的响应数据;根据所述响应数据生成数据输出请求,并将所述数据输出请求发送至多语言模块;接收到所述多语言模块返回的字符串后,输出所述字符串;
所述多语言模块,用于接收到所述数据输出请求后,获取待输出的响应数据对应的字符串ID以及指定的语言类型ID;从配置的多语言类型的资源文件中提取所述语言类型ID下所述字符串ID对应的字符串;将所述字符串发送至所述业务模块。
一种计算机设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述多语言资源管理方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述多语言资源管理方法的步骤。
本发明实施例所提供的方法,业务模块部分执行对应的业务逻辑生成待输出的响应数据,语言资源管理部分预先配置各种语言类型对应的用于存储字符串ID以及对应的字符串的资源文件,从配置的多语言类型的资源文件中提取响应数据对应的语言类型下的字符串资源,这样将语言管理脱离业务,多类型语言的管理可以共用一套业务模块。在针对某种语言类型进行维护时,只需调整相应的语言资源文件,而无需重新开发新增语言类型对应的处理逻辑、特定动态库以及显示控件等相关组件,降低了维护成本;同时在语言资源管理中将语言类型与字符串配置为根据ID进行统一管理的标准格式,只需确定字符串ID以及指定的语言类型ID就可以查找到对应的字符串资源,传输给业务模块进行显示,字符串查找速度快,降低了多语言资源管理难度。
相应地,本发明实施例还提供了与上述多语言资源管理方法相对应的多语言模块、设备、系统和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种多语言资源管理方法的实施流程图;
图2为本发明实施例中一种报警日志生成流程示意图;
图3为本发明实施例中一种多语言模块的结构示意图;
图4为本发明实施例中一种计算机设备的结构示意图。
具体实施方式
本发明的核心是提供一种多语言资源管理方法,可以降低多语言模块的维护成本,并提升语言类型切换的自主性以及效率。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例中一种多语言资源管理方法的流程图,该方法包括以下步骤:
S101、接收到业务模块发送的数据输出请求后,获取待输出的响应数据以及指定的语言类型ID;
本申请中为了减少多语言资源管理的维护成本,提出将多语言资源的管理脱离业务模块,业务模块响应业务服务请求,业务模块在响应业务服务请求生成待输出的响应数据,由本实施例提供的多语言资源管理方法来获取响应数据对应的语言资源,然后传给业务模块进行显示。
这样将语言管理脱离业务,多语言类型可以共用一套业务模块。在增加语言类型时,只需增加相应的语言资源包,而无需重新开发新增语言类型对应的处理逻辑、特定动态库以及显示控件等相关组件,降低了维护成本;而且在业务模块维护或调整时无需适应性对语言资源进行调整,进一步降低了多语言资源管理成本。
数据输出请求指业务模块生成的用于获取待输出的响应数据对应的字符资源的请求,响应数据为业务模块根据业务服务请求进行业务响应生成的待输出的数据,本实施例中对于业务服务的类型不做限定,比如可以为从数据库中查找某个指定数据、将某个指定数据进行格式转换等。业务模块指可以实现业务数据处理的组态软件,对于业务模块的功能类型也不做限定,比如可以数据格式转换的格式转换器等。字符资源为符合指定语言类型的响应数据对应的字符串。业务模块在进行业务响应后发送数据输出请求。在本方法的执行主体接收到数据输出请求后,获取待输出的响应数据以及指定的语言类型ID。其中,本实施例中涉及多语言的配置文件(包括多语言类型的资源文件以及资源文件下的各中响应数据对应的字符串)都修改为@ID@的格式,各语言类型的资源文件都配置对应的语言类型ID,用于指示资源文件的语言类型,比如英文ID可以为1、中文ID可以为“0”;资源文件下的各字符串也都配置对应的字符串ID,比如基础平台系统使用的用户输入成功对应的反馈信息ID为65,基础平台系统使用的超出查询范围,不能再向前翻看的提示信息ID为1等。配置文件通过配置ID做成标准格式,这样对于本方法的执行主体来说,只需认识资源ID这一抽象“协议”,就可以查找到对应的字符资源,然后传给各个业务模块进行显示。如果需要增加或者扩展语言类型,只需要修改资源文件即可,无需修改多语言模块也不需要改代码,提升了实现效率,降低了维护成本。
需要说明的是,由于语言类型ID与字符串ID属于不同的ID层级,其中两层级间可以存在相同ID,但是一个层级内不能存在相同ID。
接收到业务模块发送的数据输出请求后,需要获取待输出的响应数据对应的字符串ID以及指定的语言类型ID,其中,指定的语言类型ID指用户指定的语言类型对应的ID,待输出的响应数据对应的字符串ID指
本实施例中对于待输出的响应数据对应的字符串ID以及指定的语言类型ID的获取方式不做限定,在此对待输出的响应数据对应的字符串ID以及指定的语言类型ID的获取方式进行分别介绍。
其中,待输出的响应数据对应的字符串ID的获取可以配置业务模块在生成数据输出请求时将待输出的响应数据对应的字符串ID填充至数据输出请求中,业务模块也可以仅将待输出的响应数据填充至数据输出请求中,在接收到数据输出请求后,提取待输出的响应数据,并根据预设的响应数据与字符串ID间的匹配关系确定该响应数据对应的字符串ID。以上仅以上述两种实现方式为例进行介绍,其它字符串ID的获取方式均可参照本实施例的介绍,在此不再赘述。
指定的语言类型ID的获取可以由业务模块指定,也可以直接由用户交互平台接收用户的指定,其中,由业务模块指定时,在该业务模块首次交互时,业务模块可以根据用户的指定在数据输出请求中填充指定的语言类型ID或指定的语言类型,该业务模块在之后的连续交互中在未改变指定的语言类型时可以无需在每次数据输出请求发出时指定,则默认使用初始指定的语言类型,在需要调整默认的语言类型后在数据输出请求中再指定调整后的指定语言类型,当然,也可以在每次数据输出请求中都添加指定的语言类型或指定的语言类型ID,本实施例中对此不做限定;此外,也可以与用户交互平台直接对接,直接接受用户指定的语言类型,方便用户根据实际使用需求实时调整语言类型。需要说明的是,语言类型ID的获取可以参照上述对于字符串ID的获取方式,本实施例中在此不再赘述。
其中,为了方便在使用过程中随时切换语言类型,同时加快字符串霍去病速度,一种获取待输出的响应数据对应的字符串ID以及指定的语言类型ID的具体实现方式如下:
(1)接收到数据输出请求后,从数据输出请求中提取待输出的响应数据对应的字符串ID;
(2)判断数据输出请求中是否包括指定的语言类型ID;
(3)若包括,提取数据输出请求中指定的语言类型ID;
(4)若不包括,获取业务模块历史指定的语言类型ID。
上述实现方式下可以接受用户在业务模块中随时切换的语言类型并进行适应性的调整,可以满足用户实时的语言需求,同时直接提取数据输出请求中的字符串ID,可以提升字符串ID的匹配速度。
本实施例中仅以上述实现方式为例进行介绍,其它实现方式均可参照上述介绍,在此不再赘述。
S102、从配置的多语言类型的资源文件中提取语言类型ID下字符串ID对应的字符串;
预先配置有各种语言类型对应的资源文件,资源文件中包括该种语言类型下所有的字符串ID与对应的字符串,比如1—“超出查询范围,不能再向前翻看!”。在确定当前需要输出的语言类型ID以及字符串ID后,提取语言类型ID下字符串ID对应的字符串的过程具体包括:提取语言类型ID对应的资源文件,在该资源文件中查找字符串ID对应的字符串,得到指定的语言类型ID下指定的字符串ID对应的字符串。
本实施例中提供的语言资源管理方式,在增加、修改或删除语言资源时,可以直接添加、修改或删除对应的资源文件包,管理方式简单,维护效率高。
由于字符串数量巨大,为方便对于字符串的管理,可以根据字符串类型,将资源文件分为系统字符串文件和用户自定义字符串文件,存储路径可以为用户工程路径,分别命名为:String_Table_SYS_##.ini和String_Table_Proj_##.ini,其中,##为语言类型简写。例如中文:StringTableSYSCH,在每个文件划分不同ID区间,给不同的模块使用。具有这样文件结构的资源文件,文件保持向前兼容,且后续预留一定分配空间,不需要修改代码,直接往后添加ID资源即可。
具体一种字符串资源ID分配格式如下:
基础平台系统使用:1-65535。
用户自定义:65536-200000。
AT使用:34000-39999。
多语言资源号预留,33481-33500不同语言预留。
每个行业包划分2万个ID,已知的行业包划分如下:
UP:200001-220000
SIS:220001-240000。
CCS:240001-260000。
DEH:260001-280000。
BASF:280001-300000。
其中,系统字符串文件中基础平台系统使用的字符串ID与字符串间的一种对应关系如下:
[SYSID]
1=超出查询范围,不能再向前翻看!
2=已翻至最新一页!
3=当前曲线处于隐藏状态!
4=开关量不能设定上下限!
……
本实施例中仅以上述资源文件的结构为例进行介绍,为了实际使用方便,也可以设置其它结构类型的资源文件,在此不做限定。
需要说明的是,资源文件为向前兼容,为保证较好的兼容性,中文和英文的语言类型ID应与原有ID保持一致,不可修改,分别为0和1,其他语言类型的ID可自行定义,本实施例中不做限定。
预先配置多语言类型的资源文件,本实施例中对于资源文件的文件结构以及内容不做限定。一种在HOLLiAS_MACS\common目录下增加文件Language.ini的文件结构及内容如下:
[Language]
Language=Chinese//软件安装时所选语言。
ShortCut=CH//软件安装时所选语言的简称。
ID=0//软件安装时所选语言的ID.Count=3//当前语言总数。
ID_0=0//语言ID。
Description_0=Chinese//语言。
ShortCut_0=CH//语言简写。
ID_1=1。
Description_1=English。
ShortCut_1=EN。
ID_2=2。
Description_2=Russian。
ShortCut_2=RUS。
以上以分别配置三种语言类型(Chinese、English、Russian)对应的资源文件为例,其它语言类型以及数量下的配置方式均可参照上述介绍,在此不再赘述。
S103、将字符串发送至业务模块,以便业务模块输出字符串。
在从资源文件中提取到相应的字符串后,将该字符串返回至发起数据输出请求的业务模块,以便业务模块进行显示。
需要说明的是,业务模块接收到字符串后,对该字符串进行显示设置的实现方式本实施例中不做限定,可以参照相关技术的实现方式,在此不再赘述。
基于上述介绍,本发明实施例所提供的技术方案,业务模块部分执行对应的业务逻辑生成待输出的响应数据,语言资源管理部分预先配置各种语言类型对应的用于存储字符串ID以及对应的字符串的资源文件,从配置的多语言类型的资源文件中提取响应数据对应的语言类型下的字符串资源,这样将语言管理脱离业务,多类型语言的管理可以共用一套业务模块。在针对某种语言类型进行维护时,只需调整相应的语言资源文件,而无需重新开发新增语言类型对应的处理逻辑、特定动态库以及显示控件等相关组件,降低了维护成本;同时在语言资源管理中将语言类型与字符串配置为根据ID进行统一管理的标准格式,只需确定字符串ID以及指定的语言类型ID就可以查找到对应的字符串资源,传输给业务模块进行显示,字符串查找速度快,降低了多语言资源管理难度。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
上述实施例中对于多语言资源的管理仅以查找并反馈待输出的响应数据对应的字符串为例进行介绍,除了查找字符串之外,还可以进一步配置其他的管理功能,比如确定当前使用语言类型等功能,本实施例中对于基于上述多语言资源文件的架构下的具体管理功能的配置不做限定,可以根据实际需要进行相应设定。
(1)一种用于确定当前使用的语言类型ID的管理功能配置如下:
接收到语言类型ID查询请求后,读取资源文件中当前的默认语言类型ID;
将默认语言类型ID反馈至语言类型ID查询请求的发起端。
(2)一种用于确定指定的语言类型ID对应的语言描述信息的管理功能配置如下:
接收到语言描述信息查询请求后,确定指定的语言类型ID,作为目标语言类型ID;
读取资源文件中目标语言类型ID对应的描述信息,作为目标描述信息;
将目标描述信息发送至语言描述信息查询请求的发起端。
(3)一种用于确定指定的语言描述信息对应的语言类型ID的管理功能配置如下:
接收到语言类型ID查询请求后,确定指定的语言描述信息,作为目标描述信息;
读取资源文件中目标描述信息对应的语言类型ID,作为目标语言类型ID;
将目标语言类型ID发送至语言类型ID查询请求的发起端。
(4)一种用于确定指定的语言描述信息对应的语言类型简称的管理功能配置如下:
接收到语言类型简称查询请求后,确定指定的语言描述信息,,作为目标描述信息;
读取资源文件中目标描述信息对应的语言类型简称,作为目标简称;
将目标简称发送至语言类型简称查询请求的发起端。
上述请求可以由业务模块发起,也可以由用户交互界面发起,本实施例中对此不做限定,
需要说明的是,上述功能的配置都可以通过接口封装的形式来实现,通过多语言模块提供的接口来完成多语言的处理,接口调用的方式可以以较小的内存消耗获得较快的查寻速度,ID查询不会被业务逻辑功能影响,从而稳定性更高。
(1)具体地,对应于上述功能配置,一种用于确定当前使用的语言类型ID的接口配置如下:
long WINAPI APIGetLanguage()
功能:获取当前使用的语言类型ID;
参数说明:无
返回值:ID对应的是Language.ini中字段“ID_”后的数据,常规设置下,中文是0,英文是1,后续新增的语言根据实际定义。
(2)一种用于确定指定的语言类型ID对应的语言描述信息的接口配置如下:
BSTR WINAPI APIGetLanguageByID(long lLanguageID)
功能:根据语言类型ID获取当前的语言描述信息;
参数说明:long lLanguageID:要查找的语言的ID;英文ID
返回值:该ID对应的语言描述,即配置文件Language.ini中字段“Description_”后的数据,目前0对应的语言描述是Chinese,1对应的语言描述是English。
(3)一种用于确定指定的语言描述信息对应的语言类型ID的接口配置如下:
long WINAPI APIGetLanguageID(char*pLanguage)
功能:通过语言描述信息获取语言类型ID;
参数说明:char*pLanguage:语言描述;
返回值:该语言类型对应的ID,即配置文件Language.ini中字段“ID_”后的数据。
(4)一种用于确定指定的语言描述信息对应的语言类型简称的接口配置如下:
BSTR WINAPI APIGetLanguageShortCut(char*pLanguage)
功能:根据语言获取对应的语言简称;
参数说明:char*pLanguage:语言描述信息;
返回值:该语言类型对应的语言简称,即配置文件Language.ini中字段“ShortCut_”后的数据。
本实施例中仅以上述管理功能以及接口为例进行介绍,其它功能配置均可参照上述介绍,在此不再赘述。
另外,上述实施例中对于语言类型的扩展、删除以及资源文件的修改实现方式不做限定,在此以扩展为例介绍一种实现方式。
具体地,包括以下步骤:
(1)接收到语言类型扩展请求后,获取新增语言类型的资源文件;
(2)生成新增语言类型对应的配置信息;
其中,配置信息包括:语言类型ID以及语言描述信息,还可以进一步包括语言简称等信息,本实施例中对于配置信息的具体信息种类不做限定,可以根据实际查看需要进行配置信息的设定。
(3)建立配置信息与资源文件之间以及配置信息之间的映射关系。
建立映射关系的目的在于方便以一种信息为目标信息,查询与其关联的其它信息,以满足用户的信息查看需要。其中,配置信息之间比如语言类型ID与语言描述信息之间,语言类型ID与语言简称之间等。
另外,目前针对报警和日志的拼接工作是在相关业务模块中完成的,拼接工作是按照配置文件eventpararent.ini(中文版)中对该日志限定规则来进执行。原有的设计模式是在此过程中会将日志描述信息拼接成一条完整的信息,但是由于一条报警描述可能是几个中文字符串拼接而成的,当描述信息需要翻译成其它语言版本时,这样导致无法对整个描述信息进行翻译(翻译成中文外的其他语言类型)的情况。
为便于报警与日志信息的多语言类型的快速切换,本实施例中提出一种针对报警信息以及日志信息的多语言资源管理方法,具体包括以下步骤:
(1)接收到报警或日志信息输出请求后,确定待生成的报警或日志信息类型对应的基础字符串编号、当前待拼接的自定义变量以及指定的语言类型ID;
其中,基础字符串为具有预留有自定义变量位置的不变字符串;每种报警或日志信息均设置对应的基础字符串,比如服务器温度告警对应的基础字符串,服务器风扇转速统计日志对应的基础字符串等。自定义变量为需要根据实时情况填充的信息项,比如服务器温度以及对应的时间,服务器风扇转速大小以及对应的时间等。基础字符串编号指唯一能代表此段基础字符串的一个编号。
(2)根据预置系统字符串表确定基础字符串编号对应存储的中文字符串;
(3)将中文字符串转换为语言类型ID对应的语言类型,作为基础转换字符串;
(4)将自定义变量填充至基础转换字符串中,得到拼接信息。
在新的设计方案中拼接报警日志描述信息工作将分两部分完成,如图2所示,第一部分在实时库(RTDBManage,各语言类型对应的资源文件均存储于此)中不再直接存储中文字符,而是存储一个唯一能代表此段中文的一个编号,例如用“@Format_1_CH@”来表示“报警抑制”字符串。第二部分在上层界面访问服务器的接口模块中将报警日志描述中的“@Format_1_CH@”编号转换成对应的字符串,如果是中文界面将其替换成中文,英文界面则替换成英文。
在新的设计方案中对日志的描述信息不再直接存储中文字符串,而是将需要翻译的字符串用一特定的变量以及不变量的符号来表示,在接口模块中再根据要求翻译成相应的中文或英文字符串,需要将配置文件的修改如下所示。
下面以334号日志来说明日志描述信息拼接的过程:
未采用多语言框架之前的处理方式:
[EVENT_334]
EventName=工艺报警抑制
EventNo=334
PindexMode=1
ItemNum=0
VarNum=3
Var_1=VarType:1,InOffset:0,InLength:2,OutOffset:0,OutWidth:8,OutFormat:14
Var_2=VarType:1,InOffset:8,InLength:2,OutOffset:19,OutWidth:3,OutFormat:1
Var_3=VarType:1,InOffset:8,InLength:2,OutOffset:24,OutWidth:12,OutForma t:21
Format=********报警抑制(ddd)############
采用本申请提供的多语言框架之后的处理:
[EVENT_334]
EventName=@25647@//@25647@处为需要改动的地方//
EventNo=334
ItemNum=0
VarNum=3
Var_1=VarType:1,InOffset:0,InLength:2,OutOffset:0,OutWidth:8,OutFormat:14
Var_2=VarType:1,InOffset:8,InLength:2,OutOffset:19,OutWidth:3,OutFormat:1
Var_3=VarType:1,InOffset:8,InLength:2,OutOffset:24,OutWidth:12,OutForma t:21
Format=********@25648@(ddd)############//@25648@处为需要改动的地方//
本方案的描述信息中没有直接对应的中文字符串,而是有几个用特殊标记@XXX@组成的变量组成,当上层读取报警日志时需要将这些变量翻译成相应的中英文字符串。
下面介绍变量替换成字符串的过程。其中,字符串拼接可以通过接口模块封装好的拼接函数实现,采用.def文件定义导出接口,提供的接口定义如下:
(1)BSTR WINAPI APIGetJointText(char*pstrKey,long&bRet)
功能:将参数一中的@@格式的内容(自定义变量)替换为真实的字符串,并返回该数据;
参数说明:
char*pstrKey:需要处理的原始数据字符串;
long&bRet:TRUE,成功;反之失败;
返回值:替换后的字符串;
(2)BSTR WINAPI APIGetKey(char*pstrKey)
功能:将传入的字符串中@@格式的内容替换为真实的字符串,并返回该数据;
参数说明:
char*pstrKey:需要处理的原始数据字符串;
返回值:替换后的字符串;
(3)BSTR WINAPI APIGetPrjCHString(long lID)
功能:根据字符串ID查找对应的中文字符串内容;
参数说明:Long lID:字符串ID,即@@中间的内容;
返回值:该ID对应的中文字符串;
void WINAPI APILoadSYSString(char*pstrProjName,long lOnline,longlReport=0)
功能:加载系统字符串表;
参数说明:
char*pstrProjName:当前工程名称;
long bOnline:1,在线加载多语言字符串文件;
long lReport:1,报表服务加载多语言字符串文件;
返回值:无
(4)void WINAPI APILoadSYSStringWithPath(char*pstrPath,char*pstrProjName)
功能:根据文件路径加载系统字符串表;
参数说明:
char*pstrPath:字符串表文件路径;
char*pstrProjName:当前调用该接口的模块名称;
返回值:无
然后通过字符串ID在相应的资源文件中查找,返回正确的字符串所应用的借口函数:
(5)BSTR WINAPI APIGetPrjENString(long lID,long&bRet)
功能:根据字符串ID查找对应的多语言字符串内容;
参数说明:
long lID:字符串ID,@@中间的内容;
long&bRet:TRUE,查找成功;反之失败;
返回值:该ID对应的多语言字符串;
(6)BSTR WINAPI APIGetStringForType(char*pstrKey,long iRetType,long&bRet)
功能:查询@@形式对应的字符串内容,根据参数2的类型返回对应的数据;
参数说明:
char*pstrKey:@@形式的ID;
long iRetType:0,直接返回原字符串
1,返回最终的字符串
2,返回字符串和ID
3,返回连接的字符串
long&bRet:TRUE,查到;反之没查到;
返回值:根据参数2的类型返回对应的查找结果;
相应于上面的方法实施例,本发明实施例还提供了一种多语言模块,下文描述的多语言模块与上文描述的多语言资源管理方法可相互对应参照。
参见图3所示,该装置包括以下模块:
信息确定单元110主要用于接收到业务模块发送的数据输出请求后,获取待输出的响应数据对应的字符串ID以及指定的语言类型ID;其中,响应数据由业务模块生成;
字符串提取单元120主要用于从配置的多语言类型的资源文件中提取语言类型ID下字符串ID对应的字符串;
字符串发送单元130主要用于将字符串发送至业务模块,以便业务模块输出字符串。
相应于上面的装置实施例,本发明实施例还提供了一种多语言资源管理系统,下文描述的多语言资源管理系统与上文描述的多语言模块可相互对应参照。
本实施例提供的多语言资源管理系统,主要包括:
用户交互装置,主要用于接收到业务服务请求后,识别业务服务请求对应的业务操作;将业务服务请求发送至业务操作对应的业务模块;
业务模块,主要用于对业务服务请求进行业务响应,得到待输出的响应数据;根据响应数据生成数据输出请求,并将数据输出请求发送至多语言模块;接收到多语言模块返回的字符串后,输出字符串;
多语言模块,主要用于接收到数据输出请求后,获取待输出的响应数据对应的字符串ID以及指定的语言类型ID;从配置的多语言类型的资源文件中提取语言类型ID下字符串ID对应的字符串;将字符串发送至业务模块。
相应于上面的方法实施例,本发明实施例还提供了一种计算机设备,下文描述的一种计算机设备与上文描述的一种多语言资源管理方法可相互对应参照。
该计算机设备包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述方法实施例的多语言资源管理方法的步骤。
具体的,请参考图4,为本实施例提供的一种计算机设备的具体结构示意图,该计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在计算机设备301上执行存储器332中的一系列指令操作。
计算机设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的多语言资源管理方法中的步骤可以由计算机设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种多语言资源管理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的多语言资源管理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
- 多语言资源管理方法、模块、设备、系统及可读存储介质
- 多语言资源文件的统一管理方法及系统、计算机可读存储介质及设备