一种语言转换方法、装置、设备及存储介质与流程

文档序号:16881479发布日期:2019-02-15 22:11阅读:175来源:国知局
一种语言转换方法、装置、设备及存储介质与流程

本发明涉及数据处理领域,尤其涉及一种语言转换方法、装置、设备及存储介质。



背景技术:

智能终端上的很多app(应用程序)不止是面向国内的用户,还会推广到国外。而app的国际化就是根据用户操作系统的语言设置,自动将app的语言设置为和用户操作系统语言一致的语言。

目前,实现app国际化的方式包括:在app包中添加所支持的多种语言包。在需要显示时根据系统的语言,去获取对应的语言包的语言文字。这个技术是由系统实现的。下面以ios系统为例,对app国际化的实现方式进行说明,具体的:

首先,开发者添加所支持的语言包,例如,支持中文和英语,就需要创建两个文件,文件中是多行(标签—文字)的对应关系,具体如图1所示。图1中,101是创建的多语言文件,102是英语语言包,103是中文语言包。语言包里面,等号左侧是标签,右侧是对应的对应语言的文字。

其次,开发过程中,当视图需要显示一个文字时,不要直接设置为某一种语言的文字,而是通过一个系统方法nslocalizedstring()来实现。具体的,如图2所示,图中是ios设置label文字的一行代码。

第三,app运行后,当系统语言是英文时,图2代码显示的是英语语言包中label1对应的"hello!world!",当系统语言是中文时,显示的是中文语言包中label1对应的"哈喽!世界!"。如图3所示是演示运行在英文语言环境和中文语言环境的样子。

然而,上述的app国际化实现方式存在如下问题:

1)需要提前设置好语言包,支持多少种语言就要制作多少个语言包,增加了开发成本。

2)浪费空间。对于一种语言的用户而言,其他语言的语言包永远不会用到,其他语言浪费了多余的内存空间。

所以,如何解决现有的app国际化实现方式存在的开发成本高、浪费内存空间等问题,成为目前亟待解决的技术问题。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种解决上述问题的语言转换方法、装置、设备及存储介质。

依据本发明实施例的一个方面,提供一种语言转换方法,包括:

在支持固定语言的应用程序启动后,检测所支持的固定语言是否与系统语言一致;

在检测结果为不一致时,获取与所述系统语言对应的语言映射字典;

利用所述语言映射字典,对所述应用程序显示的页面文字进行语言转换。

可选地,在检测结果为不一致时,获取与所述系统语言对应的语言映射字典,具体包括:

在检测结果为不一致时,检测在前是否已经下载了与所述系统语言对应的语言映射字典,若是,则以已下载的语言映射字典作为获取的语言映射字典;否则,下载与所述系统语言对应的语言映射字典。

可选地,所述利用所述语言映射字典,对所述应用程序显示的页面文字进行语言转换,包括:

获取待显示页面的视图层级;

遍历所述视图层级,确定需要进行语言转换的视图元素;

查找所述语言映射字典,将所述视图元素显示的文字转换为与所述系统语言对应的语言文字。

可选地,所述语言映射字典中包括:

各视图元素在所述固定语言下显示的文字与在所述系统语言下显示的文字之间的映射关系;其中,各视图元素为所述应用程序的各视图层级中的各视图元素。

依据本发明实施例的另一个方面,提供一种语言转换装置,包括:

检测模块,用于在支持固定语言的应用程序启动后,检测所支持的固定语言是否与系统语言一致;

获取模块,用于在检测结果为不一致时,获取与所述系统语言对应的语言映射字典;

语言转换模块,用于利用所述语言映射字典,对所述应用程序显示的页面文字进行语言转换。

可选地,所述获取模块,具体用于在检测结果为不一致时,检测在前是否已经下载了与所述系统语言对应的语言映射字典,若是,则以已下载的语言映射字典作为获取的语言映射字典;否则,下载与所述系统语言对应的语言映射字典。

可选地,所述语言转换模块,具体用于获取待显示页面的视图层级,遍历所述视图层级,确定需要进行语言转换的视图元素,查找所述语言映射字典,将所述视图元素显示的文字转换为与所述系统语言对应的语言文字。

可选地,所述语言映射字典中包括:

各视图元素在所述固定语言下显示的文字与在所述系统语言下显示的文字之间的映射关系;其中,各视图元素为所述应用程序的各视图层级中的各视图元素。

依据本发明实施例的第三个方面,提供一种计算设备,所述计算设备包括:存储器、处理器及通信总线;所述通信总线用于实现处理器和存储器之间的连接通信;

