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

82
pom.xml
View File

@ -30,6 +30,57 @@
</repository>
</repositories>
<profiles>
<profile>
<id>dev-windows</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<native.classifier>windows-x86_64</native.classifier>
</properties>
</profile>
<profile>
<id>prod-linux</id>
<dependencies>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>7.1.1-1.5.12</version>
<classifier>linux-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<version>4.11.0-1.5.12</version>
<classifier>linux-x86_64</classifier>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<classifier>windows-x86_64</classifier>
</exclude>
<exclude>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<classifier>windows-x86_64</classifier>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
@ -57,17 +108,17 @@
<dependency>
<groupId>com.imyeyu.spring</groupId>
<artifactId>timi-spring</artifactId>
<version>0.0.1</version>
<version>0.0.2</version>
</dependency>
<dependency>
<groupId>com.imyeyu.network</groupId>
<artifactId>timi-network</artifactId>
<version>0.0.1</version>
<version>0.0.2</version>
</dependency>
<dependency>
<groupId>com.imyeyu.lang</groupId>
<artifactId>timi-lang</artifactId>
<version>0.0.1</version>
<version>0.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
@ -167,6 +218,25 @@
<artifactId>jcodec-javase</artifactId>
<version>0.2.5</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.5.12</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>7.1.1-1.5.12</version>
<scope>provided</scope>
<classifier>windows-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<version>4.11.0-1.5.12</version>
<scope>provided</scope>
<classifier>windows-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
@ -177,5 +247,11 @@
<artifactId>commons-codec</artifactId>
<version>1.17.0</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.9.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

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