update timi-lang

This commit is contained in:
Timi
2025-12-08 16:53:38 +08:00
parent 59b0153f3e
commit bc2c920705
8 changed files with 32 additions and 442 deletions

View File

@@ -1,14 +1,14 @@
package com.imyeyu.api.modules.common.entity;
import com.imyeyu.java.bean.timi.TimiCode;
import com.imyeyu.java.bean.timi.TimiException;
import com.imyeyu.java.ref.Ref;
import com.imyeyu.api.TimiServerAPI;
import com.imyeyu.spring.entity.Entity;
import com.imyeyu.java.bean.Language;
import com.imyeyu.spring.entity.Creatable;
import com.imyeyu.spring.entity.Deletable;
import com.imyeyu.spring.entity.IDEntity;
import com.imyeyu.spring.entity.Updatable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.lang.reflect.Field;
import java.io.Serializable;
/**
* @author 夜雨
@@ -16,52 +16,13 @@ import java.lang.reflect.Field;
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class Multilingual extends Entity {
public class Multilingual extends Language implements Serializable, IDEntity<Long>, Creatable, Updatable, Deletable {
protected String key;
protected Long id;
protected String zhCN;
protected Long createdAt;
protected String zhTW;
protected Long updatedAt;
protected String enUS;
protected String ruRU;
protected String koKR;
protected String jaJP;
protected String deDE;
/** @return 根据用户环境获取语言值 */
public String getValue() {
try {
Field field = Ref.getField(getClass(), TimiServerAPI.getUserLanguage().toString().replace("_", ""));
if (field == null) {
throw new TimiException(TimiCode.RESULT_NULL).msgKey("TODO not support language");
}
return Ref.getFieldValue(this, field, String.class);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
/**
* 获取指定语言值
*
* @param language 指定语言
* @return 值
*/
public String getValue(com.imyeyu.java.bean.Language language) {
try {
Field field = Ref.getField(getClass(), language.toString().replace("_", ""));
if (field == null) {
throw new TimiException(TimiCode.RESULT_NULL).msgKey("TODO not support language");
}
return Ref.getFieldValue(this, field, String.class);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
protected Long deletedAt;
}

View File

@@ -16,9 +16,9 @@ public interface MultilingualService extends UpdatableService<Multilingual> {
Long createIfNotExist(String key, String zhCN);
String get(Language language, Long id);
String get(Language.Enum language, Long id);
String getByKey(Language language, String key);
String getByKey(Language.Enum language, String key);
List<Multilingual> listByNotTranslate();
}

View File

@@ -59,7 +59,7 @@ public class MultilingualServiceImplement extends AbstractEntityService<Multilin
}
@Override
public String get(Language language, Long id) {
public String get(Language.Enum language, Long id) {
Multilingual result = redisLanguage.get(id);
if (result == null) {
result = mapper.select(id);
@@ -72,7 +72,7 @@ public class MultilingualServiceImplement extends AbstractEntityService<Multilin
}
@Override
public String getByKey(Language language, String key) {
public String getByKey(Language.Enum language, String key) {
Long languageId = redisLanguageMap.get(key);
if (languageId == null) {
Multilingual result = mapper.selectByKey(key);

View File

@@ -50,16 +50,16 @@ public class MultilingualTranslateTask {
@AllArgsConstructor
public enum BaiduLanguage {
ZH(Language.zh_CN),
EN(Language.en_US),
JP(Language.ja_JP),
KOR(Language.ko_KR),
RU(Language.ru_RU),
DE(Language.de_DE),
CHT(Language.zh_TW);
ZH(Language.Enum.zh_CN),
EN(Language.Enum.en_US),
JP(Language.Enum.ja_JP),
KOR(Language.Enum.ko_KR),
RU(Language.Enum.ru_RU),
DE(Language.Enum.de_DE),
CHT(Language.Enum.zh_TW);
/** 标准映射 */
final Language language;
final Language.Enum language;
/**
* 获取排除语言列表
@@ -104,7 +104,7 @@ public class MultilingualTranslateTask {
Map<String, String> result = doTranslate(sb.toString(), languageList.get(j));
for (Map.Entry<String, String> item : result.entrySet()) {
Multilingual multilingual = cnMap.get(item.getKey());
Language lang = languageList.get(j).language;
Language.Enum lang = languageList.get(j).language;
String value = multilingual.getValue(lang);
if (TimiJava.isEmpty(value)) {
Ref.setFieldValue(multilingual, lang.toString().replace("_", ""), item.getValue());