# dataTranslate **Repository Path**: asgards/data-translate ## Basic Information - **Project Name**: dataTranslate - **Description**: springboot,springmvc数据翻译工具,即支持通过注解开启数据翻译数据属性功能,并把翻译结果存到数据库。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-09-11 - **Last Updated**: 2024-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springboot数据翻译工具 springboot,springmvc数据翻译工具,即支持通过注解开启数据翻译数据属性功能,把翻译结果存到数据库,并支持翻译结果的修改保存。 ## 功能特性 * 支持springboot,springmvc * 支持mysql,postgresql等 * 支持easyui,jqgrid,layui前端对功能翻译的修改 * 支持java注解使用 * 支持百度,有道,google等翻译api * 支持查询时用guava 1分钟以及redis 20分钟缓存翻译结果 * 支持用翻译api进行初始翻译,并保存到数据库。 * 支持对翻译结果进行修改,并以修改后的结果为准。 * 建议使用数字做id * 支持多线程并发翻译内容(可能会受供应商api的频率限制) ## 相关资料 * 百度翻译api https://fanyi-api.baidu.com/doc/21 * google翻译api https://cloud.google.com/translate/docs/quickstarts?csw=1 * 其他翻译api 可自行扩展 ## Quick Start http://localhost:8080/index.html http://localhost:8080/doc.html http://translate-demo.opendfl.org.cn/index.html ## 使用 * 1 maven引入依赖包 ```xml cn.org.opendfl data-translate 1.4 ``` * 2,在要翻译的PO类,加上@TranslateType,@TranslateField快速上手 ```java /** * 支持翻译的PO类,加上@TranslateType */ @Data @TranslateType public class DflUserPo implements Serializable { private Integer id; /** * 昵称,要翻译的属性 */ @TranslateField private String nickname; /** * 描述信息,要翻译的属性 */ @TranslateField private String descs; } ``` * 3,在返回的list调用翻译功能 ```java @RestController @RequestMapping("dflUser") public class DflUserController{ @RequestMapping(value = "/listByLang", method = {RequestMethod.POST, RequestMethod.GET}) public List listByLang(HttpServletRequest request, DflUserPo entity, MyPageInfo pageInfo) { String lang = request.getHeader(RequestParams.LANG);//lang=en,jp等,主语言zh不翻译 if (StringUtils.isBlank(lang)) { lang = request.getParameter(RequestParams.LANG); } logger.debug("-------listByLang--lang={}", lang); this.pageSortBy(pageInfo); pageInfo = dflUserBiz.findPageBy(entity, pageInfo, this.createAllParams(request)); if (StringUtils.isNotBlank(lang)) { //方式一,调用接口翻译处理 TranslateUtil.transform(lang, pageInfo.getList(), true); } return pageInfo.getList(); } } ``` * 4,方法返回值注解@Translate ```java import cn.org.opendfl.translate.dflsystem.translate.annotation.Translate; @RestController @RequestMapping("dflUser") public class DflUserController { //方式二,通过注解翻译处理 @Translate @RequestMapping(value = "/listByLang2", method = {RequestMethod.POST, RequestMethod.GET}) public List listByLang2(HttpServletRequest request, DflUserPo entity, MyPageInfo pageInfo) { this.pageSortBy(pageInfo); pageInfo = dflUserBiz.findPageBy(entity, pageInfo, this.createAllParams(request)); return pageInfo.getList(); } } ```