mirror of https://gitee.com/stylefeng/roses
【i18n】删掉语种枚举,用字典替代
parent
6e6e4251ad
commit
164a2c9186
|
@ -1,6 +1,5 @@
|
||||||
package cn.stylefeng.roses.kernel.i18n.api;
|
package cn.stylefeng.roses.kernel.i18n.api;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.enums.TranslationEnum;
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -26,12 +25,12 @@ public interface TranslationApi {
|
||||||
/**
|
/**
|
||||||
* 获取某个语种下的所有多语言字典
|
* 获取某个语种下的所有多语言字典
|
||||||
*
|
*
|
||||||
* @param translationLanguages 语种枚举
|
* @param translationLanguages 语种字典
|
||||||
* @return key-翻译项标识,value-翻译的值TranslationApi
|
* @return key-翻译项标识,value-翻译的值TranslationApi
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2021/1/24 19:01
|
* @date 2021/1/24 19:01
|
||||||
*/
|
*/
|
||||||
Map<String, String> getTranslationDictByLanguage(TranslationEnum translationLanguages);
|
Map<String, String> getTranslationDictByLanguage(String translationLanguages);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加一个翻译项到context
|
* 添加一个翻译项到context
|
||||||
|
@ -45,11 +44,11 @@ public interface TranslationApi {
|
||||||
/**
|
/**
|
||||||
* 删除某条翻译记录
|
* 删除某条翻译记录
|
||||||
*
|
*
|
||||||
* @param translationLanguages 语种枚举
|
* @param translationLanguages 语种字典
|
||||||
* @param tranCode 具体翻译项编码
|
* @param tranCode 具体翻译项编码
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2021/1/24 21:59
|
* @date 2021/1/24 21:59
|
||||||
*/
|
*/
|
||||||
void deleteTranslationDict(TranslationEnum translationLanguages, String tranCode);
|
void deleteTranslationDict(String translationLanguages, String tranCode);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
package cn.stylefeng.roses.kernel.i18n.api.enums;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 翻译的语种
|
|
||||||
*
|
|
||||||
* @author fengshuonan
|
|
||||||
* @date 2021/1/24 18:57
|
|
||||||
*/
|
|
||||||
@Getter
|
|
||||||
public enum TranslationEnum {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 中文
|
|
||||||
*/
|
|
||||||
CHINESE("chinese", "中文"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 英文
|
|
||||||
*/
|
|
||||||
ENGLISH("english", "English");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 语种编码
|
|
||||||
*/
|
|
||||||
private final String code;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 语种的中文描述
|
|
||||||
*/
|
|
||||||
private final String description;
|
|
||||||
|
|
||||||
TranslationEnum(String code, String description) {
|
|
||||||
this.code = code;
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取所有的type(返回code编码集合)
|
|
||||||
*
|
|
||||||
* @author fengshuonan
|
|
||||||
* @date 2019/10/18 10:13
|
|
||||||
*/
|
|
||||||
public static List<String> types() {
|
|
||||||
ArrayList<String> integers = new ArrayList<>();
|
|
||||||
for (TranslationEnum value : TranslationEnum.values()) {
|
|
||||||
integers.add(value.name());
|
|
||||||
}
|
|
||||||
return integers;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过code值获取枚举
|
|
||||||
*
|
|
||||||
* @author fengshuonan
|
|
||||||
* @date 2019/10/18 10:33
|
|
||||||
*/
|
|
||||||
public static TranslationEnum getValue(String value) {
|
|
||||||
if (StrUtil.isNotBlank(value)) {
|
|
||||||
for (TranslationEnum translationLanguages : TranslationEnum.values()) {
|
|
||||||
if (translationLanguages.getCode().equals(value)) {
|
|
||||||
return translationLanguages;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,6 +1,5 @@
|
||||||
package cn.stylefeng.roses.kernel.i18n.api.pojo;
|
package cn.stylefeng.roses.kernel.i18n.api.pojo;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.enums.TranslationEnum;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
@ -25,9 +24,9 @@ public class TranslationDict implements Serializable {
|
||||||
private String tranName;
|
private String tranName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1:中文 2:英语
|
* 多语言语种的编码,值是字典的值,字典类型的编码是 languages
|
||||||
*/
|
*/
|
||||||
private TranslationEnum translationLanguages;
|
private String translationLanguages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 翻译的值,例如:账号
|
* 翻译的值,例如:账号
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package cn.stylefeng.roses.kernel.i18n.modular.factory;
|
package cn.stylefeng.roses.kernel.i18n.modular.factory;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.enums.TranslationEnum;
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
||||||
import cn.stylefeng.roses.kernel.i18n.modular.entity.Translation;
|
import cn.stylefeng.roses.kernel.i18n.modular.entity.Translation;
|
||||||
|
|
||||||
|
@ -18,12 +17,12 @@ public class TranslationDictFactory {
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2021/1/24 21:50
|
* @date 2021/1/24 21:50
|
||||||
*/
|
*/
|
||||||
public static TranslationDict createTranslationDict(TranslationEnum translationEnum, Translation translation) {
|
public static TranslationDict createTranslationDict(String translationLanguages, Translation translation) {
|
||||||
TranslationDict translationDict = new TranslationDict();
|
TranslationDict translationDict = new TranslationDict();
|
||||||
translationDict.setTranName(translation.getTranName());
|
translationDict.setTranName(translation.getTranName());
|
||||||
translationDict.setTranCode(translation.getTranCode());
|
translationDict.setTranCode(translation.getTranCode());
|
||||||
translationDict.setTranValue(translation.getTranValue());
|
translationDict.setTranValue(translation.getTranValue());
|
||||||
translationDict.setTranslationLanguages(translationEnum);
|
translationDict.setTranslationLanguages(translationLanguages);
|
||||||
return translationDict;
|
return translationDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.context.TranslationContext;
|
import cn.stylefeng.roses.kernel.i18n.api.context.TranslationContext;
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.enums.TranslationEnum;
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.exception.TranslationException;
|
import cn.stylefeng.roses.kernel.i18n.api.exception.TranslationException;
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.exception.enums.TranslationExceptionEnum;
|
import cn.stylefeng.roses.kernel.i18n.api.exception.enums.TranslationExceptionEnum;
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
||||||
|
@ -58,8 +57,7 @@ public class TranslationServiceImpl extends ServiceImpl<TranslationMapper, Trans
|
||||||
this.removeById(translationRequest.getTranId());
|
this.removeById(translationRequest.getTranId());
|
||||||
|
|
||||||
// 删除对应缓存
|
// 删除对应缓存
|
||||||
TranslationEnum translationEnum = TranslationEnum.valueOf(translation.getTranLanguageCode());
|
TranslationContext.me().deleteTranslationDict(translation.getTranLanguageCode(), translation.getTranCode());
|
||||||
TranslationContext.me().deleteTranslationDict(translationEnum, translation.getTranCode());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -86,8 +84,7 @@ public class TranslationServiceImpl extends ServiceImpl<TranslationMapper, Trans
|
||||||
List<Translation> list = this.list();
|
List<Translation> list = this.list();
|
||||||
ArrayList<TranslationDict> translationDictList = new ArrayList<>();
|
ArrayList<TranslationDict> translationDictList = new ArrayList<>();
|
||||||
for (Translation translation : list) {
|
for (Translation translation : list) {
|
||||||
TranslationEnum translationEnum = TranslationEnum.getValue(translation.getTranLanguageCode());
|
TranslationDict translationDict = TranslationDictFactory.createTranslationDict(translation.getTranLanguageCode(), translation);
|
||||||
TranslationDict translationDict = TranslationDictFactory.createTranslationDict(translationEnum, translation);
|
|
||||||
translationDictList.add(translationDict);
|
translationDictList.add(translationDict);
|
||||||
}
|
}
|
||||||
return translationDictList;
|
return translationDictList;
|
||||||
|
@ -141,14 +138,12 @@ public class TranslationServiceImpl extends ServiceImpl<TranslationMapper, Trans
|
||||||
*/
|
*/
|
||||||
private void saveContext(Translation translation) {
|
private void saveContext(Translation translation) {
|
||||||
|
|
||||||
TranslationEnum translationEnum = TranslationEnum.getValue(translation.getTranLanguageCode());
|
|
||||||
|
|
||||||
// 没有对应的语种,不添加到context
|
// 没有对应的语种,不添加到context
|
||||||
if (translationEnum == null) {
|
if (translation.getTranLanguageCode() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TranslationDict translationDict = TranslationDictFactory.createTranslationDict(translationEnum, translation);
|
TranslationDict translationDict = TranslationDictFactory.createTranslationDict(translation.getTranLanguageCode(), translation);
|
||||||
TranslationContext.me().addTranslationDict(translationDict);
|
TranslationContext.me().addTranslationDict(translationDict);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package cn.stylefeng.roses.kernel.i18n;
|
package cn.stylefeng.roses.kernel.i18n;
|
||||||
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.TranslationApi;
|
import cn.stylefeng.roses.kernel.i18n.api.TranslationApi;
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.enums.TranslationEnum;
|
|
||||||
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
import cn.stylefeng.roses.kernel.i18n.api.pojo.TranslationDict;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -20,35 +19,25 @@ public class TranslationContainer implements TranslationApi {
|
||||||
/**
|
/**
|
||||||
* 所有翻译的条目的字典项
|
* 所有翻译的条目的字典项
|
||||||
* <p>
|
* <p>
|
||||||
* key是语种,value是对应语种下的所有key value翻译值(第二个key是具体翻译项的编码)
|
* key是语种(字典),value是对应语种下的所有key value翻译值(第二个key是具体翻译项的编码)
|
||||||
*/
|
*/
|
||||||
private static final Map<TranslationEnum, Map<String, String>> TRAN_DICT_CONTAINER = new ConcurrentHashMap<>();
|
private static final Map<String, Map<String, String>> TRAN_DICT_CONTAINER = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(List<TranslationDict> translationDict) {
|
public void init(List<TranslationDict> translationDict) {
|
||||||
|
|
||||||
// 根据语种数量,创建多个语种的翻译Map
|
|
||||||
for (TranslationEnum type : TranslationEnum.values()) {
|
|
||||||
HashMap<String, String> typeMap = new HashMap<>();
|
|
||||||
TRAN_DICT_CONTAINER.put(type, typeMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 整理数据库中的字典
|
|
||||||
for (TranslationDict translationItem : translationDict) {
|
for (TranslationDict translationItem : translationDict) {
|
||||||
TranslationEnum translationLanguages = translationItem.getTranslationLanguages();
|
this.addTranslationDict(translationItem);
|
||||||
TRAN_DICT_CONTAINER.get(translationLanguages).put(translationItem.getTranCode(), translationItem.getTranValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> getTranslationDictByLanguage(TranslationEnum translationLanguages) {
|
public Map<String, String> getTranslationDictByLanguage(String translationLanguages) {
|
||||||
return TRAN_DICT_CONTAINER.get(translationLanguages);
|
return TRAN_DICT_CONTAINER.get(translationLanguages);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addTranslationDict(TranslationDict translationDict) {
|
public void addTranslationDict(TranslationDict translationDict) {
|
||||||
TranslationEnum translationLanguages = translationDict.getTranslationLanguages();
|
String translationLanguages = translationDict.getTranslationLanguages();
|
||||||
|
|
||||||
Map<String, String> languageDict = TRAN_DICT_CONTAINER.get(translationLanguages);
|
Map<String, String> languageDict = TRAN_DICT_CONTAINER.get(translationLanguages);
|
||||||
if (languageDict == null) {
|
if (languageDict == null) {
|
||||||
|
@ -60,7 +49,7 @@ public class TranslationContainer implements TranslationApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteTranslationDict(TranslationEnum translationLanguages, String tranCode) {
|
public void deleteTranslationDict(String translationLanguages, String tranCode) {
|
||||||
Map<String, String> languageDict = TRAN_DICT_CONTAINER.get(translationLanguages);
|
Map<String, String> languageDict = TRAN_DICT_CONTAINER.get(translationLanguages);
|
||||||
|
|
||||||
if (languageDict == null) {
|
if (languageDict == null) {
|
||||||
|
|
Loading…
Reference in New Issue