【i18n】删掉语种枚举,用字典替代

pull/3/head
fengshuonan 2021-01-26 22:21:11 +08:00
parent 6e6e4251ad
commit 164a2c9186
6 changed files with 18 additions and 111 deletions

View File

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

View File

@ -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;
}
/**
* typecode
*
* @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;
}
}

View File

@ -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;
/** /**
* *

View File

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

View File

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

View File

@ -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>
* keyvaluekey valuekey * keyvaluekey valuekey
*/ */
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) {