所述处理器用于执行存储器中存储的语言转换程序,以实现本发明实施例所述的语言转换方法的步骤。

依据本发明实施例的第四个方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现本发明实施例所述的语言转换方法的步骤。

利用本发明实施例所述方案的应用程序可以支持固定语言,当用户的系统语言为其他语言时,可以临时去下载对应的语言映射字典,根据语言映射字典,可以完成语言的转换,从而实现了无需开发者提前提供几十种语言的语言包,达到了节省了内存空间,降低开发成本的目的。

上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为现有技术的语言包中标签与文字的对应关系;

图2为现有技术中ios设置label文字的一行代码示意图;

图3为现有技术中演示运行在英文语言环境和中文语言环境的示意图;

图4为本发明第一实施例提供的一种语言转换方法的流程图;

图5为本发明实施例中支持固定语言的应用程序的代码设置示意图;

图6为本发明实施例中设置某种app中文本text的代码示意图;

图7为本发明第二实施例提供的一种语言转换方法的流程图;

图8为本发明实施例中应用程序的页面视图的层级结构的示意图;

图9为本发明第三实施例提供的一种语言转换方法的流程图;

图10为本发明实施例中语言映射字典的示意图;

图11为本发明第四实施例提供的一种语言转换装置的结构框图;

图12为本发明第五实施例提供的一种计算设备的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在本发明第一实施例中,提供一种语言转换方法,如图4所示,本发明实施例所述方法包括如下步骤:

步骤s401,在支持固定语言的应用程序启动后,检测所支持的固定语言是否与系统语言一致;

本发明实施例中,应用程序支持固定语言可以理解为仅支持一种语言,或者,支持一到两种用户较为常用的语言。其中,较为常用的语言可以但不限于通过预先进行市场调研得到。也就是说,本实施例中,支持固定语言的应用程序不再存储除固定语言以外的其他语言的语言包。

也就是说,本发明实施例中,下载应用程序时,应用程序包中仅包含一种或者两种语言包,具体的语言包存储在名为localizable.strings的文件中。

进一步地,本发明实施例中,当检测到所支持的固定语言与系统语言一致时,直接调用系统方法nslocalizedstring()来实现应用程序视图中文字的显示。

步骤s402,在检测结果为不一致时,获取与所述系统语言对应的语言映射字典;

本发明实施例中,不同于现有技术中的语言包(现有技术中的语言包可参见图1),本实施例所述语言映射字典中包括应用程序中各视图元素在所述固定语言下显示的文字与在所述系统语言下显示的文字之间的映射关系。利用该映射关系,即可以将应用程序中各视图元素中的文字转换为与系统语言相同的文字。例如,应用程序支持的固定语言为中文,系统语言为英文,应用程序的某视图元素的文字为“标题”,则映射关系为“标题”=“title”,那么当渲染视图元素时,就会将“标题”显示为“title”。

在本发明的一个具体实施例中,在检测结果为不一致时,获取与所述系统语言对应的语言映射字典,具体包括:

在检测结果为不一致时,检测在前是否已经下载了与所述系统语言对应的语言映射字典;

若是,则以已下载的语言映射字典作为获取的语言映射字典;

否则,下载与所述系统语言对应的语言映射字典。

示例性的,假定应用程序支持的固定语言为中文,当用户去往英语系国家时,将系统语言切换为英语,此时,若用户开启了本实施例所述的应用程序,则需要去下载与英语语言对应的语言映射字典。若用户切换回中文后再切换回英文时,由于在前已经下载了语言映射字典,所以,直接以在前下载的语言映射字典为获取到的字典,而无需重复下载。

但值得一提的是,本实施例中,为了提高存储空间的利用率,应用程序还可以为用户提供清理语言映射字典的接口,通过该接口,用户可以将在前已经下载的语言映射字典删除。

再者,本发明实施例中,当确定出在前已经下载了语言映射字典后,还可以将当前的语言映射字典的版本信息发送至服务器,供服务器判断当前的字典是否为最新版本,若不是最新版本,接收服务器下发的版本更新信息,并以更新后的语言映射字典作为获取到的字典。

步骤s403,利用所述语言映射字典,对所述应用程序显示的页面文字进行语言转换。

在本发明的具体实施例中,获取的语言映射字典可以存放在预先指定的任何位置。在进行语言转换时,将所述语言映射字典写入内存,并在内存中读取具体的映射关系,对页面文字进行语言的转换。

