跳到主要内容

概述

需求

管理员可以批量翻译某个模块的数据

通过创建某个批量翻译任务来实现

架构思路

image-20230313161031404

示例

首先在枚举模块中定义自己模块的类型:

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;
}