update timi-lang

This commit is contained in:
Timi
2025-11-06 14:52:13 +08:00
parent 44d55c0ed6
commit 05e15998f5
5 changed files with 97 additions and 50 deletions

View File

@ -3,17 +3,17 @@ package com.imyeyu.api.modules.common.task;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.imyeyu.java.TimiJava;
import com.imyeyu.java.bean.Language;
import com.imyeyu.java.bean.timi.TimiCode;
import com.imyeyu.java.bean.timi.TimiException;
import com.imyeyu.java.ref.Ref;
import com.imyeyu.network.FormMap;
import com.imyeyu.api.config.dbsource.TimiServerDBConfig;
import com.imyeyu.api.modules.common.bean.SettingKey;
import com.imyeyu.api.modules.common.entity.Multilingual;
import com.imyeyu.api.modules.common.service.MultilingualService;
import com.imyeyu.api.modules.common.service.SettingService;
import com.imyeyu.java.TimiJava;
import com.imyeyu.java.bean.Language;
import com.imyeyu.java.bean.timi.TimiCode;
import com.imyeyu.java.bean.timi.TimiException;
import com.imyeyu.java.ref.Ref;
import com.imyeyu.network.ArgMap;
import com.imyeyu.utils.Digest;
import com.imyeyu.utils.Time;
import lombok.AllArgsConstructor;
@ -134,7 +134,7 @@ public class MultilingualTranslateTask {
String appId = settingService.getAsString(SettingKey.MULTILINGUAL_TRANSLATE_APP_ID);
String key = settingService.getAsString(SettingKey.MULTILINGUAL_TRANSLATE_KEY);
FormMap<String, Object> args = new FormMap<>();
ArgMap<String, Object> args = new ArgMap<>();
args.put("q", text);
args.put("from", BaiduLanguage.ZH.toString().toLowerCase());
args.put("to", to.toString().toLowerCase());
@ -143,7 +143,7 @@ public class MultilingualTranslateTask {
args.put("sign", Digest.md5(appId + text + random + key));
String response = Request.post(settingService.getAsString(SettingKey.MULTILINGUAL_TRANSLATE_API))
.bodyForm(args.build())
.bodyForm(args.toNameValuePair())
.execute()
.returnContent()
.asString();

View File

@ -47,7 +47,8 @@ public class GsonSerializerAdapter implements JsonSerializer<Object> {
if (TimiJava.isNotEmpty(multiLangId)) {
Long langId = Long.parseLong(multiLangId);
if (redisMultilingual.map(TimiServerAPI.getUserLanguage()) instanceof RedisLanguage rl) {
Ref.setFieldValue(value, field, rl.textArgs(langId, (Object) multiField.args()));
// TODO 支持插值参数
Ref.setFieldValue(value, field, rl.text(langId));
}
}
}

View File

@ -3,18 +3,18 @@ package com.imyeyu.api.util;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import com.imyeyu.java.ref.Ref;
import com.imyeyu.lang.mapper.AbstractLanguageMapper;
import com.imyeyu.api.TimiServerAPI;
import com.imyeyu.api.modules.common.bean.SettingKey;
import com.imyeyu.api.modules.common.entity.Multilingual;
import com.imyeyu.api.modules.common.entity.Setting;
import com.imyeyu.api.modules.common.service.SettingService;
import com.imyeyu.api.modules.system.bean.ServerFile;
import com.imyeyu.java.ref.Ref;
import com.imyeyu.lang.mapper.AbstractLanguageMapper;
import com.imyeyu.spring.util.GlobalReturnHandler;
import com.imyeyu.spring.util.Redis;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.jgit.api.ArchiveCommand;
import org.eclipse.jgit.archive.TarFormat;
import org.springframework.beans.factory.annotation.Value;
@ -81,9 +81,9 @@ public class InitApplication implements ApplicationRunner {
private void initMultilingual() {
// redisLanguage.flushAll();
globalReturnHandler.setMultilingualHeader(key -> {
globalReturnHandler.setMultilingualHeader(mapping -> {
AbstractLanguageMapper map = redisMultilingual.map(TimiServerAPI.getUserLanguage());
return map.text(key);
return map.textArgs(mapping.getMsgKey(), mapping.getMsgArgs());
});
}

View File

@ -1,14 +1,10 @@
package com.imyeyu.api.util;
import com.imyeyu.java.TimiJava;
import com.imyeyu.java.bean.Language;
import com.imyeyu.lang.mapper.AbstractLanguageMapper;
import com.imyeyu.api.TimiServerAPI;
import com.imyeyu.api.modules.common.service.MultilingualService;
import com.imyeyu.java.bean.Language;
import com.imyeyu.lang.mapper.AbstractLanguageMapper;
import org.jcodec.api.NotSupportedException;
import org.springframework.lang.Nullable;
import java.util.Arrays;
/**
* @author 夜雨
@ -45,33 +41,7 @@ public class RedisLanguage extends AbstractLanguageMapper {
}
}
@Override
public String text(String key, String def) {
String result = text(key);
return result.equals(key) ? def : result;
}
@Override
public String textArgs(String key, Object... args) {
String result = text(key);
if (result.equals(key)) {
// 没有映射值
return result + Arrays.toString(args);
}
FORMAT.applyPattern(result);
return FORMAT.format(args);
}
public String text(Long id) {
return TimiServerAPI.applicationContext.getBean(MultilingualService.class).get(language, id);
}
public String textArgs(Long id, @Nullable Object... args) {
String result = text(id);
if (TimiJava.isEmpty(args)) {
return result;
}
FORMAT.applyPattern(result);
return FORMAT.format(args);
}
}