CN114896005A - 基于人工智能的应用程序语言配置方法及相关设备 - Google Patents
基于人工智能的应用程序语言配置方法及相关设备 Download PDFInfo
- Publication number
- CN114896005A CN114896005A CN202210446837.3A CN202210446837A CN114896005A CN 114896005 A CN114896005 A CN 114896005A CN 202210446837 A CN202210446837 A CN 202210446837A CN 114896005 A CN114896005 A CN 114896005A
- Authority
- CN
- China
- Prior art keywords
- language
- application program
- interface
- language resource
- view
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 143
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 38
- 238000012544 monitoring process Methods 0.000 claims abstract description 15
- 238000012545 processing Methods 0.000 claims description 7
- 230000000694 effects Effects 0.000 description 32
- 230000006870 function Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 239000013589 supplement Substances 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 239000000047 product Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000006378 damage Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/454—Multi-language systems; Localisation; Internationalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请提出一种基于人工智能的应用程序语言配置方法、装置、电子设备及存储介质,基于人工智能的应用程序语言配置方法包括:建立多语言资源包;自定义接口类,用于支持所述应用程序的多语言切换;自定义视图控件,用于通过添加成员变量实现所述自定义接口类中的自定义方法;基于所述成员变量调用语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换;依据预设接口对当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。本申请无需重启应用程序即可完成所有视图页面的语言更新,从而提高应用程序语言配置国际化的效率。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种基于人工智能的应用程序语言配置方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的不断发展,应用程序APP的国际化多语言需求越来越多,应用程序国际化是在软件设计和开发的过程中,使得功能和代码设计能处理多种语言和文化习俗,在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法。
然而,如果用户已经启动了应用程序APP后再切换语言,由于页面所有的视图控件已经渲染完成,语言资源是在视图页面初始化时才加载的,所以在切换语言后,页面无法刷新为新的语言类型,只能重启应用,从而大大降低了应用程序国际化的效率。
发明内容
鉴于以上内容,有必要提出一种基于人工智能的应用程序语言配置方法及相关设备,以解决如何提高应用程序国际化的效率这一技术问题,其中,相关设备包括基于人工智能的应用程序语言配置装置、电子设备及存储介质。
本申请提供一种基于人工智能的应用程序语言配置方法,所述方法包括:
建立多语言资源包,所述多语言资源包包括不同语言资源数据的文件夹,所述语言资源数据用于配置应用程序的目标语言;
自定义接口类,所述自定义接口类包括多个自定义方法,用于支持所述应用程序的多语言切换;
自定义视图控件,继承所述应用程序的原生视图控件的属性,所述自定义视图控件用于通过添加成员变量实现所述自定义接口类中的自定义方法;
基于所述自定义视图控件中的成员变量调用所述语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换;
依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。
如此,本申请通过建立多语言资源包以获取语言资源数据,并基于自定义视图控件调用语言资源数据实现应用程序的国际化,无需重启应用程序即可完成所有视图页面的语言更新,从而提高应用程序国际化的效率。
在一些实施例中,所述建立多语言资源包包括:
在所述应用程序的资源文件中创建包括不同语言资源数据的文件夹;
基于所述不同语言资源数据对应的文件夹建立语言配置表,所述语言配置表包含所述应用程序需要配置的目标语言名称、目标语言获取地址及目标语言资源文件存储位置;
解析所述语言配置表以获取所述语言资源数据。
如此,通过在应用程序的资源文件中创建不同语言资源数据所对应的文件夹,可以在对所述应用程序进行语言配置时,快速准确地获取对应的语言资源,提高对所述应用程序进行语言配置的效率。
在一些实施例中,在所述解析所述语言配置表以获取所述语言资源数据之后,所述方法还包括:
判断所述目标语言资源文件存储位置中是否存在与所述目标语言名称相同的原语言资源文件,若存在,则使用所述目标语言资源数据对应的文件覆盖所述原语言资源文件;若不存在,则将所述目标语言资源数据对应的文件存储至所述目标语言资源文件存储位置中。
如此,可以防止将所述语言资源数据对应的文件存储至所述目标语言资源文件存储位置中时,因为所述目标语言资源文件存储位置中已存在原语言资源文件而产生的文件冲突错误。
在一些实施例中,所述自定义接口类包括:
自定义接口类BaseLanguageView,所述BaseLanguageView包括方法setTextById()和updateLanguageText(),所述setTextById()用于获取语言资源ID,所述updateLanguageText()用于刷新语言资源。
如此,便于后续过程中获取到的自定义视图控件据此进行方法调用,从而实现对所述应用程序的多语言配置,提高应用程序的多语言配置效率。
在一些实施例中,所述自定义视图控件包括:
自定义LanguageTextView,继承TextView,实现所述自定义的BaseLanguageView接口类,实现setTextById()方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageButton,继承Button,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageEditText,继承EditText,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId和hintId。
如此,通过所述自定义视图控件可以快速获取应用程序对应语言资源文件下的语言资源数据,并显示在视图页面中,完成所述应用程序的多语言配置,同时便于工作人员实施掌握所述应用程序的视图页面信息。
在一些实施例中,所述成员变量textId用于存储当前视图设置的语言资源ID,切换语言时会使用此ID获取对应的国际化语言;所述成员变量hintId用于存储当前LanguageEditText设置的语言资源ID,切换语言时则使用此ID获取对应的国际化语言。
如此,通过所述成员变量作为参数,可以根据应用程序依据语言资源ID快速准确地进行语言切换。
在一些实施例中,所述依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置,包括:
依据预设接口为所述应用程序的当前视图界面添加订阅模式以监听所述应用程序的当前视图界面的语言切换;
在所述应用程序的当前视图界面进行语言切换时,依据所述订阅模式更新所述应用程序的所有视图页面的语言以完成所述应用程序的语言配置。
如此,通过设置订阅模式可以在对应用程序的视图页面进行更新时,及时获取视图页面的变化状态,由此实现所有视图页面的对应更新,提高所述应用程序进行多语言配置的效率。
本申请实施例还提供一种基于人工智能的应用程序语言配置装置,所述装置包括:
建立单元,用于建立多语言资源包,所述多语言资源包包括不同语言资源数据的文件夹,所述语言资源数据用于配置应用程序的目标语言;
切换单元,用于自定义接口类,所述自定义接口类包括多个自定义方法,用于支持所述应用程序的多语言切换;
实现单元,用于自定义视图控件,继承所述应用程序的原生视图控件的属性,所述自定义视图控件用于通过添加成员变量实现所述自定义接口类中的自定义方法;
调用单元,用于基于所述自定义视图控件中的成员变量调用所述语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换;
更新单元,用于依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。
本申请实施例还提供一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;
处理器,执行所述存储器中存储的指令以实现所述的基于人工智能的应用程序语言配置方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现所述的基于人工智能的应用程序语言配置方法。
本申请能够通过建立多语言资源包以获取语言资源数据,并基于自定义视图控件调用语言资源数据实现应用程序的国际化,无需重启应用程序即可完成所有视图页面的语言更新,从而提高应用程序国际化的效率。
附图说明
图1是本申请所涉及的基于人工智能的应用程序语言配置方法的较佳实施例的流程图。
图2是本申请所涉及的建立多语言资源包的较佳实施例的流程图。
图3是本申请所涉及的基于人工智能的应用程序语言配置装置的较佳实施例的功能模块图。
图4是本申请所涉及的基于人工智能的应用程序语言配置方法的较佳实施例的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本申请的目的、特征和优点,下面结合附图和具体实施例对本申请进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互结合。在下面的描述中阐述了很多具体细节以便于充分理解本申请,所述描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本申请实施例提供一种基于人工智能的应用程序语言配置方法,可应用于一个或者多个电子设备中,电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
电子设备可以是任何一种可与客户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(Internet Protocol Television,IPTV)、智能式穿戴式设备等。
电子设备还可以包括网络设备和/或客户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量主机或网络服务器构成的云。
电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
如图1所示,是本申请基于人工智能的应用程序语言配置方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略,所述基于人工智能的应用程序语言配置方法,包括以下步骤S10-S14。
S10,建立多语言资源包,所述多语言资源包包括不同语言资源数据的文件夹,所述语言资源数据用于配置应用程序的目标语言。
请参见图2,在一个可选的实施例中,所述建立多语言资源包包括以下步骤S101-S103:
S101,在所述应用程序的资源文件中创建包括不同语言资源数据的文件夹。
该可选的实施例中,可以在应用程序的res资源文件下创建不同语言的文件夹,并在各语言对应的文件夹下配置不同的string.xml文件作为语言资源文件,用以获取对应的语言资源数据,如英语环境下的文件夹命名为values-en、美国英文环境values-en-US、中文环境为values-zh、大陆地区中文环境values-zh-cn等。在Android Studio下新建Android Resource File时,可以直接选择对应的语言,具体添加方法为鼠标右键点击res->New->Android Resource File,然后输入文件名strings.xml,其中Android Studio包含用于构建Android应用所需的所有工具。
该可选的实施例中,XML是一种通用的“可扩展标记语言”,它是一种简单的数据存储语言,使用一系列简单的标记描述数据,具体良好的结构并且可以提供更强有力的数据存储和分析能力,文件一般以.xml为后缀。由于XML有着良好的数据结构,它既可以使用一个文件来支持多种语言,也可以使用一个文件对应于一种语言。
S102,基于所述不同语言资源数据对应的文件夹建立语言配置表,所述语言配置表包含所述应用程序需要配置的目标语言名称、目标语言获取地址及目标语言资源文件存储位置。
该可选的实施例中,将所述应用程序的res资源文件下创建的所有不同语言资源数据对应的文件夹作为所述多语言资源包,其中,在初始条件下,各语言对应的文件夹可以不存储具体的语言数据,而只分别包括一个语言配置表,所述语言配置表中包含应用程序需要配置的目标语言名称、目标语言获取地址及目标语言资源文件存储位置。
该可选的实施例中,目标语言可以是一种或者多种,目标语言获取地址为目标语言资源数据的获取路径,如目标语言数据url、目标语言数据存储路径,用于指导电子设备根据该路径从服务器的资源文案中心获取目标语言对应的语言资源数据,目标语言资源文件存储位置为应用程序语言配置时目标语言资源文件所放的根目录,以保证目标语言资源文件配置后能够被应用程序正确读取和应用。
该可选的实施例中,每个目标语言资源文件的目标语言资源数据包含key和value值。通常一个目标语言资源文件中一个key对应一个value值。例如:在英语“en”资源文件中key:string_apple_name对应一个value值为apple,在中文“CN”资源文件中key:string_apple_name对应一个value值为苹果。若一个key对应的value值缺失,那么相应的词语则无法进行显示,需要进行对应补充,若所有的资源文件均不存在value值缺失,则无需更改。
S103,解析所述语言配置表以获取所述语言资源数据。
该可选的实施例中,可以通过解析所述语言配置表获得应用程序需要配置的目标语言和目标语言获取地址,进而根据获取到的目标语言获取地址,从资源文案中心获得目标语言对应的语言资源数据。
该可选的实施例中,所述的资源文案中心可以位于服务器上,可以向各个应用程序提供国际化多语言配置所需的语言资源数据,并对语言资源数据进行统一管理,不需要不同端(如android,iOS)同时维护多份资源文件,大大降低了资源维护成本。
该可选的实施例中,应用于不同端(如android,iOS)的应用程序需要不同格式的语言资源文件,为此需要将获取到的语言资源数据转换为相应格式。具体的,可以从预设的配置清单中解析获得应用程序对应的语言资源文件格式,也可以根据应用程序适用的操作***获得应用程序对应的语言资源文件格式。例如:若检测出应用程序适用于iOS***,对应的语言资源文件格式可以为iOS***可读取的格式如“.strings”;若检测出应用程序适用于Android***,对应的语言资源文件格式可以为Android***可读取的格式如“.xml”。
该可选的实施例中,由于开发人员在APP开发过程中,可能会将部分语言资源文件放入APP中,若直接将语言资源文件放入可能会出错。为此,在基于获得的目标语言资源文件存储位置完成语言配置时,需要判断所述目标语言资源文件存储位置中是否存在与所述目标语言名称相同的原语言资源文件,若存在,则使用所述目标语言资源数据对应的文件覆盖所述原语言资源文件;若不存在,则将所述目标语言资源数据对应的文件存储至所述目标语言资源文件存储位置中。
示例性的,首先获取并解析应用程序的语言配置表。假设解析出需要配置的目标语言包括:cn、en、ru。那么根据语言配置表中的语言资源数据获取地址,从服务器的资源文案中心中自动读取目标语言:cn、en、ru对应的语言资源数据。接着,对读取到的目标语言:cn、en、ru对应的语言资源数据进行格式转换,获得目标语言资源文件(cn)、目标语言资源文件(en)、目标语言资源文件(ru)。然后,分别判断应用程序中的目标资源文件存储位置中是否存在与各个目标语言资源文件对应的目标语言相同的原语言资源文件;对于存在语种相同的原语言资源文件的,将获得的目标语言资源文件覆盖该原语言资源文件,对于不存在语种相同的原资源文件,将转换获得的目标语言资源文件存储到应用程序中配置清单指定的目标语言资源文件存储地址中,从而获取目标语言资源数据。
如此,通过在应用程序的资源文件中创建不同语言资源数据所对应的文件夹,可以在对所述应用程序进行语言配置时,快速准确地获取对应的语言资源,提高对所述应用程序进行语言配置的效率。
S11,自定义接口类,所述自定义接口类包括多个自定义方法,用于支持所述应用程序的多语言切换。
该可选的实施例中,视图组件可简称为“view”,自定义视图组件可以称为自定义view,为便于自定义view的管理,首先定义接口类BaseLanguageView,包括:
1.setTextById(int resId),用于使用代码动态设置String资源,为Android开发常用的设置资源的方式,通过使用R.string.key获取resId,其中,key是在string.xml中定义的。
2.updateLanguageText():此方法用于刷新语言资源。
该可选的实施例中,应用程序编程接口,简称API(Application ProgrammingInterface),就是软件***不同组成部分衔接的约定,其主要目的是提供应用程序与开发人员访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。
S12,自定义视图控件,继承所述应用程序的原生视图控件的属性,所述自定义视图控件用于通过添加成员变量实现所述自定义接口类中的自定义方法。
该可选的实施例中,所述应用程序中需要进行继承的原生视图控件包括TextView,Button,EditText。其中,TextView用于控制视图页面的文字大小、颜色、下划线等;Button用于控制视图页面的背景形状、点击事件等;EditText用于制作登录页面、监听事件等。
该可选的实施例中,setTextById方法的主要作用就是更新textId,当用户通过在页面调用setTextById时,参数传递的是String资源id,从而将resId赋值给textId,并调用***的setText方法来设置待显示的文本资源,其中,setText方法是Android***提供用于设置语言资源到View中显示的方法,支持直接设置文本,也支持设置resId。
该可选的实施例中,自定义视图控件的具体过程为:
自定义LanguageTextView,继承TextView,实现所述自定义的BaseLanguageView接口类,实现setTextById()方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageButton,继承Button,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageEditText,继承EditText,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId和hintId。
该可选的实施例中,由于EditText是输入框,和TextView文本框不同,EditText可以设置引导用户的文本,例如“请输入手机号”,这个时候就比TextView多一个文本,因此增加成员变量hintId。
该可选的实施例中,updateLanguageText()方法通过调用***的setText()方法,将textId作为参数,使***通过getContext().getResources().getText(textId)就可以获取到对应语言资源文件下的语言资源数据,用于显示在页面上,完成语言的切换;如果是自定义的LanguageEditText类则还需要调用***的setHint()方法并将hintId作为参数,使***通过getContext().getResources().getText(hintId)就可以获取到对应语言资源文件下的语言资源数据,用于显示在页面上,完成语言的切换。
该可选的实施例中,textId的作用是用于存储当前View设置的String资源id,切换语言时会使用此id获取对应的国际化语言;hintId的作用是用于存储当前LanguageEditText设置的String资源id,切换语言时则使用此id获取对应的国际化语言。
该可选的实施例中,根据String资源id对textId和hintId进行复制的方式分别为:
attrs.getAttributeValue("http://schemas.android.com/apk/res/android","text");
attrs.getAttributeValue("http://schemas.android.com/apk/res/android","hint")。
如此,通过所述自定义视图控件可以快速获取应用程序对应语言资源文件下的语言资源数据,并显示在视图页面中,完成所述应用程序的多语言配置,同时便于工作人员实施掌握所述应用程序的视图页面信息。
S13,基于所述自定义视图控件中的成员变量调用所述语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换。
该可选的实施例中,LanguageTextView功能是支持国际化的文本布局,LanguageButton功能是支持国际化的按钮布局,LanguageEditText功能是支持国际化的输入框布局,因此在需要进行国际化时,文本布局可引用LanguageTextView、按钮布局可引用LanguageButton,输入框布局可引用LanguageEditText,不需要国际化的布局仍使用原生视图控件即可。
该可选的实施例中,可以生成补充缺失的value值的提示信息并发送至资源文案中心,提示信息用于提示开发者到资源文案中心去补充该语言资源文件缺失的value值。其中,提示信息中可以包含缺失的value值对应的key和语言资源文件名称,以便开发者到对应文件的key下进行value值补充。
具体实施过程中,提示信息还可以注释到应用程序的资源文件中,以提醒开发者在本地对缺失的value值进行补充。进一步的,本申请实施例还可以将本地补充的value值发送至资源文案中心,以使资源文案中心将该value值补充到对应的语言资源数据中更新该语言资源数据。
该可选的实施例中,通常情况下一个应用程序中各个目标语言资源文件的key相同,且一个key只能存在一次,比如key:string_apple_name,在CN、EN、JP等文件夹中,只能用这一个名称,且每个文件夹中仅能出现一次。判断目标语言资源文件的key是否存在冗余,包括:判断各个目标语言资源文件中是否存在相同的key,及一个目标语言资源文件相对另一个目标语言资源文件是否存在多余的key。若判断出目标语言资源文件的key存在冗余,则将冗余的key和对应的value至从目标语言资源文件中删除。
如此,通过所述成员变量作为参数,可以基于所述自定义视图控件快速调用对应的语言资源数据,进一步提高对所述应用程序进行多语言配置的效率。
S14,依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。
在一个可选的实施例中,所述依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置包括以下步骤S141-S142:
S141,依据预设接口为所述应用程序的当前视图界面添加订阅模式以监听所述应用程序的当前视图界面的语言切换。
该可选的实施例中,可通过预设接口使用订阅模式,为每个Activity页面添加语言更新的监听,其中一个页面对应一个活动(Activity),从一个页面跳到另一个页面,就是从一个活动跳到另一个活动,所述订阅模式也叫观察者模式,这个模式可以定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
在一个可选的实施例中,所述通过预设接口使用订阅模式的具体过程为:
创建BaseActivity基类,所有的子页面Activity继承BaseActivity,在本申请中的作用就是为了实现订阅模式统一订阅和取消以及对语言更新的监听;
创建LanguageChangeListener接口类,方法定义为:onChangeListener(),该方法的作用是当语言发生变化,用于通知订阅者;
创建ActivityManager管理类,使用List(Android***提供用于存储数据的集合)集合存储实现了LanguageChangeListener接口的实体类,变量名使用listenerLists,包括:
addLanguageChangeListener(LanguageChangeListener listener),用于添加存储订阅者。
removeLanguageChangeListener(LanguageChangeListener listener),用于删除订阅者。
updateLanguageChangeListener(),用于通知订阅者更新语言,通过对listenerLists进行遍历,然后调用LanguageChangeListener实体类的onChangeListener方法完成对所有订阅者的通知。
该可选的实施例中,每运行一个Activity,就把Activity的实例加入ActivityManager,然后可以通过ActivityManager统一管理每个Activity,对Activity进行销毁或者其他操作,就相当于通过ActivityManager这个管理类通知到每个Activity了。
该可选的实施例中,每个Activity都继承实现BaseActivity,BaseActivity实现LanguageChangeListener接口类,并实现onChangeListener()方法。在BaseActivity类的onCreate()方法中调用ActivityManager实体类的addLanguageChangeListener()方法,进行语言更新的订阅。在BaseActivity类的onDestroy()方法中调用ActivityManager实体类的removeLanguageChangeListener()方法,取消语言更新的订阅。
S142,在所述应用程序的当前视图界面进行语言切换时,依据所述订阅模式更新所述应用程序的所有视图页面的语言以完成所述应用程序的语言配置。
该可选的实施例中,当切换语言时,***调用ActivityManager实体类的updateLanguageChangeListener()方法,通知所有的订阅页面,此时就会回调到BaseActivity的onChangeListener()方法,在onChangeListener里处理刷新页面语言的逻辑,从而实现APP所有页面的语言刷新,完成对所述应用程序的语言配置。
该可选的实施例中,onChangeListener()方法理刷新应用程序语言的逻辑为使用***API通过页面的父View得到所有的子View,再通过遍历判断所有的子View是否支持BaseLanguageView接口类的实现,如果是,则调用updateLanguageText()方法更新视图界面显示的语言资源,其中遍历过程可使用for循环,通过viewinstanceofBaseLanguageView判断是否支持国际化的View,如果返回true,则调用自定义View实现的updateLanguageText()方法。
如此,通过设置订阅模式可以在对应用程序的视图页面进行更新时,及时获取视图页面的变化状态,由此实现所有视图页面的对应更新,提高所述应用程序进行多语言配置的效率。
请参见图3,图3是本申请基于人工智能的应用程序语言配置装置的较佳实施例的功能模块图。基于人工智能的应用程序语言配置装置11包括建立单元110、切换单元111、实现单元112、调用单元113、更新单元114。本申请所称的模块/单元是指一种能够被处理器13所执行,并且能够完成固定功能的一系列计算机可读指令段,其存储在存储器12中。在本实施例中,关于各模块/单元的功能将在后续的实施例中详述。
在一个可选的实施例中,获取单元110用于建立多语言资源包,所述多语言资源包包括不同语言资源数据的文件夹,所述语言资源数据用于配置应用程序的目标语言。
在一个可选的实施例中,所述建立多语言资源包包括:
在所述应用程序的资源文件中创建包括不同语言资源数据的文件夹;
基于所述不同语言资源数据对应的文件夹建立语言配置表,所述语言配置表包含所述应用程序需要配置的目标语言名称、目标语言获取地址及目标语言资源文件存储位置;
解析所述语言配置表以获取所述语言资源数据。
该可选的实施例中,可以在应用程序的res资源文件下创建不同语言的文件夹,并在各语言对应的文件夹下配置不同的string.xml文件作为语言资源文件,用以获取对应的语言资源数据,如英语环境下的文件夹命名为values-en、美国英文环境values-en-US、中文环境为values-zh、大陆地区中文环境values-zh-cn等。在Android Studio下新建Android Resource File时,可以直接选择对应的语言,具体添加方法为鼠标右键点击res->New->Android Resource File,然后输入文件名strings.xml,其中Android Studio包含用于构建Android应用所需的所有工具。
该可选的实施例中,XML是一种通用的“可扩展标记语言”,它是一种简单的数据存储语言,使用一系列简单的标记描述数据,具体良好的结构并且可以提供更强有力的数据存储和分析能力,文件一般以.xml为后缀。由于XML有着良好的数据结构,它既可以使用一个文件来支持多种语言,也可以使用一个文件对应于一种语言。
该可选的实施例中,将所述应用程序的res资源文件下创建的所有不同语言资源数据对应的文件夹作为所述多语言资源包,其中,在初始条件下,各语言对应的文件夹可以不存储具体的语言数据,而只分别包括一个语言配置表,所述语言配置表中包含应用程序需要配置的目标语言名称、目标语言获取地址及目标语言资源文件存储位置。
该可选的实施例中,目标语言可以是一种或者多种,目标语言获取地址为目标语言资源数据的获取路径,如目标语言数据url、目标语言数据存储路径,用于指导电子设备根据该路径从服务器的资源文案中心获取目标语言对应的语言资源数据,目标语言资源文件存储位置为应用程序语言配置时目标语言资源文件所放的根目录,以保证目标语言资源文件配置后能够被应用程序正确读取和应用。
该可选的实施例中,每个目标语言资源文件的目标语言资源数据包含key和value值。通常一个目标语言资源文件中一个key对应一个value值。例如:在英语“en”资源文件中key:string_apple_name对应一个value值为apple,在中文“CN”资源文件中key:string_apple_name对应一个value值为苹果。若一个key对应的value值缺失,那么相应的词语则无法进行显示,需要进行对应补充,若所有的资源文件均不存在value值缺失,则无需更改。
该可选的实施例中,可以通过解析所述语言配置表获得应用程序需要配置的目标语言和目标语言获取地址,进而根据获取到的目标语言获取地址,从资源文案中心获得目标语言对应的语言资源数据。
该可选的实施例中,所述的资源文案中心可以位于服务器上,可以向各个应用程序提供国际化多语言配置所需的语言资源数据,并对语言资源数据进行统一管理,不需要不同端(如android,iOS)同时维护多份资源文件,大大降低了资源维护成本。
该可选的实施例中,应用于不同端(如android,iOS)的应用程序需要不同格式的语言资源文件,为此需要将获取到的语言资源数据转换为相应格式。具体的,可以从预设的配置清单中解析获得应用程序对应的语言资源文件格式,也可以根据应用程序适用的操作***获得应用程序对应的语言资源文件格式。例如:若检测出应用程序适用于iOS***,对应的语言资源文件格式可以为iOS***可读取的格式如“.strings”;若检测出应用程序适用于Android***,对应的语言资源文件格式可以为Android***可读取的格式如“.xml”。
该可选的实施例中,由于开发人员在APP开发过程中,可能会将部分语言资源文件放入APP中,若直接将语言资源文件放入可能会出错。为此,在基于获得的目标语言资源文件存储位置完成语言配置时,需要判断所述目标语言资源文件存储位置中是否存在与所述目标语言名称相同的原语言资源文件,若存在,则使用所述目标语言资源数据对应的文件覆盖所述原语言资源文件;若不存在,则将所述目标语言资源数据对应的文件存储至所述目标语言资源文件存储位置中。
示例性的,首先获取并解析应用程序的语言配置表。假设解析出需要配置的目标语言包括:cn、en、ru。那么根据语言配置表中的语言资源数据获取地址,从服务器的资源文案中心中自动读取目标语言:cn、en、ru对应的语言资源数据。接着,对读取到的目标语言:cn、en、ru对应的语言资源数据进行格式转换,获得目标语言资源文件(cn)、目标语言资源文件(en)、目标语言资源文件(ru)。然后,分别判断应用程序中的目标资源文件存储位置中是否存在与各个目标语言资源文件对应的目标语言相同的原语言资源文件;对于存在语种相同的原语言资源文件的,将获得的目标语言资源文件覆盖该原语言资源文件,对于不存在语种相同的原资源文件,将转换获得的目标语言资源文件存储到应用程序中配置清单指定的目标语言资源文件存储地址中,从而获取目标语言资源数据。
在一个可选的实施例中,切换单元111自定义接口类,所述自定义接口类包括多个自定义方法,用于支持所述应用程序的多语言切换。
该可选的实施例中,视图组件可简称为“view”,自定义视图组件可以称为自定义view,为便于自定义view的管理,首先定义接口类BaseLanguageView,包括:
1.setTextById(int resId),用于使用代码动态设置String资源,为Android开发常用的设置资源的方式,通过使用R.string.key获取resId,其中,key是在string.xml中定义的。
2.updateLanguageText():此方法用于刷新语言资源。
该可选的实施例中,应用程序编程接口,简称API(Application ProgrammingInterface),就是软件***不同组成部分衔接的约定,其主要目的是提供应用程序与开发人员访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。
在一个可选的实施例中,实现单元112用于自定义视图控件,继承所述应用程序的原生视图控件的属性,所述自定义视图控件用于通过添加成员变量实现所述自定义接口类中的自定义方法。
该可选的实施例中,所述应用程序中需要进行继承的原生视图控件包括TextView,Button,EditText。其中,TextView用于控制视图页面的文字大小、颜色、下划线等;Button用于控制视图页面的背景形状、点击事件等;EditText用于制作登录页面、监听事件等。
该可选的实施例中,setTextById方法的主要作用就是更新textId,当用户通过在页面调用setTextById时,参数传递的是String资源id,从而将resId赋值给textId,并调用***的setText方法来设置待显示的文本资源,其中,setText方法是Android***提供用于设置语言资源到View中显示的方法,支持直接设置文本,也支持设置resId。
该可选的实施例中,自定义视图控件的具体过程为:
自定义LanguageTextView,继承TextView,实现所述自定义的BaseLanguageView接口类,实现setTextById()方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageButton,继承Button,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageEditText,继承EditText,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId和hintId。
该可选的实施例中,由于EditText是输入框,和TextView文本框不同,EditText可以设置引导用户的文本,例如“请输入手机号”,这个时候就比TextView多一个文本,因此增加成员变量hintId。
该可选的实施例中,updateLanguageText()方法通过调用***的setText()方法,将textId作为参数,使***通过getContext().getResources().getText(textId)就可以获取到对应语言资源文件下的语言资源数据,用于显示在页面上,完成语言的切换;如果是自定义的LanguageEditText类则还需要调用***的setHint()方法并将hintId作为参数,使***通过getContext().getResources().getText(hintId)就可以获取到对应语言资源文件下的语言资源数据,用于显示在页面上,完成语言的切换。
该可选的实施例中,textId的作用是用于存储当前View设置的String资源id,切换语言时会使用此id获取对应的国际化语言;hintId的作用是用于存储当前LanguageEditText设置的String资源id,切换语言时则使用此id获取对应的国际化语言。
该可选的实施例中,根据String资源id对textId和hintId进行复制的方式分别为:
attrs.getAttributeValue("http://schemas.android.com/apk/res/android","text");
attrs.getAttributeValue("http://schemas.android.com/apk/res/android","hint")。
在一个可选的实施例中,调用单元113用于基于所述自定义视图控件中的成员变量调用所述语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换。
该可选的实施例中,LanguageTextView功能是支持国际化的文本布局,LanguageButton功能是支持国际化的按钮布局,LanguageEditText功能是支持国际化的输入框布局,因此在需要进行国际化时,文本布局可引用LanguageTextView、按钮布局可引用LanguageButton,输入框布局可引用LanguageEditText,不需要国际化的布局仍使用原生视图控件即可。
该可选的实施例中,可以生成补充缺失的value值的提示信息并发送至资源文案中心,提示信息用于提示开发者到资源文案中心去补充该语言资源文件缺失的value值。其中,提示信息中可以包含缺失的value值对应的key和语言资源文件名称,以便开发者到对应文件的key下进行value值补充。
具体实施过程中,提示信息还可以注释到应用程序的资源文件中,以提醒开发者在本地对缺失的value值进行补充。进一步的,本申请实施例还可以将本地补充的value值发送至资源文案中心,以使资源文案中心将该value值补充到对应的语言资源数据中更新该语言资源数据。
该可选的实施例中,通常情况下一个应用程序中各个目标语言资源文件的key相同,且一个key只能存在一次,比如key:string_apple_name,在CN、EN、JP等文件夹中,只能用这一个名称,且每个文件夹中仅能出现一次。判断目标语言资源文件的key是否存在冗余,包括:判断各个目标语言资源文件中是否存在相同的key,及一个目标语言资源文件相对另一个目标语言资源文件是否存在多余的key。若判断出目标语言资源文件的key存在冗余,则将冗余的key和对应的value至从目标语言资源文件中删除。
在一个可选的实施例中,更新单元114用于依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。
在一个可选的实施例中,所述依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置包括:
依据预设接口为所述应用程序的当前视图界面添加订阅模式以监听所述应用程序的当前视图界面的语言切换;
在所述应用程序的当前视图界面进行语言切换时,依据所述订阅模式更新所述应用程序的所有视图页面的语言以完成所述应用程序的语言配置。
该可选的实施例中,可通过预设接口使用订阅模式,为每个Activity页面添加语言更新的监听,其中一个页面对应一个活动(Activity),从一个页面跳到另一个页面,就是从一个活动跳到另一个活动,所述订阅模式也叫观察者模式,这个模式可以定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
在一个可选的实施例中,所述通过预设接口使用订阅模式的具体过程为:
创建BaseActivity基类,所有的子页面Activity继承BaseActivity,在本申请中的作用就是为了实现订阅模式统一订阅和取消以及对语言更新的监听;
创建LanguageChangeListener接口类,方法定义为:onChangeListener(),该方法的作用是当语言发生变化,用于通知订阅者;
创建ActivityManager管理类,使用List(Android***提供用于存储数据的集合)集合存储实现了LanguageChangeListener接口的实体类,变量名使用listenerLists,包括:
addLanguageChangeListener(LanguageChangeListener listener),用于添加存储订阅者。
removeLanguageChangeListener(LanguageChangeListener listener),用于删除订阅者。
updateLanguageChangeListener(),用于通知订阅者更新语言,通过对listenerLists进行遍历,然后调用LanguageChangeListener实体类的onChangeListener方法完成对所有订阅者的通知。
该可选的实施例中,每运行一个Activity,就把Activity的实例加入ActivityManager,然后可以通过ActivityManager统一管理每个Activity,对Activity进行销毁或者其他操作,就相当于通过ActivityManager这个管理类通知到每个Activity了。
该可选的实施例中,每个Activity都继承实现BaseActivity,BaseActivity实现LanguageChangeListener接口类,并实现onChangeListener()方法。在BaseActivity类的onCreate()方法中调用ActivityManager实体类的addLanguageChangeListener()方法,进行语言更新的订阅。在BaseActivity类的onDestroy()方法中调用ActivityManager实体类的removeLanguageChangeListener()方法,取消语言更新的订阅。
该可选的实施例中,当切换语言时,***调用ActivityManager实体类的updateLanguageChangeListener()方法,通知所有的订阅页面,此时就会回调到BaseActivity的onChangeListener()方法,在onChangeListener里处理刷新页面语言的逻辑,从而实现APP所有页面的语言刷新,完成对所述应用程序的语言配置。
该可选的实施例中,onChangeListener()方法理刷新应用程序语言的逻辑为使用***API通过页面的父View得到所有的子View,再通过遍历判断所有的子View是否支持BaseLanguageView接口类的实现,如果是,则调用updateLanguageText()方法更新视图界面显示的语言资源,其中遍历过程可使用for循环,通过viewinstanceofBaseLanguageView判断是否支持国际化的View,如果返回true,则调用自定义View实现的updateLanguageText()方法。
由以上技术方案可以看出,本申请能够通过建立多语言资源包以获取语言资源数据,并基于自定义视图控件调用语言资源数据实现应用程序的国际化,无需重启应用程序即可完成所有视图页面的语言更新,从而提高应用程序国际化的效率。
请参见图4,是本申请实施例提供的一种电子设备的结构示意图。电子设备1包括存储器12和处理器13。存储器12用于存储计算机可读指令,处理器13用执行所述储器中存储的计算机可读指令以实现上述任一实施例所述的基于人工智能的应用程序语言配置方法。
在一个可选的实施例中,电子设备1还包括总线、存储在所述存储器12中并可在所述处理器13上运行的计算机程序,例如基于人工智能的应用程序语言配置程序。
图4仅示出了具有存储器12和处理器13的电子设备1,本领域技术人员可以理解的是,图4示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
结合图1,电子设备1中的所述存储器12存储多个计算机可读指令以实现一种基于人工智能的应用程序语言配置方法,所述处理器13可执行所述多个指令从而实现以下方法:
建立多语言资源包,所述多语言资源包包括不同语言资源数据的文件夹,所述语言资源数据用于配置应用程序的目标语言;
自定义接口类,所述自定义接口类包括多个自定义方法,用于支持所述应用程序的多语言切换;
自定义视图控件,继承所述应用程序的原生视图控件的属性,所述自定义视图控件用于通过添加成员变量实现所述自定义接口类中的自定义方法;
基于所述自定义视图控件中的成员变量调用所述语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换;
依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。
具体地,所述处理器13对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
本领域技术人员可以理解,所述示意图仅仅是电子设备1的示例,并不构成对电子设备1的限定,电子设备1可以是总线型结构,也可以是星形结构,电子设备1还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置,例如电子设备1还可以包括输入输出设备、网络接入设备等。
需要说明的是,电子设备1仅为举例,其他现有的或今后可能出现的电子产品如可适应于本申请,也应包含在本申请的保护范围以内,并以引用方式包含于此。
其中,存储器12至少包括一种类型的可读存储介质,所述可读存储介质可以是非易失性的,也可以是易失性的。所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器12在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。存储器12在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。存储器12不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于人工智能的应用程序语言配置程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器13在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器13是电子设备1的控制核心(Control Unit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在所述存储器12内的程序或者模块(例如执行基于人工智能的应用程序语言配置程序等),以及调用存储在所述存储器12内的数据,以执行电子设备1的各种功能和处理数据。
所述处理器13执行所述电子设备1的操作***以及安装的各类应用程序。所述处理器13执行所述应用程序以实现上述各个基于人工智能的应用程序语言配置方法实施例中的步骤,例如图1至图2所示的步骤。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器12中,并由所述处理器13执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机程序在电子设备1中的执行过程。例如,所述计算机程序可以被分割成建立单元110、切换单元111、实现单元112、调用单元113、更新单元114。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、计算机设备,或者网络设备等)或处理器(processor)执行本申请各个实施例所述的基于人工智能的应用程序语言配置方法的部分。
电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指示相关的硬件设备来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存储器及其他存储器等。
进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,在图4中仅用一根箭头表示,但并不表示仅有一根总线或一种类型的总线。所述总线被设置为实现所述存储器12以及至少一个处理器13等之间的连接通信。
本申请实施例还提供一种计算机可读存储介质(图未示),计算机可读存储介质中存储有计算机可读指令,计算机可读指令被电子设备中的处理器执行以实现上述任一实施例所述的基于人工智能的应用程序语言配置方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。说明书陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。
Claims (10)
1.一种基于人工智能的应用程序语言配置方法,其特征在于,所述方法包括:
建立多语言资源包,所述多语言资源包包括不同语言资源数据的文件夹,所述语言资源数据用于配置应用程序的目标语言;
自定义接口类,所述自定义接口类包括多个自定义方法,用于支持所述应用程序的多语言切换;
自定义视图控件,继承所述应用程序的原生视图控件的属性,所述自定义视图控件用于通过添加成员变量实现所述自定义接口类中的自定义方法;
基于所述自定义视图控件中的成员变量调用所述语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换;
依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。
2.如权利要求1所述的基于人工智能的应用程序语言配置方法,其特征在于,所述建立多语言资源包包括:
在所述应用程序的资源文件中创建包括不同语言资源数据的文件夹;
基于所述不同语言资源数据对应的文件夹建立语言配置表,所述语言配置表包含所述应用程序需要配置的目标语言名称、目标语言获取地址及目标语言资源文件存储位置;
解析所述语言配置表以获取所述语言资源数据。
3.如权利要求2所述的基于人工智能的应用程序语言配置方法,其特征在于,在所述解析所述语言配置表以获取所述语言资源数据之后,所述方法还包括:
判断所述目标语言资源文件存储位置中是否存在与所述目标语言名称相同的原语言资源文件,若存在,则使用所述目标语言资源数据对应的文件覆盖所述原语言资源文件;
若不存在,则将所述目标语言资源数据对应的文件存储至所述目标语言资源文件存储位置中。
4.如权利要求1所述的基于人工智能的应用程序语言配置方法,其特征在于,所述自定义接口类包括:
自定义接口类BaseLanguageView,所述BaseLanguageView包括方法setTextById()和updateLanguageText(),所述setTextById()用于获取语言资源ID,所述updateLanguageText()用于刷新语言资源。
5.如权利要求1所述的基于人工智能的应用程序语言配置方法,其特征在于,所述自定义视图控件包括:
自定义LanguageTextView,继承TextView,实现所述自定义的BaseLanguageView接口类,实现setTextById()方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageButton,继承Button,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId;
自定义LanguageEditText,继承EditText,实现所述自定义的BaseLanguageView接口类,重写setTextById方法和updateLanguageText()方法,添加成员变量textId和hintId。
6.如权利要求5所述的基于人工智能的应用程序语言配置方法,其特征在于,所述成员变量textId用于存储当前视图设置的语言资源ID,切换语言时会使用此ID获取对应的国际化语言;所述成员变量hintId用于存储当前LanguageEditText设置的语言资源ID,切换语言时则使用此ID获取对应的国际化语言。
7.如权利要求1所述的基于人工智能的应用程序语言配置方法,其特征在于,所述依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置,包括:
依据预设接口为所述应用程序的当前视图界面添加订阅模式以监听所述应用程序的当前视图界面的语言切换;
在所述应用程序的当前视图界面进行语言切换时,依据所述订阅模式更新所述应用程序的所有视图页面的语言以完成所述应用程序的语言配置。
8.一种基于人工智能的应用程序语言配置装置,其特征在于,所述装置包括:
建立单元,用于建立多语言资源包,所述多语言资源包包括不同语言资源数据的文件夹,所述语言资源数据用于配置应用程序的目标语言;
切换单元,用于自定义接口类,所述自定义接口类包括多个自定义方法,用于支持所述应用程序的多语言切换;
实现单元,用于自定义视图控件,继承所述应用程序的原生视图控件的属性,所述自定义视图控件用于通过添加成员变量实现所述自定义接口类中的自定义方法;
调用单元,用于基于所述自定义视图控件中的成员变量调用所述语言资源数据的ID以完成对所述应用程序的当前视图界面的语言切换;
更新单元,用于依据预设接口对所述应用程序的当前视图界面进行监听,并在当前视图界面进行语言切换时对所有的视图页面进行更新以完成所述应用程序的语言配置。
9.一种电子设备,其特征在于,所述电子设备包括:
存储器,存储有计算机可读指令;及
处理器,执行所述存储器中存储的计算机可读指令以实现如权利要求1至7中任意一项所述的基于人工智能的应用程序语言配置方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的基于人工智能的应用程序语言配置方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210446837.3A CN114896005A (zh) | 2022-04-26 | 2022-04-26 | 基于人工智能的应用程序语言配置方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210446837.3A CN114896005A (zh) | 2022-04-26 | 2022-04-26 | 基于人工智能的应用程序语言配置方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114896005A true CN114896005A (zh) | 2022-08-12 |
Family
ID=82719180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210446837.3A Pending CN114896005A (zh) | 2022-04-26 | 2022-04-26 | 基于人工智能的应用程序语言配置方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114896005A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108682A1 (en) * | 2003-02-26 | 2005-05-19 | Bea Systems, Inc. | Systems for type-independent source code editing |
JP2011123624A (ja) * | 2009-12-09 | 2011-06-23 | Sony Corp | 情報処理装置および方法、並びにプログラム |
CN104951364A (zh) * | 2014-03-31 | 2015-09-30 | Tcl集团股份有限公司 | 一种基于Android平台的语言切换方法及*** |
CN109508211A (zh) * | 2017-09-13 | 2019-03-22 | 阿里巴巴集团控股有限公司 | 一种多语言配置方法、装置、***及电子设备 |
CN109634684A (zh) * | 2018-12-07 | 2019-04-16 | 万兴科技股份有限公司 | 应用程序加载语言的方法、装置、计算机设备及存储介质 |
CN114168246A (zh) * | 2021-12-01 | 2022-03-11 | 北京联创新天科技有限公司 | 前后端分离架构下的多语言切换方法、组件、介质及设备 |
CN114356480A (zh) * | 2021-12-28 | 2022-04-15 | 数数信息科技(上海)有限公司 | 一种基于figma的前端国际化多语言转换方法及*** |
-
2022
- 2022-04-26 CN CN202210446837.3A patent/CN114896005A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108682A1 (en) * | 2003-02-26 | 2005-05-19 | Bea Systems, Inc. | Systems for type-independent source code editing |
JP2011123624A (ja) * | 2009-12-09 | 2011-06-23 | Sony Corp | 情報処理装置および方法、並びにプログラム |
CN104951364A (zh) * | 2014-03-31 | 2015-09-30 | Tcl集团股份有限公司 | 一种基于Android平台的语言切换方法及*** |
CN109508211A (zh) * | 2017-09-13 | 2019-03-22 | 阿里巴巴集团控股有限公司 | 一种多语言配置方法、装置、***及电子设备 |
CN109634684A (zh) * | 2018-12-07 | 2019-04-16 | 万兴科技股份有限公司 | 应用程序加载语言的方法、装置、计算机设备及存储介质 |
CN114168246A (zh) * | 2021-12-01 | 2022-03-11 | 北京联创新天科技有限公司 | 前后端分离架构下的多语言切换方法、组件、介质及设备 |
CN114356480A (zh) * | 2021-12-28 | 2022-04-15 | 数数信息科技(上海)有限公司 | 一种基于figma的前端国际化多语言转换方法及*** |
Non-Patent Citations (2)
Title |
---|
即将失业的人: "Android第四天(4)TextView Button EditText", pages 1 - 26, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/36772525> * |
帅次: "Android基础到进阶UI TextView介绍+实例", pages 1 - 13, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/379990604?utm_id=0> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190236118A1 (en) | Filtered stylesheets | |
US20190310844A1 (en) | Multi-platform pattern-based user interfaces | |
US11966795B2 (en) | Method and device for loading minus-one screen, terminal, and computer readable storage medium | |
US11977879B2 (en) | Methods and systems for remote configuration of software applications | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
CN113778391A (zh) | 原生应用程序的页面处理方法、装置及设备 | |
CN109086342B (zh) | 批量化生产和运维网站模板的方法、介质和终端 | |
CN111414350A (zh) | 一种服务生成方法及装置 | |
CN113031946A (zh) | 一种渲染页面组件的方法和装置 | |
JP2022542203A (ja) | ミニプログラムのバッチ処理方法、装置、電子機器及び可読記憶媒体 | |
US11604662B2 (en) | System and method for accelerating modernization of user interfaces in a computing environment | |
CN114048415A (zh) | 表单生成方法及装置、电子设备和计算机可读存储介质 | |
CN110599112B (zh) | 一种网络页面开发、维护方法和装置 | |
CN110941443A (zh) | 修改sdk中文件名的方法、装置及电子设备 | |
CN114896005A (zh) | 基于人工智能的应用程序语言配置方法及相关设备 | |
WO2022099913A1 (zh) | 界面配置方法、装置、设备及介质 | |
CN113626016A (zh) | 一种基于Vue+Element UI+Koa2的前后端分离的可重用组件 | |
CN113591000A (zh) | 一种浏览器引擎的切换方法和装置及设备 | |
CN111880775A (zh) | 多模块分层架构实现方法、装置、电子设备、存储介质 | |
CN112068895A (zh) | 代码配置方法、装置、视频播放设备及存储介质 | |
CN112596705B (zh) | 项目版本控制方法、装置、电子设备及存储介质 | |
CN112306324B (zh) | 信息处理方法、装置、设备和介质 | |
US20230247111A1 (en) | Runtime module conversion | |
CN116719551A (zh) | 一种热部署方法、云服务***、电子设备及存储介质 | |
CN109614160B (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 |