在本发明的一个具体实施例中,在应用程序内设置一个语言映射组件,该组件可以是对已有组件的复用,也可以是应用程序内的新增组件。利用该组件实现上述的语言转换过程。

综上可知,利用本发明实施例所述方法的应用程序可以支持固定语言,当用户的系统语言切换为其他语言时,可以临时去下载对应的语言映射字典,根据语言映射字典,可以完成语言的转换。也就是说,在有应用程序国际化需求时,不用再开发阶段就在应用程序中开发存储多种语言的语言包,而是在有国际化需求时,只需要开发对应的映射字典即可。而用户也不用下载所有的映射字典,而是根据系统语言去判断下载哪种,下载后,直接映射显示即可。所以,即实现了国际化,又达到了节省了内存空间,降低开发成本的目的。

需要说明的是,现有技术中在应用程序支持固定语言的情况下,若想要实现语言转换,其通常的做法为:

支持固定语言的应用程序,在开发时,视图显示的标题、按钮、提示等等都是写死为固定语言(如中文),具体实现如图5所示。如果要实现国际化,需要修改为上述图2的方式。但是成熟的app往往页面很多,要一一实现上图2方式成本很高,如图6所示,是某种app中设置文本text的代码。可以看出有3900多处需要处理,如果要手动实现,开发成本非常高。

而本发明实施例中,若要进行app的国际化,只需开发对应的语言映射字典即可,在具体实现时,根据该字典直接完成视图中各元素的语言转换,而无需按照图2的方式进行修改,该方式不仅开发成本低,而且极大的提高了转换效率。

在本发明第二实施例中,提供一种语言转换方法,本实施例相比于第一实施例将着重阐述语言转换过程,与第一实施例相同的部分参见第一实施例。

具体的,如图7所示,本发明实施例所述方法包括如下步骤:

步骤s701,在支持固定语言的应用程序启动后,检测所支持的固定语言是否与系统语言一致;

步骤s702,在检测结果为不一致时,获取与所述系统语言对应的语言映射字典;

步骤s703,获取待显示页面的视图层级;

本发明实施例中,应用程序的页面视图是有层级结构的,如图8所示,示出了视图的层级结构和显示的text文本。

步骤s704,遍历所述视图层级,确定需要进行语言转换的视图元素;

本发明实施例中,在视图层级下,有的视图元素中有要进行语言转换的文字,而有的元素没有,本实施例就是将视图元素中需要进行语言转换的视图元素遍历出来。

步骤s705,查找所述语言映射字典,将所述视图元素显示的文字转换为与所述系统语言对应的语言文字。

本发明实施例中,所述语言映射字典中包括:各视图元素在所述固定语言下显示的文字与在所述系统语言下显示的文字之间的映射关系;其中,各视图元素为所述应用程序的各视图层级中的各视图元素。

综上可知,利用本发明实施例所述方法的应用程序可以支持固定语言,当用户的系统语言为其他语言时,可以临时去下载对应的语言映射字典,遍历视图层级,将需要进行语言转换的视图元素,利用语言映射字典,可以完成语言的转换,也就是说,在有应用程序国际化需求时,不用再开发阶段就在应用程序中开发存储多种语言的语言包,而是在有国际化需求时,只需要开发对应的映射字典即可。而用户也不用下载所有的映射字典,而是根据系统语言去判断下载哪种,下载后,直接映射显示即可。所以,即实现了国际化,又达到了节省了内存空间,降低开发成本的目的。

在本发明第三实施例中,提供一种语言转换方法,本实施例将结合具体应用示例对本发明的实施过程进行详细阐述。本实施例将以app的初始开发语言是中文、app为安装在手机中的app为例进行说明。如图9所示,本实施例所述方法包括如下步骤:

步骤1,app启动;

步骤2,检测是否存在系统语言对应的语言映射字典,并在不存在时,执行步骤3;

步骤3,根据用户手机的系统语言,去下载对应的语言映射字典;

步骤4,将下载的语言映射字典保存为一个名为localizable.strings的文件,比如用户系统语言是英文,则下发的语言映射字典如图10所示,其中,localizable.strings文件只有一个。文件中左侧是app中页面写死的固定的文字,右侧是对应的英文文字。

步骤5,在页面展示或者刷新时,利用语言转换组件,获取当前页面栈的视图,然后遍历视图层级,获取视图元素的text文字,然后根据语言映射字典替换为当前语言的文字。

