CN109901886B - 页面语言切换方法、***、装置和计算机可读存储介质 - Google Patents
页面语言切换方法、***、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN109901886B CN109901886B CN201910064345.6A CN201910064345A CN109901886B CN 109901886 B CN109901886 B CN 109901886B CN 201910064345 A CN201910064345 A CN 201910064345A CN 109901886 B CN109901886 B CN 109901886B
- Authority
- CN
- China
- Prior art keywords
- page
- language
- application
- module
- event
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请是关于一种页面语言切换方法、***、装置和计算机可读存储介质。页面语言切换方法包括:第一应用在接收到用户输入的切换语言的操作时,更新本地语言配置;第一应用启动后,采用第一监听模块监听第一应用的页面启动事件,页面启动事件为第一应用开始启动一个页面的事件;第一监听模块监听到一个页面对应的页面启动事件后,启动配置修改模块,配置修改模块基于本地语言配置修改页面的语言;以及第一应用完成页面的启动。使用该页面语言切换方法修改语言时,第一监听模块当监听到一个页面的页面启动事件时,调用配置修改模块修改页面的语言,使得后续打开的所有页面都会被相应地修改其展示的语言,解决了应用内更换语言的问题。
Description
技术领域
本申请属于计算机软件应用领域,尤其是页面语言切换方法、***、装置和计算机可读存储介质。
背景技术
随着移动互联网行业的快速发展,APP应用逐渐成为我们生活中不可或缺的一部分,大部分APP应用的用途都跟我们的生活息息相关,对我们的生活起了巨大的作用。当我们使用多语言的APP时,一定会需要APP使用的语言能够被我们自己所熟知,APP为满足这种需求设置了应用内更换语言的功能,其具体表象是进入APP设置界面任意选择自己常用的语言后,APP会自动进行重启,并立即展示成选中的目标语言。
对于应用内更换语言这种功能,开发人员对早期Android***(6.0以下版本)的代码较为熟悉,开发较简单,然而Android 7.0以上***对更换语言的API(编程接口)进行了巨大调整,开发人员要完整实现好应用内更换语言这一功能就表现出一定的难度。因为在现有谷歌(Google)提供的更换语言的官方技术方案上,只能更换自己实现的界面上的语言,而无法完美地更换第三方库提供的界面上的语言(开发人员无法获取第三方库提供的源代码)。并且谷歌官方文档针对Android 7.0以上应用内更换语言的功能,需要在每个页面启动时加入更换成目的语言的逻辑,当面对有各种复杂逻辑并集成了各种第三方SDK(Software Development Kit,软件开发工具包)的项目时,需要修改各个界面的启动逻辑,工作复杂并且所涉及的页面也容易被开发人员遗漏,增加了开发成本,还不能更换第三方库提供的代码,语言切换效果差,效率低,用户体验较差。
发明内容
为克服相关技术中存在的问题,本申请公开一种页面语言切换方法、***、装置和计算机可读存储介质,以解决现有技术中存在的问题。
根据本申请实施例的第一方面,提供一种页面语言切换方法,包括:
第一应用在接收到用户输入的切换语言的操作时,更新本地语言配置;
所述第一应用启动后,采用第一监听模块监听所述第一应用的页面启动事件,所述页面启动事件为所述第一应用开始启动一个页面的事件;
所述第一监听模块监听到一个页面对应的所述页面启动事件后,启动配置修改模块,所述配置修改模块基于所述本地语言配置修改所述页面的语言;以及
所述第一应用完成所述页面的启动。
可选地,所述页面语言切换方法还包括:第一应用在初始化阶段,将所述WebView内核读取的资源路径重定向为所述本地语言配置所属的文件路径。
可选地,所述页面语言切换方法还包括:
判断所述第一应用所属的操作***及其版本;
如果其所属操作***及版本为预设操作***的预设版本,则启动第二监听模块监听所述第一应用的页面完成事件,所述页面完成事件为所述第一应用完成一个页面绘制的事件;
当所述第二监听模块在监听到一个页面完成事件后,启动拦截模块阻止在所述页面完成事件之后的语言重置操作。
可选地,所述拦截模块检测语言重置操作的执行条件,并使所述执行条件不成立。
可选地,所述拦截模块通过Java反射机制使所述执行条件不成立。
可选地,所述第二监听模块采用动态代理技术监听所述第一应用的页面完成事件。
可选地,所述第一应用安装在Android的操作***中。
可选地,所述第一监听模块和所述配置修改模块采用HOOK技术实现功能。
根据本发明实施例的第二方面,提供一种页面语言切换***,包括:
第一应用,用于启动和绘制页面,并且通过初始页面接收用户输入的切换语言的操作,据此更新本地语言配置,还用于启动第一监听模块;
第一监听模块,用于监听所述第一应用的页面启动事件,并在监听到一个页面对应的所述页面启动事件后,启动配置修改模块;
配置修改模块,用于根据所述本地语言配置修改所述页面的语言。
可选地,所述第一应用在初始化阶段,将WebView内核读取的资源路径重定向为所述本地语言配置所属的文件路径。
可选地,所述页面语言切换***还包括:
判断模块,用于判断所述第一应用所属的操作***及其版本;
启动模块,用于在所述第一应用所属的操作***及版本为预设操作***的预设版本时,启动第二监听模块监听所述第一应用的页面完成事件,所述页面完成事件为所述第一应用完成一个页面绘制的事件,
所述页面语言切换***还包括第二监听模块和拦截模块,所述第二监听模块在监听到一个页面完成事件后,采用所述拦截模块阻止在所述页面完成事件之后的语言重置操作。
可选地,所述拦截模块检测所述语言重置操作的执行条件,并使所述执行条件不成立。
可选地,所述拦截模块通过Java反射机制使所述执行条件不成立。
可选地,所述第二监听模块采用动态代理技术监听所述第一应用的页面完成事件。
可选地,所述第一应用安装在Android的操作***中。
可选地,所述第一监听模块和所述配置修改模块采用HOOK技术实现功能。
根据本发明实施例的第三方面,提供一种页面语言切换装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述任意一项所述的页面语言切换方法。
根据本发明实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述任一项所述的页面语言切换方法。
根据本发明实施例的第五方面,还提供了计算机程序产品,包括计算机程序产品,所述计算机程序包括程序指令,当所述程序指令被电子设备执行时,使所述电子设备执行上述任一项所述的页面语言切换方法。
本申请的另一实施例提供的技术方案可以包括以下有益效果:当用户修改语言选项时,本地语言配置被相应修改,而第一监听模块当监听到一个页面的页面启动事件时,调用配置修改模块修改页面的语言,由于后续打开的所有页面都会被第一监听模块监听到,从而使得每个后续打开所有页面都会被相应地修改其展示的语言,由此解决了应用内更换语言的问题。
进一步地,在第一应用的初始化阶段,修改WebView页面的资源路径,从而确保WebView页面不会被重置回***默认语言。
进一步地,通过第二监听模块监听页面完成事件,当第二页面完成或接近完成时,阻止语言重置操作,从而确保页面不会被重置回***默认语言。从而解决了网页界面语言异常,充分保证了代码的健全性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的页面语言切换方法的流程图;
图2是根据一示例性实施例示出的页面语言切换方法的流程图;
图3是根据一示例性实施例示出的又一页面语言切换方法的流程图;
图4是根据一示例性实施例示出的又一页面语言切换方法的流程图;
图5是根据一示例性实施例示出的页面语言切换***的示意图;
图6是根据一示例性实施例示出的一种用于执行页面语言切换方法的页面语言切换装置的框图;
图7是根据一示例性实施例示出的一种用于执行页面语言切换方法的页面语言切换装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的页面语言切换方法的流程图,具体包括以下步骤。
在步骤S101中,第一应用在接收到用户输入的切换语言的操作时,更新本地语言配置。
在步骤S102中,第一应用启动后,采用第一监听模块监听第一应用的页面启动事件,页面启动事件为第一应用开始启动一个页面的事件。
在步骤S103中,第一监听模块监听到一个页面对应的页面启动事件后,启动配置修改模块。配置修改模块基于本地语言配置修改页面的语言。
在步骤S104中,第一应用完成页面的启动。
第一应用为背景技术中提及的应用APP。在本实施例中,在第一应用之外增加了一个用于监听第一应用的页面启动事件的第一监听模块和用于修改页面的语言的配置修改模块。当用户通过第一应用提供的操作界面进行语言切换的操作时,第一应用接收到该操作指令,根据该操作指令更新本地语言配置。当用户继续通过第一界面提供的操作界面打开一个新的页面时,此时第一应用开始调用相应的页面绘制模块绘制一个新的页面,而同时第一监听模块监听到该页面的页面启动事件,并根据本地语言配置修改该页面的语言,第一应用在之后完成页面的绘制。其中页面启动事件可以理解为打开一个页面的操作。
现有技术中的问题是在应用内更换语言存在的问题。而根据本实施例,当用户通过第一应用的操作界面修改了语言选项时,由于后续打开的所有页面的操作都会被第一监听模块监听到,从而使得每个后续打开所有页面都会被相应地修改其展示的语言,由此解决了应用内更换语言的问题。
可以将第一监听模块和配置修改模块想象成一个中转站,应用APP在初始页面之后的所有页面的启动都必须经过中转站,通过中转站将页面语言从***语言切换到目标语言,不仅可以修改自身页面上的语言,还可以修改第三方库提供的页面上的语言,不需要在每个页面上都书写更换语言的代码,避免漏写更换语言的代码,保证了语言切换的功能模块的代码独立性,而且提高了开发效率,节省了开发成本。
以Android操作***的移动设备为例,用户下载了一个Android应用并将其安装后,发现该应用的页面上展示的语言为英语,而用户更习惯于使用德语,此时需要将该应用将页面上显示的英语的内容切换为德语的内容,具体操作例如是在设置界面,找到切换语言的选项,进行切换。一般地,在先打开的页面仍旧为英语,但是之后打开的所有页面将被切换为德语。
这种方式尤其适用于Android高版本(7.0及以上)的设备,应用APP采用较多的第三方库提供的页面,不易进行语言的切换。而让开发人员研读所有的第三方库提供的代码又会导致开发效率降低。通过本实施例,能够保证APP切换过语言后,APP上的各个页面(包含第三方库提供的界面)能够正常展示。
在一个实施例中,可以基于HOOK(钩子)技术实现第一监听模块和配置修改模块。结合图1的实施例,要实现在中转站中进行语言的切换。HOOK技术即在原有的业务逻辑运行时,动态将一部分代码注入。HOOK可以理解为一种“钩子”。钩子实际上是一个处理消息的程序段,通过***调用,把它挂入***。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
对应于上述实施例中,页面启动事件为根据钩子技术设置要钩住的事件,配置修改模块为根据钩子技术设置的特定处理。应用APP在绘制任意一个页面时,会产生三个事件:页面启动事件,页面中间事件和页面完成事件。当第一监听模块监听到页面启动事件时,页面还未开始或即将开始绘制,此时修改了页面的语言,后续第一应用能够采用修改的语言继续绘制页面,由此实现对页面语言的切换。
图2是根据一示例性实施例示出的页面语言切换方法的流程图。具体包括以下步骤。
在步骤S201中,第一应用在初始化阶段,将WebView内核读取的资源路径重定向为本地语言配置所属的文件路径。
在步骤S202中,第一应用在接收到用户输入的切换语言的操作时,更新本地语言配置。
在步骤S203中,第一应用启动后,采用第一监听模块监听第一应用的页面启动事件,页面启动事件为第一应用开始启动一个页面的事件。
在步骤S204中,第一监听模块监听到一个页面对应的页面启动事件后,启动配置修改模块。
在步骤S205中,第一应用完成页面的启动。
在本实施例中,步骤S202-S205和步骤S101-S104相同,这里就不再赘述。在本实施例中,增加了步骤S201。步骤S201针对第一应用的启动场景。当用户点击第一应用时,第一应用开始启动,在第一应用的启动环节一般包括全局配置和初始化页面两个步骤。全局配置步骤读取相应的配置信息存储到内存中,初始化页面步骤完成对初始页面的绘制工作。在本实施例中,将全局配置步骤中的WebView内核读取的资源路径重定向当本地语言配置所属的文件路径。通过这种方式,使得后续具有WebView内核的页面在创建时,从本地语言配置中读取语言选项。由此,具有WebView内核的页面在创建时,要么从本地语言配置中得到新的语言选项,要么经过配置修改模块将其默认的语言选项修改掉。无论何种情况,都能确保具有WebView内核的页面的正常显示。
上述两个实施例中,都是针对适配Android 7.0以上版本的设备或***中,无法完成所有页面的语言切换的问题进行的改进,而在实际操作中,还会遇到一些其他的异常场景。例如在适配Android 8.0以上版本的***中,虽然启动页面后,页面的语言被更换,但当界面元素全部绘制完成后,由于代码原因,页面的语言可能又被强制重置成***默认语言,从而导致出现该界面上一部分UI(User Interface,用户界面)是设定的语言,一部分UI是***的默认语言,导致页面错乱。本发明对此提出如下实施例的解决方案。
图3是根据一示例性实施例示出的又一页面语言切换方法的流程图。
在步骤S301中,第一应用在接收到用户输入的切换语言的操作时,更新本地语言配置。
在步骤S302中,第一应用启动后,采用第一监听模块监听第一应用的页面启动事件,页面启动事件为第一应用开始启动一个页面的事件。
在步骤S303中,第一监听模块监听到一个页面对应的页面启动事件后,启动配置修改模块。
在步骤S304中,第一应用创建监听页面完成事件的第二监听模块,启动拦截模块阻止在页面完成事件之后的语言重置操作。
在步骤S305中,第二监听模块监听到一个页面完成事件时,启动拦截模块阻止在页面完成事件之后的语言重置操作。
在步骤S306中,第一应用完成页面的启动。
本实施例是图1的又一优化方案,步骤S301-S303与图1的步骤S101-S103相同,这里不再赘述。步骤S304-S305是在图1的实施例的基础上实现的其他流程,用于防止页面的语言被重置为***默认的语言。
在本实施例中,由于页面的语言被重置为***默认的语言的故障通常发生在页面元素即将绘制完成之时,所以可以创建第二监听模块,用于监听页面元素即将绘制完成的消息,即页面完成事件,并在捕获该事件之后进行相应的处理操作。第二监听模块监听“页面元素即将绘制完成”的事件后,启动拦截模块阻止在页面完成事件之后的语言重置操作。
具体而言,拦截模块暂停页面元素的绘制,开始进行“语言重置为***默认语言”的执行条件的检测,判断是否存在“语言重置为***默认语言“的执行条件。如果存在该执行条件,那么采用一定的方法阻止该条件的生成,若果不存在该执行条件,继续页面元素的绘制。
在本实施例中,通过第二监听模块和拦截模块能够实现部分第三方的页面在已经被配置修改模块修改了页面对应的语言的基础上,切换回***默认语言,从而确保了页面语言的正确。
在一些实施例中,使“语言重置为***默认语言”执行条件不成立的前提是利用动态代理技术监听到“页面元素即将绘制完成”的事件,不成立的做法是通过一定的否定程序例如是Java反射机制将执行条件进行否定,这样业务逻辑被阻断,“语言重置为***默认语言”的逻辑也就不会执行,从而达到不被重置成页面语言的效果。动态代理技术用于监听业务逻辑的执行,与HOOK技术比较相似,也是在应用中创建的监听某种窗口或消息的传输的程序,可以捕获到需要的消息,并执行其他操作。
由此可见,本实施例不仅需要监听“页面元素即将绘制完成”的消息,还要检测是否存在“语言重置为***默认语言”的执行条件,检测到这一执行条件时,进行执行条件的否定,避免语言被重置的风险。
这种方式尤其在监听到页面启动的消息后,进入页面中转站,在中转站中完成目标语言的切换,再返回到应用中,完成页面启动的操作,即应用中所有的页面启动都会经过这个中转站启动,并可以做到对***的页面语言更换成目标语言。这一过程使得目标语言的切换可以被统一控制,开发人员无需关心哪个页面启动,只要是接收到页面启动的消息,都进入中转站处理,不需要为每个页面都编写切换语言的逻辑,节约开发效率,语言切换效率高而且切换结果准确,适用范围广。
图4是根据一示例性实施例示出的又一的页面语言切换方法的流程图。本实施例是对上述几个实施例的汇总实施例,是一套完整的在应用内切换语言的流程。在上述几个实施例中均有涉及,以下进行简要介绍。
在步骤S401中,点击应用图标。进入应用,等待应用的启动。
在步骤S402中,应用启动过程。在此期间进行一系列的初始化步骤并绘制应用的初始页面。
在步骤S403中,加载WebView内核。在应用启动时,先进行WebView内核的加载。
在步骤S404中,为WebView内核指定资源路径。将WebView内核的资源路径指定到本地语言配置所属的文件路径。
在步骤S405中,接收切换语言的操作。用户通过初始页面切换语言。引用根据用户的指令完成切换步骤,更新本地语言配置。本地语言配置部署在本地的移动终端上。当下次通过该移动终端打开应用时,直接读取本地语言配置。
在步骤S406中,启动任意界面。当切换语言的操作完成后,用户可通过操作界面启动任意一个页面。
在步骤S407中,监听所有页面启动的消息。采用一个监听模块监听所有页面启动的消息。例如,通过HOOK技术创建的监听模块进行监听。
在步骤S408中,进入通过HOOK技术创建的监听模块。当一个页面启动的消息被接收时,控制权会被监听模块得到。
在步骤S409中,切换页面语言。监听模块得到控制权后,调用一个相应的函数切换页面语言。
在步骤S410中,页面启动结束。控制权回到应用。
在步骤S411中,页面上的元素开始绘制。应用开始绘制页面上的各个原色。
在步骤S412中,页面元素即将绘制完成。
在步骤S413中,判断***版本是否小于8.0。当页面元素即将绘制完成时,首先判断应用所在的安卓***的版本,若***版本低于8.0,不会出现界面显示异常的问题,结束流程;若***版本大于等于8.0,进入下一步。
在步骤S414中,监听页面元素即将绘制完成的消息。创建一个新的监听模块用于监听页面原色即将完成绘制的消息。
在步骤S415中,检测语言被重置为***默认语言的执行条件。当监听到“页面元素即将绘制完成”的消息时,检测是否存在“语言被重置为***默认语言”的执行条件。若存在,执行下一步骤。
在步骤S416中,否定执行条件。采用一定的反射机制将检测到的“语言被重置为***默认语言”的执行条件进行否定。
在步骤S417中,页面上的语言展示为正确的语言。完成整个语言切换流程,应用内的所有页面正常显示目标语言。由此完成本实施例的页面语言切换方法。
本实施例的页面语言切换方法通过多个步骤的配合,在应用启动时,首先进行网页界面(WebView界面)的内核初始化和资源加载路径的指定,保证在语言切换后,网页界面的语言的准确性;用户在使用应用的过程中,在接收语言切换的操作后,采用第一监听模块进行监听,使得目标语言的切换和页面启动都经过中转站,避免第三方库提供的代码无法更改造成的语言不一致的现象;而且对于适配安卓8.0以上的高版本的***,将目标语言重置为页面语言的执行逻辑进行否定,保证语言切换的准确性。解决了用户使用过程中可能出现的一系列问题,使用于适配安卓7.0以上的各个版本,适用范围广。而且不仅节省了开发人员的开发效率,还保证了应用内更换语言这一功能模块的代码独立性,可以独立运行或提供给第三方使用。
图5是根据一示例性实施例示出的页面语言切换***的示意图。该页面语言切换***包括第一应用501、第一监听模块502和配置修改模块503。
第一应用501用于启动和绘制页面,并且通过初始页面接收用户输入的切换语言的操作,据此更新本地语言配置,还用于启动第一监听模块。
第一监听模块502用于监听第一应用的页面启动事件,并在监听到一个页面对应的页面启动事件后,启动配置修改模块。
配置修改模块503用于根据本地语言配置修改页面的语言。
本实施例的页面语言切换***采用第一监听模块监听第一应用启动之后的所有页面启动的消息,并在接收页面启动的消息时调用配置修改模块完成语言切换。通过监听模块使得第一应用的所有页面的启动都会被监听到,并且据此实现应用内部切换语言,尤其适用于修改第三方库提供的页面上的语言,由于不需要在每个页面上都书写更换语言的代码,避免漏写更换语言的代码,保证了语言切换的功能模块的代码独立性,而且提高了开发效率,节省了开发成本。
在一些实施例中,第一应用在初始化阶段,将WebView内核读取的资源路径重定向为本地语言配置所属的文件路径。
在一些实施例中,页面语言切换***还包括:
判断模块(图中未示出),用于判断第一应用所属的操作***及其版本;
启动模块(图中未示出),用于在第一应用所属的操作***及版本为预设操作***的预设版本,则启动第二监听模块监听第一应用的页面完成事件,页面完成事件为第一应用完成一个页面绘制的事件;
页面语言切换***还包括第二监听模块(图中未示出)和拦截模块(图中未示出),第二监听模块在监听到一个页面完成事件后,采用拦截模块阻止在页面完成事件之后的语言重置操作。
在一些实施例中,拦截模块检测语言重置操作的执行条件,并使执行条件不成立。
在一些实施例中,拦截模块通过Java反射机制使执行条件不成立。
在一些实施例中,第二监听模块采用动态代理技术监听第一应用的页面完成事件。
本实施例的页面语言切换***提供了一套完整的适配高版本(Android7.0以上)的应用内更换语言的装置,性能优良,可以单独使用。关于上述实施例中的页面语言切换***,由于其中各个模块的功能已经在上述页面语言切换方法的实施例中进行了详细描述,由此进行了相对简略的描述。
图6是根据一示例性实施例示出的一种用于执行上述页面语言切换方法的电子设备1200的框图。例如,电子设备1200可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,电子设备1200可以包括以下一个或多个组件:处理组件1202,存储器1204,电力组件1206,多媒体组件1208,音频组件1210,输入/输出(I/O)的接口1212,传感器组件1214,以及通信组件1216。
处理组件1202通常控制电子设备1200的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1202可以包括一个或多个处理器1220来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1202可以包括一个或多个模块,便于处理组件1202和其他组件之间的交互。例如,处理组件1202可以包括多媒体模块,以方便多媒体组件1208和处理组件1202之间的交互。
存储器1204被配置为存储各种类型的数据以支持在电子设备1200的操作。这些数据的示例包括用于在电子设备1200上操作的任何应用或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1204可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1206为电子设备1200的各种组件提供电力。电源组件1206可以包括电源管理***,一个或多个电源,及其他与为电子设备1200生成、管理和分配电力相关联的组件。
多媒体组件1208包括在所述电子设备1200和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1208包括一个前置摄像头和/或后置摄像头。当电子设备1200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件1210被配置为输出和/或输入音频信号。例如,音频组件1210包括一个麦克风(MIC),当电子设备1200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1204或经由通信组件1216发送。在一些实施例中,音频组件1210还包括一个扬声器,用于输出音频信号。
I/O接口1212为处理组件1202和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1214包括一个或多个传感器,用于为电子设备1200提供各个方面的状态评估。例如,传感器组件1214可以检测到电子设备1200的打开/关闭状态,组件的相对定位,例如所述组件为装置1200的显示器和小键盘,传感器组件1214还可以检测电子设备1200,或电子设备1200一个组件的位置改变,用户与电子设备1200接触的存在或不存在,电子设备1200方位或加速/减速和电子设备1200的温度变化。传感器组件1214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1214还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1216被配置为便于电子设备1200和其他设备之间有线或无线方式的通信。电子设备1200可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件1216经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1216还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备1200可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述页面语言切换方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1204,上述指令可由电子设备1200的处理器1220执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图7是根据一示例性实施例示出的一种用于执行上述页面语言切换方法的页面语言切换***1300的框图。例如,装置1300可以被提供为一服务器。参照图7,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理组件1322的执行的指令,例如应用。存储器1332中存储的应用可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述页面语言切换方法。
装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(I/O)接口1358。装置1300可以操作基于存储在存储器1332的操作***,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (18)
1.一种页面语言切换方法,其特征在于,包括:
第一应用在接收到用户输入的切换语言的操作时,更新本地语言配置;
所述第一应用启动后,采用第一监听模块监听所述第一应用的页面启动事件,所述页面启动事件为所述第一应用开始启动一个页面的事件,所述页面启动事件是第一应用在页面还未开始或即将开始绘制时触发的事件;
所述第一监听模块监听到一个页面对应的所述页面启动事件后,启动配置修改模块,所述配置修改模块基于所述本地语言配置修改所述页面的语言;以及
所述第一应用采用修改的语言继续绘制页面,从而完成所述页面的启动。
2.根据权利要求1所述的页面语言切换方法,其特征在于,还包括:所述第一应用在初始化阶段,将WebView内核读取的资源路径重定向为所述本地语言配置所属的文件路径。
3.根据权利要求1所述的页面语言切换方法,其特征在于,还包括:
判断所述第一应用所属的操作***及其版本;
如果其所属操作***及版本为预设操作***的预设版本,则启动第二监听模块监听所述第一应用的页面完成事件,所述页面完成事件为所述第一应用完成一个页面绘制的事件;
当所述第二监听模块在监听到一个页面完成事件后,启动拦截模块阻止在所述页面完成事件之后的语言重置操作。
4.根据权利要求3所述的页面语言切换方法,其特征在于,所述拦截模块检测语言重置操作的执行条件,并使所述执行条件不成立。
5.根据权利要求4所述的页面语言切换方法,其特征在于,所述拦截模块通过Java反射机制使所述执行条件不成立。
6.根据权利要求3所述的页面语言切换方法,其特征在于,所述第二监听模块采用动态代理技术监听所述第一应用的页面完成事件。
7.根据权利要求1所述的页面语言切换方法,其特征在于,所述第一应用安装在Android的操作***中。
8.根据权利要求1所述的页面语言切换方法,其特征在于,所述第一监听模块和所述配置修改模块采用HOOK技术实现功能。
9.一种页面语言切换***,其特征在于,包括:
第一应用,用于启动和绘制页面,并且通过初始页面接收用户输入的切换语言的操作,据此更新本地语言配置,还用于启动第一监听模块;
第一监听模块,用于监听所述第一应用的页面启动事件,并在监听到一个页面对应的所述页面启动事件后,启动配置修改模块,所述页面启动事件是第一应用在页面还未开始或即将开始绘制时触发的事件;
配置修改模块,用于根据所述本地语言配置修改所述页面的语言。
10.根据权利要求9所述的页面语言切换***,其特征在于,所述第一应用在初始化阶段,将WebView内核读取的资源路径重定向为所述本地语言配置所属的文件路径。
11.根据权利要求9所述的页面语言切换***,其特征在于,所述页面语言切换***还包括:
判断模块,用于判断所述第一应用所属的操作***及其版本;
启动模块,用于在所述第一应用所属的操作***及版本为预设操作***的预设版本时,启动第二监听模块监听所述第一应用的页面完成事件,所述页面完成事件为所述第一应用完成一个页面绘制的事件,
所述页面语言切换***还包括第二监听模块和拦截模块,所述第二监听模块在监听到一个页面完成事件后,采用所述拦截模块阻止在所述页面完成事件之后的语言重置操作。
12.根据权利要求11所述的页面语言切换***,其特征在于,所述拦截模块检测所述语言重置操作的执行条件,并使所述执行条件不成立。
13.根据权利要求12所述的页面语言切换***,其特征在于,所述拦截模块通过Java反射机制使所述执行条件不成立。
14.根据权利要求13所述的页面语言切换***,其特征在于,所述第二监听模块采用动态代理技术监听所述第一应用的页面完成事件。
15.根据权利要求9所述的页面语言切换***,其特征在于,所述第一应用安装在Android的操作***中。
16.根据权利要求9所述的页面语言切换***,其特征在于,所述第一监听模块和所述配置修改模块采用HOOK技术实现功能。
17.一种页面语言切换装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1-8任意一项所述的页面语言切换方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现如权利要求1至8任一项所述的页面语言切换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064345.6A CN109901886B (zh) | 2019-01-23 | 2019-01-23 | 页面语言切换方法、***、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910064345.6A CN109901886B (zh) | 2019-01-23 | 2019-01-23 | 页面语言切换方法、***、装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109901886A CN109901886A (zh) | 2019-06-18 |
CN109901886B true CN109901886B (zh) | 2022-06-03 |
Family
ID=66944095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910064345.6A Active CN109901886B (zh) | 2019-01-23 | 2019-01-23 | 页面语言切换方法、***、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109901886B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532052A (zh) * | 2019-08-26 | 2019-12-03 | 深圳坚朗海贝斯智能科技有限公司 | 智能锁***的多国语言切换方法、智能锁***、存储单元 |
CN110795192B (zh) * | 2019-10-29 | 2023-08-25 | Vidaa(荷兰)国际控股有限公司 | 语言切换方法、装置及终端设备 |
CN114546559A (zh) * | 2022-02-21 | 2022-05-27 | 深圳壹账通智能科技有限公司 | 页面多语言的切换方法、装置、计算机设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464438A (zh) * | 2002-06-18 | 2003-12-31 | 力捷电脑股份有限公司 | 不需重新启动应用程序而能更换使用者接口语言的方法 |
CN101714086A (zh) * | 2009-12-22 | 2010-05-26 | 中兴通讯股份有限公司 | 一种软件界面语言的选择方法及装置 |
CN102567384A (zh) * | 2010-12-29 | 2012-07-11 | 盛乐信息技术(上海)有限公司 | 基于网页浏览器引擎的网页多语言动态切换方法及*** |
CN103164245A (zh) * | 2013-03-19 | 2013-06-19 | 华为终端有限公司 | 应用显示特定语言的方法和终端 |
US8479112B2 (en) * | 2003-05-13 | 2013-07-02 | Microsoft Corporation | Multiple input language selection |
CN103377206A (zh) * | 2012-04-18 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 显示页面内容的方法及浏览器 |
CN104182425A (zh) * | 2013-05-28 | 2014-12-03 | 北京信威通信技术股份有限公司 | 一种多语种网站的静态页面生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573757B (zh) * | 2015-12-15 | 2019-12-03 | Tcl集团股份有限公司 | Android***的语言更新方法及装置 |
-
2019
- 2019-01-23 CN CN201910064345.6A patent/CN109901886B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464438A (zh) * | 2002-06-18 | 2003-12-31 | 力捷电脑股份有限公司 | 不需重新启动应用程序而能更换使用者接口语言的方法 |
US8479112B2 (en) * | 2003-05-13 | 2013-07-02 | Microsoft Corporation | Multiple input language selection |
CN101714086A (zh) * | 2009-12-22 | 2010-05-26 | 中兴通讯股份有限公司 | 一种软件界面语言的选择方法及装置 |
CN102567384A (zh) * | 2010-12-29 | 2012-07-11 | 盛乐信息技术(上海)有限公司 | 基于网页浏览器引擎的网页多语言动态切换方法及*** |
CN103377206A (zh) * | 2012-04-18 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 显示页面内容的方法及浏览器 |
CN103164245A (zh) * | 2013-03-19 | 2013-06-19 | 华为终端有限公司 | 应用显示特定语言的方法和终端 |
CN104182425A (zh) * | 2013-05-28 | 2014-12-03 | 北京信威通信技术股份有限公司 | 一种多语种网站的静态页面生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109901886A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107967141B (zh) | 操作***升级方法、装置及终端 | |
CN107329742B (zh) | 软件开发工具包调用方法及装置 | |
US9886264B2 (en) | Method and device for upgrading firmware | |
EP3032412A1 (en) | Method and device for upgrading firmware | |
US9870239B2 (en) | Method and device for running application program | |
CN109901886B (zh) | 页面语言切换方法、***、装置和计算机可读存储介质 | |
CN105808305B (zh) | 静态资源的加载方法和装置 | |
CN109117144B (zh) | 页面处理方法、装置、终端及存储介质 | |
CN110781080A (zh) | 程序调试方法及装置、存储介质 | |
CN111596980B (zh) | 一种信息处理方法及装置 | |
CN109976872B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110221813B (zh) | 应用的数据连接建立方法、装置、存储介质和电子设备 | |
CN112214254A (zh) | 加速应用程序启动的方法及装置、以及电子设备 | |
CN109491655B (zh) | 一种输入事件处理方法及装置 | |
CN110908904A (zh) | 调试快应用的方法、调试快应用的装置及电子设备 | |
CN107861666B (zh) | 桌面应用安装方法及装置 | |
CN113467854B (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
CN109542660B (zh) | 故障处理方法及装置 | |
CN110417987B (zh) | 一种操作响应方法、装置、设备和可读存储介质 | |
CN108427568B (zh) | 用户界面的更新方法及装置 | |
CN111767063A (zh) | 应用程序的资源更新方法、装置及设备 | |
CN107463414B (zh) | 应用安装方法及装置 | |
CN112083981A (zh) | 一种页面视图组件的创建方法和装置 | |
CN107391356B (zh) | 卡顿信息获取方法、装置及计算机可读存储介质 | |
CN111597106A (zh) | 一种埋点管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |