基于AOP的动态数据翻译框架
张 舒
(北京全路通信信号研究设计院集团有限公司,北京 100070)
摘要:
软件市场国际化进程不断加快,动态数据翻译工作日益重要。设计一种通用动态数据翻译框架,采用AOP 的切面技术进行翻译功能的织入,自定义注解用于标记具有翻译需求的方法和字段,使用翻译内容和唯一键值的方式满足交互数据的唯一性,双向翻译功能保证翻译与业务解耦。此方案已经实现并且应用到了海外铁路信息项目,满足多语言的翻译需求,且其可移植性和高可复用性极大提高开发效率。关键词:
AOP ;动态数据;翻译框架;国际化中图分类号:
TP311 文献标志码:A 文章编号:1673-4440(2023)10-0048-04Translation Framework of Dynamic Data Based on AOP
Zhang Shu
(CRSC Research & Design Institute Group Co., Ltd., Beijing 100070, China)
Abstract: As the internationalization of the software market is accelerating, the translation of dynamic data is increasingly important. In the general-purpose translation framework of dynamic data designed in this paper, the following methods are adopted. The aspect-oriented technology AOP is used to weave the translation function. The customized annotations are used to mark the methods and fields with translation requirements. The translation contents and unique key values are used to meet the uniqueness requirement of interactive data. The two-way translation function is used to ensure the decoupling between translation and services. The proposed translation framework has been implemented and applied to railway information system projects in the overseas market. It not only meets the needs of multilingual translation, but also greatly improves the development efficient thanks to its portability and high reusability.
Keywords: AOP; dynamic data; translation framework; internationalization
DOI: 10.3969/j.issn.1673-4440.2023.10.009
收稿日期:2022-05-05;修回日期:
2023-09-07作者简介:
张舒(1990—),女,工程师,硕士,主要研究方向:铁路运输指挥调度,邮箱:
****************** 。1 动态数据翻译概况
目前越来越多的项目有了国际化需求,国际化
主要是指根据语言选择,显示符合不同国家阅读习惯的页面和数据。国际化功能不仅需要将前台界面固定使用的文本元素进行翻译,对于程序动态产生的数据也需要进行翻译展示。针对固定文本信息的翻译,可以使用通用的i18n 组件,根据用户当前选择语言类型,从语言配置文件中提取相应的内容。后台数据
的翻译功能,目前主流方案主要有以下两种。
使用翻译网站提供的在线翻译api。这种方式不需要自备翻译数据集,方便灵活。但是当需要前后台交互并涉及到业务逻辑时,虽然可以将前台输入内容进行反向翻译统一成同一种语言内容,但是无法保证传递给逻辑业务数据内容的唯一可识别性。因此该方法仅适用于只展示动态数据,不对动态数据进行业务逻辑的情况。此外,正常网络访问也是使用此方法的必备条件。
构建数据字典,包括键值及对应的翻译语言内容。前后台交互及后台业务使用键值,前台显示时使用翻译内容。此方案完美解决了输入内容唯一可识别的需求,但是需要将待翻译的字段扩展为键值和翻译内容两个字段。这种方式要在程序设计时就考虑进去,如果是在业务开发完成或部分完成后增加,需要重新梳理并修改前后台数据结构,增大了开发工作量。
基于以上情况,因此需要设计一种易于配置并且具有高可复用性的框架实现动态数据翻译工作。2 翻译框架设计
2.1 总体设计
动态数据翻译框架设计如图1所示。
spring framework网络系统参数Fig.1 Translation framework design
此框架设计遵循分层原则,划分不同层的功能职责。其中Aspect用于对请求的参数及返回值拦截,调用翻译服务进行字段翻译更新数据内容;Service层(服务层)提供翻译服务,承担该框架的主要业务;D
ao层(数据访问层)实现数据持久化功能,与数据源交互。框架内默认设置翻译服务包括中文、英文,如需扩展语言类型,使用时需要填写在配置文件中并更新数据库结构及内容。此功能是通过使用Cglib动态扩展java类及其接口实现。应用此框架,后台接收到请求后的运行时序如下。
1)解析请求的语言类型;
2)具有入参翻译标签的方法进行入参结构扫描,国际化功能处理成统一可识别键值;3)核心业务逻辑处理;
4)具有返回值翻译标签的方法进行返回值结构扫描,国际化功能处理成翻译后的内容;5)返回替换翻译值后的响应内容。
应用此方案,基于动态数据翻译的请求http请求过程如图2所示,对于B/S架构的前台而言,仅
Fig.2 HTTP request process
此方案的优点如下。
1)对于已存在的项目进行国际化功能添加时,不会变动原有数据结构,与业务解耦。
2)使用注解标注需要翻译的接口、翻译类型(正向翻译/反向翻译)以及待翻译字段,使用AOP进行请求拦截和翻译织入,可以缩减代码,控制开发成本。
3)对于需要增扩翻译的语言种类和语言内容,可以动态扩展字典表并进行文件配置,无需增添代码。4)框架易于配置,代码可复用,有效提高系统的开发效率。
动态数据翻译框架与已有程序的结构兼容情况如图3所示。
2.2 具体实现
动态数据翻译框架搭建步骤如下。
1) 建立数据表,内容包括键值、需要翻译的语言类型,比如中文、英文。其中键值是标记翻译内容的唯一后台通用语言,用于在后台服务中进行数据交换和数据存储。
2) 翻译字典查询业务,提供正向翻译和反向翻译功能。正向翻译是指输入键值和语言种类,返回对应的
语言内容;反向翻译是指输入翻译内容和语言种类,返回唯一键值。语言种类包括中文、英文、以及自定义的语言类型。对于后者,程序读取配置文件并通过Cglib自动进行装配,读取数据源数据提供对应的翻译功能。
3)自定义注解TranslateRequest,Translate Response和Translate。其中TranslateRequest 标记需要对入参进行反向翻译的接口,Translate Response标记需要对返回值进行翻译的接口,Translate标记结构体中需要参与翻译的字段。4)AOP切面级别拦截接口的请求和返回值。对于请求进行拦截,根据请求头所带语言类型,将语言内容反向翻译为唯一键值,在服务中进行数据交换;对于接口返回值进行拦截,根据请求头所带语言类型,将返回内容中的唯一键值进行翻译,替换成翻译内容作为接口调用的响应内容。
2.3 框架使用方法
1)前台在http请求头增加Language字段,标记当前前台选择语言类型,作为后台接口输入参数反向翻译以及输出参数翻译的标准。
2)数据库中添加翻译字典。
3)并不是所有的接口和参数都有翻译需求,因此只为有翻译需求的接口和字段添加注解。在需要对入
参进行反向翻译的接口进行TranslateRequest 标记,在需要对返回值进行翻译的接口进行TranslateResponse标记,结构体中需要参与翻译的字段进行Translate标记。这样操作可以最大化减少不必要的翻译工作。
4)如果需要增扩翻译语言类型,需要在l文件中以json的key-value格式写入dict字段。如:dict: "{id-ID: 'C_ID'}",其中key是前后台交互的语言类型,value是对应的数据库列名。
2.4 参考用例及测试
需要正向翻译的方法及返回值结构如图4所示。外部调用该接口,根据请求头Language字段值不同,返回内容不同,测试结果如图5所示。3 结束语
本文设计了一种动态数据翻译框架,可以应用于有翻译需求的软件开发,尤其适用于增量式开发和有前后台交互需求的情况。借助AOP技术实现国际化翻译工作与核心业务的分离,使用注解方式提高框架的易用性和可复用性。通过使用本框架,可以有效提高系统的开发效率,降低人力和时间成本。该方案已经应用于海外铁路的信息化产品中并且使
图� 翻译框架兼容
Fig.3 Compatibility of translation framework
用效果良好,希望本框架可以为更多具有多语言动态数据翻译需求的项目提供服务或设计思路。
参考文献
[1]林睿睿,黄锦桥.基于B /S 框架的交互式在线
翻译系统设计[J ].现代电子技术,2021,44(9):115-119.
L i n R u i r u i , H u a n g J i n q i a o. D e s i g n o f I n t e r a c t i v e O n l i n e T r a n s l a t i o n S y s t e m B a s e d o n B /S F r a m e w o r k [J ]. M o d e r n Electronics Technique, 2021, 44(9): 115-119. [2]袁英,张传立.利用A O P 实现I18N [J ].交通
运输部管理干部学院学报,2007,17(4):40-41,48.
[3]孟皓冉,李祥星,于秀娟.基于A O P 的字
图� 参考用例代码
Fig.4 Code of reference use case
典翻译实现方法、系统、电子设备及存储介质:CN114020250A[P].2022-02-08.
[4]郑舒文,蒋湘宁,杨阳.多语言显示方法、装
置、电子设备及存储介质:C N113568692A [P ]. 2021-10-29.
[5]谭勇德(Tom).Spring5核心原理与30个类手写
实战[M].北京:电子工业出版社,2019. [6]杨开振,周吉文,梁华辉.J a v a E E 互联
网轻量级框架整合开发:S S M 框架(S p r i n g MVC+Spring+MyBatis)和Redis 实现[M].北京:电子工业出版社,2017.
[7]小马哥.Spring Boot 编程思想-核心篇[M].
北京:电子工业出版社,2019.
[8]朱智胜.Spring Boot 技术内幕:架构设计与实
现原理[M].北京:机械工业出版社,2020.
图� 翻译测试结果
Fig.5 Translation test results
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论