具体实现上,语言转换组件查找uiwindow的所有子视图subviews,然后检查是否显示文本,存在文本则按照图10的语言映射字典替换为文本对应的右侧文字。

利用本实施例所述的方法,想要实现app国际化,只需按需下载与系统语言对应的语言映射字典,而不是提前准备好所有支持的语言包,利用下载的语言映射字典后可以动态替换语言文字,不需要手动按照图2实现国际化,极大的降低了开发成本,且不需要预先存储几十种语言的语言包,节省了内存空间。

在本发明第四实施例中,提供一种语言转换装置,如图11所示,所述装置包括:

检测模块1110,用于在支持固定语言的应用程序启动后,检测所支持的固定语言是否与系统语言一致;

获取模块1120,用于在检测结果为不一致时,获取与所述系统语言对应的语言映射字典;

语言转换模块1130,用于利用所述语言映射字典,对所述应用程序显示的页面文字进行语言转换。

可选地,本发明实施例中,所述获取模块,具体用于在检测结果为不一致时,检测在前是否已经下载了与所述系统语言对应的语言映射字典,若是,则以已下载的语言映射字典作为获取的语言映射字典;否则,下载与所述系统语言对应的语言映射字典。

可选地,本发明实施例中,所述语言转换模块,具体用于获取待显示页面的视图层级,遍历所述视图层级,确定需要进行语言转换的视图元素,查找所述语言映射字典,将所述视图元素显示的文字转换为与所述系统语言对应的语言文字。

可选地,本发明实施例中,不同于现有技术中的语言包(现有技术中的语言包可参见图1),本实施例所述语言映射字典中包括:

各视图元素在所述固定语言下显示的文字与在所述系统语言下显示的文字之间的映射关系;其中,各视图元素为所述应用程序的各视图层级中的各视图元素。利用该映射关系,即可以将应用程序中各视图元素中的文字转换为与系统语言相同的文字。例如,应用程序支持的固定语言为中文,系统语言为英文,应用程序的某视图元素的文字为“标题”,则映射关系为“标题”=“title”,那么当渲染视图元素时,就会将“标题”显示为“title”。

本实施例是与第一、二方法实施例所对应的装置实施例,本实施例中各功能模块的具体实现方式可参见第一、二实施例记载的内容,本实施例不再赘述。

综上可知,本发明实施例所述装置,使得的应用程序可以支持固定语言,当用户的系统语言为其他语言时,可以临时去下载对应的语言映射字典,遍历视图层级,将需要进行语言转换的视图元素,利用语言映射字典,可以完成语言的转换,也就是说,在有应用程序国际化需求时,不用再开发阶段就在应用程序中开发存储多种语言的语言包,而是在有国际化需求时,只需要开发对应的映射字典即可。而用户也不用下载所有的映射字典,而是根据系统语言去判断下载哪种,下载后,直接映射显示即可。所以,即实现了国际化,又达到了节省了内存空间,降低开发成本的目的。

在本发明第五实施例中,提供一种计算设备,提供一种计算设备,如图12所示,所述计算设备包括:存储器1210、处理器1220及通信总线1230;所述通信总线1230用于实现处理器1220和存储器1210之间的连接通信;

具体的,本发明实施例中,处理器1220可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器1210用于存储所述处理器1220的可执行指令;

存储器1210,用于存储程序代码,并将该程序代码传输给处理器1220。存储器1210可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器1210也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器1210还可以包括上述种类的存储器的组合。

具体的,本发明实施例中,处理器1220用于执行存储器1210中存储的应用程序中的语言转换程序,以实现如下方法步骤:

步骤1,在支持固定语言的应用程序启动后,检测所支持的固定语言是否与系统语言一致;

步骤2,在检测结果为不一致时,获取与所述系统语言对应的语言映射字典;

步骤3,利用所述语言映射字典,对所述应用程序显示的页面文字进行语言转换。

本实施例中各步骤的实施过程可参见第一至第二实施例,本实施例不再赘述。

在本发明第六实施例中,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现如下方法步骤:

步骤1,在支持固定语言的应用程序启动后,检测所支持的固定语言是否与系统语言一致;

步骤2,在检测结果为不一致时,获取与所述系统语言对应的语言映射字典;

步骤3,利用所述语言映射字典,对所述应用程序显示的页面文字进行语言转换。

本实施例中各步骤的实施过程可参见第一至第二实施例,本实施例不再赘述。

其中,计算机存储介质可以是ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动硬盘、cd-rom或者本领域已知的任何其他形式的存储介质。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1