怎么在list中进行翻译
例如一个list中有:[{"action":"add"},{“action”:"eduit"},{},很多]
怎么能把对应的action翻译成中文,例如翻译后:
[{"action":"add","actionName":"新增"},{“action”:"eduit","actionName":"编辑"},{},...]
就是action有好几百个,对应的要翻译也要有几百个。有什么简便的方法吗?
我一开始想把每个定义成一个枚举,
然后遍历;
public enum ActionDescription {
ADD("add", "新增"),
EDIT("edit", "编辑");
...
}
但是不知道怎么实现?
定义枚举字典库直接翻译,可以参考下;有些异常细节自己完善下,不在赘述
@Getter
public enum ActionDescriptionEnum {
ADD("add", "新增"),
EDIT("edit", "编辑");
ActionDescriptionEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
private String code;
private String msg;
public static ActionDescriptionEnum getEnumByCode(String code) {
for (ActionDescriptionEnum actionDescriptionEnum : ActionDescriptionEnum.values()) {
if (StrUtil.equals(code, actionDescriptionEnum.getCode())) {
return actionDescriptionEnum;
}
}
return null;
}
public static void main(String[] args) {
Stream.of(BillRuleDTO.builder().action("add").build(),BillRuleDTO.builder().action("edit").build())
.map(billRuleDTO -> {
String action = billRuleDTO.getAction();
ActionDescriptionEnum actionName = ActionDescriptionEnum.getEnumByCode(action);
billRuleDTO.setActionName(actionName.getMsg());
return billRuleDTO;
}).forEach(System.out::println);
}
}
创建一个翻译字典,通过字典来映射到需要翻译的文字内容。
private Map<String,String> actionMap = new HashMap<>();
// 记得初始化actionMap, key是"action", value是对应中文意思
public void translateAction(List<Map<String,String>> list) {
for (Map<String,String> item : list) {
if (item.containsKey("action")) {
String action = item.get("action");
if (actionMap.containsKey(action)) {
item.put("actionName", actionMap.get(action));
}
}
}
}
```java
```
使用枚举的话可以类似这样,通过getName方法来翻译action
public enum ActionDescription {
ADD("add", "新增"),
EDIT("edit", "编辑");
String action;
String name;
private static ActionDescription[] values = values();
ActionDescription(String action, String name) {
this.action = action;
this.name = name;
}
public static String getName(String action) {
if (action == null) {
return null;
}
for (ActionDescription value : values) {
if (action.equals(value.action)) {
return value.name;
}
}
return null;
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: