CN109976840B - 一种基于前后台分离平台下实现多语言自动适配的方法及系统 - Google Patents
一种基于前后台分离平台下实现多语言自动适配的方法及系统 Download PDFInfo
- Publication number
- CN109976840B CN109976840B CN201711450644.0A CN201711450644A CN109976840B CN 109976840 B CN109976840 B CN 109976840B CN 201711450644 A CN201711450644 A CN 201711450644A CN 109976840 B CN109976840 B CN 109976840B
- Authority
- CN
- China
- Prior art keywords
- language
- file
- character string
- attribute
- name
- 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
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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种基于前后台分离平台下实现多语言自动适配的方法及系统,所述方法包括后台部件获取资源配置文件,并从所述资源配置文件提取特定路径下具有预定后缀标识的多个属性文件,将所提取的多个属性文件转换成对应的属性对象;后台部件根据属性对象建立映射对象;后台部件将每个映射对象转换为预定格式的字符串并保存在对象文件中;前台部件读取多个对象文件,并对每个对象文件的文件名称添加语言字符串;前台部件检测运行项目的语言类型,根据语言类型将对象文件的文件名称中语言字符串替换为与所述语言类型相对应的语言的字符串;使用资源编码字符串根据对象文件获取对应的语言内容,并且将当前语言内容转换为获取的语言内容。
Description
技术领域
本发明涉及信息处理领域,更具体地,涉及一种基于前后台分离平台下实现多语言自动适配的方法及系统。
背景技术
随着经济全球化的发展,全球各地的生活差异越来越小,当一项技术或是软件在一个地区盛行后,会以很快的速度蔓延到全球;这也给企业提供了机遇和挑战,越来越多的企业开始重视海外业务的发展;而相较于将一种运营成熟的软件从一个地区转移到另一个地区时重新配置语言文字外,更好的办法是从开发开始就将支持多种语言作为开发软件的必要需求;目前的目前的多语言应用主要还是在传统的前后台耦合开发方式时应用,这使得多语言应用环境过窄,如果前后台是分离的平台的情况下,则没有办法满足多语言自动适配的需求。
发明内容
为了解决背景技术存在的现有技术没有办法班组前后台是分离的平台的情况下,进行多语言的自动适配的问题,本发明提供了一种基于前后台分离平台下实现多语言自动适配的方法及系统;所述方法及系统通过配置多语言资源文件,后台将资源文件中的内容转换成json字符串并赋给window变量,再将其放入JS文件,在前台页面中引入生成的JS文件,使用window变量可以获取对应的多语言内容。后台的多语言资源文件配置成xml格式,通过提供的公共方法获取对应的多语言内容;所述一种基于前后台分离平台下实现多语言自动适配的方法包括:
响应于检测到项目的运行,后台部件获取资源配置文件,并从所述资源配置文件提取特定路径下具有预定后缀标识的多个属性文件,将所提取的多个属性文件中的每个转换成对应的属性对象;
后台部件根据属性对象建立映射对象,所述映射对象包括多个映射对,每个映射对包括由经过转换得到的多个属性对象中每个属性对象的属性名构成的关键字和由属性值构成的映射值;
后台部件将每个映射对象转换为预定格式的字符串并保存在对象文件中;
前台部件读取多个对象文件,并对每个对象文件的文件名称添加语言字符串;
前台部件检测运行项目的语言类型,根据语言类型将对象文件的文件名称中语言字符串替换为与所述语言类型相对应的语言的字符串;
使用资源编码字符串根据对象文件获取对应的语言内容,并且将所述运行项目的当前语言内容转换为所获取的语言内容;
进一步的,所述后台读取的资源配置文件为资源配置文件中jar包及项目classes下的文件;所述特定路径为路径i18n;所述对象文件为JS文件;所述预定格式的字符串为Json字符串;所述预定后缀标识的属性文件的预定后缀标识为properties;
进一步的,使用window变量描述后台配置的对象文件内容,所述对象文件的文件路径与所述特定路径相同;使用资源配置文件名称中特定路径名称以及特定路径名称前部分构成的字符串作为window中间变量名;所述对象文件的文件内容为将字符串“window.”、window中间变量名、字符“=”以及Json字符串顺序串联而成;所述资源配置文件名称包含特定路径名称对应的字符;
进一步的,所述将对象文件的文件名称中语言字符串替换为具体语言对应的字符串是通过装饰器类在修改名称后的对象文件中查找所有script和link标签类型的元素,将其对应的src和href属性值中的语言字符串替换为具体语言;所述语言字符串为“{{language}}”;
进一步的,针对前后台部件公共的多语言内容使用资源编码字符串根据对象文件获取对应的语言内容;针对模块的多语言内容使用模块名称、字符“_”以及资源编码字符串一次串联而成的字符串根据对象文件获取对应的语言内容;所述资源编码字符串为il8n[‘资源编码’];
进一步的,所述获取前台语言类型的方法包括:判断是否支持多语言;当支持多语言时,从cookie中获取当前语言;如获取当前语言失败则获取浏览器首语言;如果获取浏览器首语言失败则获取操作系统语言;确认获取语言的资料包是否存在,如存在则返回该语言完成获取,如不存在则返回默认语言完成获取;当判断不支持多语言时返回默认语言完成获取;
进一步的,前台控件通过控件解析JS文件使控件生成对应语言的具体页面内容;解析时判断控件属性值是否包含特殊路径字符串,如包含则对该属性值进行eval处理,获取其对应的多语言属性;
进一步的,在所述项目的根目录下配置xml格式的多语言配置文件,根据不同的语言在根目录下建立不同的语言文件夹以存储对应的xml格式配置文件;如仅支持一种语言则直接在根目录下建立xml格式配置文件;使用dom4j对所有xml格式配置文件的每一个进行解析;
进一步的,后台插件使用公共类方法获取多语言配置文件;所述公共类方法包括reload()方法、get(code)方法以及get(String code,Object...params)方法;
所述一种基于前后台分离平台下实现多语言自动适配的系统包括:
后台部件,所述后台部件用于获取资源配置文件并从所述资源配置文件提取特定路径下具有预定后缀标识的多个属性文件,将所提取的多个属性文件中的每个转换成对应的属性对象;后台部件根据属性对象建立映射对象,并将每个映射对象转换为预定格式的字符串传输至对象文件组;
对象文件组,所述对象文件组包括多个对象文件,所述多个对象文件中的每一个用于保存后台部件传输的对应每个映射对象的预定格式的字符串;对象文件供前台部件进行调用和更新;
前台部件,所述前台部件用于调取对象文件组中的多个对象文件,并对每个对象文件的文件名称添加语言字符串;所述前台部件用于检测运行项目的语言类型,根据语言类型将对象文件的文件名称中语言字符串替换为与所述语言类型相对应的语言的字符串;所述前台部件使用资源编码字符串根据对象文件获取对应的语言内容,并且将所述运行项目的当前语言内容转换为所获取的语言内容;
进一步的,所述后台部件中的特定路径为路径i18n;对象文件为JS文件;预定格式的字符串为Json字符串;预定后缀标识的属性文件的预定后缀标识为properties;
进一步的,所述对象文件组中的每个对象文件使用window变量描述,所述对象文件的文件路径与所述特定路径相同;使用资源配置文件名称中特定路径名称以及特定路径名称前部分构成的字符串作为window中间变量名;所述对象文件的文件内容为将字符串“window.”、window中间变量名、字符“=”以及Json字符串顺序串联而成;所述资源配置文件名称包含特定路径名称对应的字符;
进一步的,所述前台部件包括装饰器类,所述装饰器类用于在修改名称后的对象文件中查找所有script和link标签类型的元素,将其对应的src和href属性值中的语言字符串替换为具体语言;所述语言字符串为“{{language}}”;
进一步的,所述前台部件针对前后台部件公共的多语言内容使用资源编码字符串根据对象文件获取对应的语言内容;前台部件针对模块的多语言内容使用模块名称、字符“_”以及资源编码字符串一次串联而成的字符串根据对象文件获取对应的语言内容;所述资源编码字符串为il8n[‘资源编码’];
进一步的,所述前台部件包括前台控件,所述前台控件通过控件解析JS文件使控件生成对应语言的具体页面内容;解析时判断控件属性值是否包含特殊路径字符串,如包含则对该属性值进行eval处理,获取其对应的多语言属性;
进一步的,所述后台部件包括后台插件,所述后台插件使用公共类方法获取多语言配置文件;所述公共类方法包括reload()方法、get(code)方法以及get(String code,Object...params)方法。
本发明的有益效果为:本发明的技术方案,给出了一种基于前后台分离平台下实现多语言自动适配的方法及系统;所述方法及系统实现了在前后台分离平台下进行多语言的自动适配;解决了基于前后台分离平台项目的多语言问题,解决了页面控件的多语言问题,前端页面中JS、CSS和图片等所有页面内容的多语言问题,还解决了后台插件的多语言问题,使前后台分离平台可以很好的支持多语言国际化类型项目的开发。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为本发明具体实施方式的一种基于前后台分离平台下实现多语言自动适配的方法的流程图;
图2为本发明具体实施方式的一种基于前后台分离平台下实现多语言自动适配的系统的结构图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为本发明具体实施方式的一种基于前后台分离平台下实现多语言自动适配的方法的流程图;如图1所示,所述方法100通过配置多语言资源文件,后台将资源文件中的内容转换成json字符串并赋给window变量,再将其放入JS文件,在前台页面中引入生成的JS文件,使用window变量可以获取对应的多语言内容。后台的多语言资源文件配置成xml格式,通过提供的公共方法获取对应的多语言内容;所述一种基于前后台分离平台下实现多语言自动适配的方法包括:
步骤101,响应于检测到项目的运行,后台部件获取资源配置文件,并从所述资源配置文件提取特定路径下具有预定后缀标识的多个属性文件,将所提取的多个属性文件中的每个转换成对应的属性对象;
进一步的,所述后台读取的资源配置文件为资源配置文件中jar包及项目classes下的文件;所述特定路径为路径i18n;所述对象文件为JS文件;所述预定格式的字符串为Json字符串;所述预定后缀标识的属性文件的预定后缀标识为properties;
步骤102,后台部件根据属性对象建立映射对象,所述映射对象包括多个映射对,每个映射对包括由经过转换得到的多个属性对象中每个属性对象的属性名构成的关键字和由属性值构成的映射值;
步骤103,后台部件将每个映射对象转换为预定格式的字符串并保存在对象文件中;
进一步的,使用window变量描述后台配置的对象文件内容,所述对象文件的文件路径与所述特定路径相同;使用资源配置文件名称中特定路径名称以及特定路径名称前部分构成的字符串作为window中间变量名;所述对象文件的文件内容为将字符串“window.”、window中间变量名、字符“=”以及Json字符串顺序串联而成;所述资源配置文件名称包含特定路径名称对应的字符;
以本实施例为例,读取jar包和项目classes下面的文件,从路径为i18n下找出所有后缀名为.properties的文件,资源文件的内容格式为:“编码:编码对应的多语言内容”,例如:“rms_user.role=role”。然后循环每一个文件,将属性文件转换成对应的Properties对象,新建一个Map对象,再循环每一个属性,将属性名作为key值,属性值作为value值放入Map对象中,处理完所有属性后再将Map对象转成Json字符串,截取资源文件名中i18n之前(包括i18n本身)的字符串作为window中的变量名,然后将字符串“window.”加上window变量名,再加上“=”和Json字符串作为文件内容,写入JS文件中,文件路径为i18n目录,文件名为资源文件的文件名,后缀为.js。例如:rms_i18n_zh_CN.properties的配源文件,生成的js文件名为rms_i18n_zh_CN.js,文件中内容为window.rms_i18n=json字符串,其中rms为模块名;
步骤103,前台部件读取多个对象文件,并对每个对象文件的文件名称添加语言字符串;
步骤104,前台部件检测运行项目的语言类型,根据语言类型将对象文件的文件名称中语言字符串替换为与所述语言类型相对应的语言的字符串;
进一步的,所述将对象文件的文件名称中语言字符串替换为具体语言对应的字符串是通过装饰器类在修改名称后的对象文件中查找所有script和link标签类型的元素,将其对应的src和href属性值中的语言字符串替换为具体语言;所述语言字符串为“{{language}}”;
以本实施例为例,在前台页面引入时需要拼上字符串“{{language}}”,在装饰器类中查找所有script和link标签类型的元素,将其对应的src和href属性值中的“{{language}}”替换成具体的语言。
例如:<script src="www/i18n/rms_i18n_{{language}}.js"type="text/javascript"></script>,语言类型为中文zh_CN时,会替换成<script src="www/i18n/rms_i18n_zh_CN.js"type="text/javascript"></script>;
进一步的,对于图片类型的多语言,页面中需要将img元素的src属性值中拼上字符串“{{language}}”,在装饰器类中会查找所有img标签类型的元素,将其src属性值中“{{language}}”替换成具体的语言;
步骤105,使用资源编码字符串根据对象文件获取对应的语言内容,并且将所述运行项目的当前语言内容转换为所获取的语言内容;
进一步的,针对前后台部件公共的多语言内容使用资源编码字符串根据对象文件获取对应的语言内容;针对模块的多语言内容使用模块名称、字符“_”以及资源编码字符串一次串联而成的字符串根据对象文件获取对应的语言内容;所述资源编码字符串为il8n[‘资源编码’];
进一步的,进一步的,所述获取前台语言类型的方法包括:判断是否支持多语言;当支持多语言时,从cookie中获取当前语言;如获取当前语言失败则获取浏览器首语言;如果获取浏览器首语言失败则获取操作系统语言;确认获取语言的资料包是否存在,如存在则返回该语言完成获取,如不存在则返回默认语言完成获取;当判断不支持多语言时返回默认语言完成获取;
进一步的,前台控件通过控件解析JS文件使控件生成对应语言的具体页面内容;解析时判断控件属性值是否包含特殊路径字符串,如包含则对该属性值进行eval处理,获取其对应的多语言属性;
例如对输入框增加为空时提示信息:emptyText="i18n['login.password']"。以上是针对用户配置控件的属性的多语言处理,控件本身也会包括多语言的文字,比如日期控件的月份、星期,表格控件的分页条显示等内容都需要处理多语言,将这些需要多语言处理的内容放入单独的JS文件中,在装饰器类中引入该文件,解析控件时读取里面的内容;
进一步的,在所述项目的根目录下配置xml格式的多语言配置文件,根据不同的语言在根目录下建立不同的语言文件夹以存储对应的xml格式配置文件;如仅支持一种语言则直接在根目录下建立xml格式配置文件;使用dom4j对所有xml格式配置文件的每一个进行解析;
进一步的,获取文件的全路径字符串,再获取“info/”在字符串的位置,从而取出字符串中info/后面的内容作为语言文件名变量。设置前缀变量的值为空字符串,判断语言文件名变量是否包含“/”字符,如果包含则取出“/”字符前面的内容,再拼接上“_”作为前缀变量的值。接着循环配置文件中的每个元素,取出code属性,将前缀变量与code属性值拼在一起作为一条多语言配置的编码,再判断存放多语言变量信息Map的key值中是否包含该编码,如果已存在则在后台输出重复的编码提示,如果不存在则将编码作为key值,配置文件元素的Text作为对应的value值;
进一步的,后台插件使用公共类方法获取多语言配置文件;所述公共类方法包括reload()方法、get(code)方法以及get(String code,Object...params)方法;
reload()方法,重新加载所有多语言配置信息。
get(code)方法,根据配置的编码获取对应的多语言内容,在该方法中首先从存放多语言变量信息Map中获取key值为编码的元素对应的值,如果获取不到再将编码前面拼接上当前语言和下划线“_”作用key值去获取值返回。
get(String code,Object...params)方法,类似get(code)方法先取出编码对应的多语言内容,再将其中的“{}”字符串分别用传入的变量逐个替换。
例如:
配值信息为<e code="testcode">用户{}您好,欢迎您登陆</e>
则InfoHelper.get(“testcode”,”张三”)取出来的值为:用户张三您好,欢迎您登陆。
图2为本发明具体实施方式的一种基于前后台分离平台下实现多语言自动适配的系统的结构图;如图2所示,所述系统200包括:
后台部件201,所述后台部件201用于获取资源配置文件并从所述资源配置文件提取特定路径下具有预定后缀标识的多个属性文件,将所提取的多个属性文件中的每个转换成对应的属性对象;后台部件201根据属性对象建立映射对象,并将每个映射对象转换为预定格式的字符串传输至对象文件组202;
对象文件组202,所述对象文件组202包括多个对象文件,所述多个对象文件中的每一个用于保存后台部件传输的对应每个映射对象的预定格式的字符串;对象文件供前台部件进行调用和更新;
前台部件203,所述前台部件203用于调取对象文件组202中的多个对象文件,并对每个对象文件的文件名称添加语言字符串;所述前台部件203用于检测运行项目的语言类型,根据语言类型将对象文件的文件名称中语言字符串替换为与所述语言类型相对应的语言的字符串;所述前台部件203使用资源编码字符串根据对象文件获取对应的语言内容,并且将所述运行项目的当前语言内容转换为所获取的语言内容;
进一步的,所述后台部件201中的特定路径为路径i18n;对象文件为JS文件;预定格式的字符串为Json字符串;预定后缀标识的属性文件的预定后缀标识为properties;
进一步的,所述对象文件组202中的每个对象文件使用window变量描述,所述对象文件的文件路径与所述特定路径相同;使用资源配置文件名称中特定路径名称以及特定路径名称前部分构成的字符串作为window中间变量名;所述对象文件的文件内容为将字符串“window.”、window中间变量名、字符“=”以及Json字符串顺序串联而成;所述资源配置文件名称包含特定路径名称对应的字符;
进一步的,所述前台部件203包括装饰器类,所述装饰器类用于在修改名称后的对象文件中查找所有script和link标签类型的元素,将其对应的src和href属性值中的语言字符串替换为具体语言;所述语言字符串为“{{language}}”;
进一步的,所述前台部件203针对前后台部件公共的多语言内容使用资源编码字符串根据对象文件获取对应的语言内容;前台部件203针对模块的多语言内容使用模块名称、字符“_”以及资源编码字符串一次串联而成的字符串根据对象文件获取对应的语言内容;所述资源编码字符串为il8n[‘资源编码’];
进一步的,所述前台部件203包括前台控件,所述前台控件通过控件解析JS文件使控件生成对应语言的具体页面内容;解析时判断控件属性值是否包含特殊路径字符串,如包含则对该属性值进行eval处理,获取其对应的多语言属性;
进一步的,所述后台部件201包括后台插件,所述后台插件使用公共类方法获取多语言配置文件;所述公共类方法包括reload()方法、get(code)方法以及get(Stringcode,Object...params)方法。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。本说明书中涉及到的步骤编号仅用于区别各步骤,而并不用于限制各步骤之间的时间或逻辑的关系,除非文中有明确的限定,否则各个步骤之间的关系包括各种可能的情况。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在权利要求书中所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本公开进行说明而不是对本公开进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。
以上所述仅是本公开的具体实施方式,应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开精神的前提下,可以作出若干改进、修改、和变形,这些改进、修改、和变形都应视为落在本申请的保护范围内。
Claims (13)
1.一种基于前后台分离平台下实现多语言自动适配的方法,所述方法包括:
响应于检测到项目的运行,后台部件获取资源配置文件,并从所述资源配置文件提取特定路径下具有预定后缀标识的多个属性文件,将所提取的多个属性文件中的每个转换成对应的属性对象;
后台部件根据属性对象建立映射对象,所述映射对象包括多个映射对,每个映射对包括由经过转换得到的多个属性对象中每个属性对象的属性名构成的关键字和由属性值构成的映射值;
后台部件将每个映射对象转换为预定格式的字符串并保存在对象文件中;
前台部件读取多个对象文件,并对每个对象文件的文件名称添加语言字符串;
前台部件检测运行项目的语言类型,包括,判断是否支持多语言;当支持多语言时,从cookie中获取当前语言;如获取当前语言失败则获取浏览器首语言;如果获取浏览器首语言失败则获取操作系统语言;确认获取语言的资料包是否存在,如存在则返回该语言完成获取,如不存在则返回默认语言完成获取;当判断不支持多语言时返回默认语言完成获取;根据语言类型将对象文件的文件名称中语言字符串替换为与所述语言类型相对应的语言的字符串,包括:所述将对象文件的文件名称中语言字符串替换为具体语言对应的字符串是通过装饰器类在修改名称后的对象文件中查找所有script和link标签类型的元素,将其对应的src和href属性值中的语言字符串替换为具体语言;所述语言字符串为“{{language}}”;
使用资源编码字符串根据对象文件获取对应的语言内容,并且将所述运行项目的当前语言内容转换为所获取的语言内容。
2.根据权利要求1所述的方法,其特征在于:所述后台读取的资源配置文件为资源配置文件中jar包及项目classes下的文件;所述特定路径为路径i18n;所述对象文件为JS文件;所述预定格式的字符串为Json字符串;所述预定后缀标识的属性文件的预定后缀标识为properties。
3.根据权利要求1所述的方法,其特征在于:使用window变量描述后台配置的对象文件内容,所述对象文件的文件路径与所述特定路径相同;使用资源配置文件名称中特定路径名称以及特定路径名称前部分构成的字符串作为window中间变量名;所述对象文件的文件内容为将字符串“window.”、window中间变量名、字符“=”以及Json字符串顺序串联而成;所述资源配置文件名称包含特定路径名称对应的字符。
4.根据权利要求1所述的方法,其特征在于:针对前后台部件公共的多语言内容使用资源编码字符串根据对象文件获取对应的语言内容;针对模块的多语言内容使用模块名称、字符“_”以及资源编码字符串一次串联而成的字符串根据对象文件获取对应的语言内容;所述资源编码字符串为il8n[‘资源编码’]。
5.根据权利要求1所述的方法,其特征在于:前台控件通过控件解析JS文件使控件生成对应语言的具体页面内容;解析时判断控件属性值是否包含特殊路径字符串,如包含则对该属性值进行eval处理,获取其对应的多语言属性。
6.根据权利要求1所述的方法,其特征在于:在所述项目的根目录下配置xml格式的多语言配置文件,根据不同的语言在根目录下建立不同的语言文件夹以存储对应的xml格式配置文件;如仅支持一种语言则直接在根目录下建立xml格式配置文件;使用dom4j对所有xml格式配置文件的每一个进行解析。
7.根据权利要求1所述的方法,其特征在于:后台插件使用公共类方法获取多语言配置文件;所述公共类方法包括reload()方法、get(code)方法以及get(String code,Object...params)方法。
8.一种基于前后台分离平台下实现多语言自动适配的系统,所述系统包括:
后台部件,所述后台部件用于获取资源配置文件并从所述资源配置文件提取特定路径下具有预定后缀标识的多个属性文件,将所提取的多个属性文件中的每个转换成对应的属性对象;后台部件根据属性对象建立映射对象,并将每个映射对象转换为预定格式的字符串传输至对象文件组;
对象文件组,所述对象文件组包括多个对象文件,所述多个对象文件中的每一个用于保存后台部件传输的对应每个映射对象的预定格式的字符串;对象文件供前台部件进行调用和更新;
前台部件,所述前台部件用于调取对象文件组中的多个对象文件,并对每个对象文件的文件名称添加语言字符串;所述前台部件用于检测运行项目的语言类型,包括,判断是否支持多语言;当支持多语言时,从cookie中获取当前语言;如获取当前语言失败则获取浏览器首语言;如果获取浏览器首语言失败则获取操作系统语言;确认获取语言的资料包是否存在,如存在则返回该语言完成获取,如不存在则返回默认语言完成获取;当判断不支持多语言时返回默认语言完成获取;根据语言类型将对象文件的文件名称中语言字符串替换为与所述语言类型相对应的语言的字符串,包括:所述将对象文件的文件名称中语言字符串替换为具体语言对应的字符串是通过装饰器类在修改名称后的对象文件中查找所有script和link标签类型的元素,将其对应的src和href属性值中的语言字符串替换为具体语言;所述语言字符串为“{{language}}”;所述前台部件使用资源编码字符串根据对象文件获取对应的语言内容,并且将所述运行项目的当前语言内容转换为所获取的语言内容。
9.根据权利要求 8所述的系统,其特征在于:所述后台部件中的特定路径为路径i18n;对象文件为JS文件;预定格式的字符串为Json字符串;预定后缀标识的属性文件的预定后缀标识为properties。
10.根据权利要求8所述的系统,其特征在于:所述对象文件组中的每个对象文件使用window变量描述,所述对象文件的文件路径与所述特定路径相同;使用资源配置文件名称中特定路径名称以及特定路径名称前部分构成的字符串作为window中间变量名;所述对象文件的文件内容为将字符串“window.”、window中间变量名、字符“=”以及Json字符串顺序串联而成;所述资源配置文件名称包含特定路径名称对应的字符。
11.根据权利要求8所述的系统,其特征在于:所述前台部件针对前后台部件公共的多语言内容使用资源编码字符串根据对象文件获取对应的语言内容;前台部件针对模块的多语言内容使用模块名称、字符“_”以及资源编码字符串一次串联而成的字符串根据对象文件获取对应的语言内容;所述资源编码字符串为il8n[‘资源编码’]。
12.根据权利要求8所述的系统,其特征在于:所述前台部件包括前台控件,所述前台控件通过控件解析JS文件使控件生成对应语言的具体页面内容;解析时判断控件属性值是否包含特殊路径字符串,如包含则对该属性值进行eval处理,获取其对应的多语言属性。
13.根据权利要求8所述的系统,其特征在于:所述后台部件包括后台插件,所述后台插件使用公共类方法获取多语言配置文件;所述公共类方法包括reload()方法、get(code)方法以及get(String code,Object...params)方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711450644.0A CN109976840B (zh) | 2017-12-27 | 2017-12-27 | 一种基于前后台分离平台下实现多语言自动适配的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711450644.0A CN109976840B (zh) | 2017-12-27 | 2017-12-27 | 一种基于前后台分离平台下实现多语言自动适配的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109976840A CN109976840A (zh) | 2019-07-05 |
CN109976840B true CN109976840B (zh) | 2022-03-04 |
Family
ID=67071914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711450644.0A Active CN109976840B (zh) | 2017-12-27 | 2017-12-27 | 一种基于前后台分离平台下实现多语言自动适配的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109976840B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209757B (zh) * | 2019-12-10 | 2023-12-29 | 南京国电南自维美德自动化有限公司 | 一种基于语言包实现继电保护装置多语言版本方法及装置 |
CN112256365B (zh) * | 2020-09-27 | 2022-06-07 | 福建天泉教育科技有限公司 | 一种自动化管理多语言版本的方法及终端 |
CN114003489B (zh) * | 2021-09-30 | 2023-08-18 | 苏州浪潮智能科技有限公司 | 一种前端代码文件检测方法、装置及电子设备和存储介质 |
CN114356480B (zh) * | 2021-12-28 | 2023-11-07 | 数数信息科技(上海)有限公司 | 一种基于figma的前端国际化多语言转换方法及系统 |
CN114489839B (zh) * | 2022-01-12 | 2023-08-01 | 海南车智易通信息技术有限公司 | 针对页面加载配置数据的方法及装置、服务器 |
CN115061768A (zh) * | 2022-06-30 | 2022-09-16 | 安世亚太科技股份有限公司 | 软件的语言切换方法、装置、电子设备及计算机可读介质 |
CN117270961B (zh) * | 2023-11-21 | 2024-04-12 | 武汉蜂鸟龙腾软件有限公司 | 一种Linux环境下MFC字符资源的解析和加载方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441567A (zh) * | 2008-11-18 | 2009-05-27 | 宇龙计算机通信科技(深圳)有限公司 | 一种在移动终端中支持多语言用户界面的方法及系统 |
CN101676904A (zh) * | 2008-09-19 | 2010-03-24 | 中兴通讯股份有限公司 | 一种Web应用系统多语化的方法和装置 |
CN102109958A (zh) * | 2011-03-04 | 2011-06-29 | 深圳市开立科技有限公司 | 实现多语言用户界面的方法和系统 |
CN102289376A (zh) * | 2011-09-16 | 2011-12-21 | 烽火通信科技股份有限公司 | 基于嵌入式的多语言web页面实现方法及系统 |
CN102693322A (zh) * | 2012-06-01 | 2012-09-26 | 杭州海康威视数字技术股份有限公司 | 支持多国语言的网页处理方法、网页加载方法及其系统 |
CN104049957A (zh) * | 2013-03-13 | 2014-09-17 | 成都泰聚泰科技有限公司 | 基于星形结构的通用业务模型的快速建模框架 |
CN104978394A (zh) * | 2015-05-08 | 2015-10-14 | 安徽机电职业技术学院 | 支持多语种显示的网页标签数据组织更新方法 |
CN105138555A (zh) * | 2015-07-20 | 2015-12-09 | 新浪网技术(中国)有限公司 | 一种网页多语言国际化的加载方法和装置 |
CN105404508A (zh) * | 2015-11-05 | 2016-03-16 | 浪潮(北京)电子信息产业有限公司 | 一种管理界面多语言的支持方法、装置及终端 |
CN106202547A (zh) * | 2016-07-26 | 2016-12-07 | 努比亚技术有限公司 | 一种站点管理方法、装置以及一种网站系统 |
CN106250454A (zh) * | 2012-04-28 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 一种页面脚本的加载方法及装置 |
CN106339226A (zh) * | 2016-08-26 | 2017-01-18 | 南威软件股份有限公司 | 一种网页页面的展示方法和页面展示插件 |
CN106484402A (zh) * | 2016-09-23 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种适用通配符模式的国际化资源文件的配置方法 |
CN106502708A (zh) * | 2016-11-15 | 2017-03-15 | 航天信息股份有限公司 | 一种基于Eclipse插件创建Web工程项目的方法和系统 |
CN106569793A (zh) * | 2016-09-19 | 2017-04-19 | 济南浪潮高新科技投资发展有限公司 | 一种基于Node.js的国际化实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10353534B2 (en) * | 2016-05-13 | 2019-07-16 | Sap Se | Overview page in multi application user interface |
-
2017
- 2017-12-27 CN CN201711450644.0A patent/CN109976840B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101676904A (zh) * | 2008-09-19 | 2010-03-24 | 中兴通讯股份有限公司 | 一种Web应用系统多语化的方法和装置 |
CN101441567A (zh) * | 2008-11-18 | 2009-05-27 | 宇龙计算机通信科技(深圳)有限公司 | 一种在移动终端中支持多语言用户界面的方法及系统 |
CN102109958A (zh) * | 2011-03-04 | 2011-06-29 | 深圳市开立科技有限公司 | 实现多语言用户界面的方法和系统 |
CN102289376A (zh) * | 2011-09-16 | 2011-12-21 | 烽火通信科技股份有限公司 | 基于嵌入式的多语言web页面实现方法及系统 |
CN106250454A (zh) * | 2012-04-28 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 一种页面脚本的加载方法及装置 |
CN102693322A (zh) * | 2012-06-01 | 2012-09-26 | 杭州海康威视数字技术股份有限公司 | 支持多国语言的网页处理方法、网页加载方法及其系统 |
CN104049957A (zh) * | 2013-03-13 | 2014-09-17 | 成都泰聚泰科技有限公司 | 基于星形结构的通用业务模型的快速建模框架 |
CN104978394A (zh) * | 2015-05-08 | 2015-10-14 | 安徽机电职业技术学院 | 支持多语种显示的网页标签数据组织更新方法 |
CN105138555A (zh) * | 2015-07-20 | 2015-12-09 | 新浪网技术(中国)有限公司 | 一种网页多语言国际化的加载方法和装置 |
CN105404508A (zh) * | 2015-11-05 | 2016-03-16 | 浪潮(北京)电子信息产业有限公司 | 一种管理界面多语言的支持方法、装置及终端 |
CN106202547A (zh) * | 2016-07-26 | 2016-12-07 | 努比亚技术有限公司 | 一种站点管理方法、装置以及一种网站系统 |
CN106339226A (zh) * | 2016-08-26 | 2017-01-18 | 南威软件股份有限公司 | 一种网页页面的展示方法和页面展示插件 |
CN106569793A (zh) * | 2016-09-19 | 2017-04-19 | 济南浪潮高新科技投资发展有限公司 | 一种基于Node.js的国际化实现方法 |
CN106484402A (zh) * | 2016-09-23 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种适用通配符模式的国际化资源文件的配置方法 |
CN106502708A (zh) * | 2016-11-15 | 2017-03-15 | 航天信息股份有限公司 | 一种基于Eclipse插件创建Web工程项目的方法和系统 |
Non-Patent Citations (5)
Title |
---|
【整理】前端国际化小结;木羽zwwill;《https://www.jianshu.com/p/874ee9e541b1》;20170609;第1-4页 * |
Node.js处理国际化;weixin_34368949;《https://blog.csdn.net/weixin_34368949/article/details/87957588》;20171102;第1-5页 * |
一个实际的案例介绍Spring Boot + Vue 前后端分离;@nele;《https://www.cnblogs.com/nele/p/7858581.html》;20171119;第1-6页 * |
使用vue、react可以前后端分离开发,然后多语言问题怎么办;diyao;《https://segmentfault.com/a/1190000011754538》;20171027;第1-4页 * |
基于struts2-hibernate-spring的Java Web系统国际化设计与实现;李敏;《软件》;20160215;第37卷(第02期);第166-169页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109976840A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976840B (zh) | 一种基于前后台分离平台下实现多语言自动适配的方法及系统 | |
US20150295942A1 (en) | Method and server for performing cloud detection for malicious information | |
US8903710B2 (en) | Synchro translation verification test for software applications | |
US9922009B2 (en) | Network media information display system, method, apparatus and server | |
US8671389B1 (en) | Web application resource manager on the web and localizable components | |
CN105205080B (zh) | 冗余文件清理方法、装置和系统 | |
US9195653B2 (en) | Identification of in-context resources that are not fully localized | |
CN101826096B (zh) | 基于鼠标指点的信息显示方法、装置系统 | |
CN111831384B (zh) | 语言切换方法和装置、设备及存储介质 | |
WO2014153457A1 (en) | Merging web page style addresses | |
US20150227276A1 (en) | Method and system for providing an interactive user guide on a webpage | |
US20150161160A1 (en) | Application Localization | |
US20130124684A1 (en) | Visual separator detection in web pages using code analysis | |
CN107526742B (zh) | 用于处理多语言文本的方法和设备 | |
CN110990057A (zh) | 小程序子链信息的提取方法、装置、设备及介质 | |
CN101895517B (zh) | 一种脚本语义提取方法和提取装置 | |
CN101796509A (zh) | 准备显示文档用于分析的设备 | |
CN107391175B (zh) | 控件数据配置方法及计算机可读存储介质 | |
US8656371B2 (en) | System and method of report representation | |
CN115905759A (zh) | 一种无障碍网页生成方法、装置、介质和设备 | |
CN115904167A (zh) | 网页图标的处理方法、装置、存储介质及电子设备 | |
CN112800078A (zh) | 基于javascript的轻量级文本标注方法、系统、设备及存储介质 | |
JP4448724B2 (ja) | ウェブブラウザのアクセシビリティ検査プログラム | |
CN113536811A (zh) | 富文本文档的翻译方法及装置 | |
CN109885743B (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 |