概述
需求
管理员可以批量翻译某个模块的数据
通过创建某个批量翻译任务来实现
架构思路
示例
首先在枚举模块中定义自己模块的类型:
public enum TaskType {
product("商品"),
brand("品牌"),
category("类目"),
article("文章"),
order("订单");
}
然后实现自己的翻译任务
tip
需要集成 BaseTranslateTask
,实现TranslateTask
注意这里是按页进行批量翻译的,如果返回的list为空,说明数据已经都被翻译完成
@Service
public class GoodsBatchTranslateTask extends BaseTranslateTask implements TranslateTask {
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private GoodsLangManager goodsLangManager;
protected List translate(Long pageNo) {
Locale currentLocale = LocaleContext.getCurrentLocale();
Page<GoodsDO> list = goodsMapper.selectPage(new Page<GoodsDO>(pageNo,50), new QueryWrapper<GoodsDO>());
List<GoodsDO> data = list.getRecords();
for (GoodsDO goods : data) {
goodsLangManager.reTranslate(goods,currentLocale );
}
return data;
}
/**
* 定义任务的类型
*
* @return
*/
@Override
public TaskType type() {
return TaskType.product;
}