LibJF and some improvements
This commit is contained in:
parent
2e3c7dd8df
commit
5bde64b3ca
|
@ -1,4 +1,4 @@
|
|||
image: gradle:alpine
|
||||
image: gradle:jdk16
|
||||
|
||||
variables:
|
||||
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
|
||||
|
|
100
build.gradle
100
build.gradle
|
@ -1,28 +1,12 @@
|
|||
plugins {
|
||||
id 'fabric-loom' version '0.5.42'
|
||||
id 'maven-publish'
|
||||
id "com.modrinth.minotaur" version "1.1.0"
|
||||
id "com.matthewprenger.cursegradle" version "1.4.0"
|
||||
}
|
||||
apply from: "https://gitlab.com/-/snippets/2121059/raw/master/jfbase.gradle"
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
url "https://jitpack.io"
|
||||
name = 'TerraformersMC'
|
||||
url = 'https://maven.terraformersmc.com/'
|
||||
}
|
||||
}
|
||||
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
|
||||
archivesBaseName = project.archives_base_name
|
||||
version = "${project.mod_version}+${project.minecraft_version}"
|
||||
group = project.maven_group
|
||||
|
||||
repositories {
|
||||
maven { url = "https://maven.terraformersmc.com/"; name = "ModMenu" }
|
||||
maven { url = "https://maven.shedaniel.me/"; name = "Cloth" }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
//to change the versions see the gradle.properties file
|
||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
||||
|
@ -32,81 +16,7 @@ dependencies {
|
|||
// Fabric API. This is technically optional, but you probably want it anyway.
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||
|
||||
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
|
||||
// You may need to force-disable transitiveness on them.
|
||||
modCompile "com.github.vbauer:yandex-translate-api:1.4.2"
|
||||
include "com.github.vbauer:yandex-translate-api:1.4.2"
|
||||
download("https://gitlab.com/jfmods/LibJF/-/jobs/artifacts/master/raw/latest-dev.jar?job=build_test", "libjf")
|
||||
|
||||
modCompile "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable"
|
||||
include "me.sargunvohra.mcmods:autoconfig1u:3.2.0-unstable"
|
||||
include modApi ("me.shedaniel.cloth:cloth-config-fabric:4.11.14")
|
||||
|
||||
modCompile("com.terraformersmc:modmenu:1.16.7")
|
||||
modImplementation "com.terraformersmc:modmenu:1.16.9"
|
||||
}
|
||||
|
||||
processResources {
|
||||
inputs.property "version", project.version
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include "fabric.mod.json"
|
||||
expand "version": project.version
|
||||
}
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude "fabric.mod.json"
|
||||
}
|
||||
}
|
||||
|
||||
// ensure that the encoding is set to UTF-8, no matter what the system default is
|
||||
// this fixes some edge cases with special characters not displaying correctly
|
||||
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
|
||||
tasks.withType(JavaCompile) {
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
||||
// if it is present.
|
||||
// If you remove this task, sources will not be generated.
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
classifier = "sources"
|
||||
from sourceSets.main.allSource
|
||||
}
|
||||
|
||||
jar {
|
||||
from "LICENSE"
|
||||
}
|
||||
|
||||
import com.modrinth.minotaur.TaskModrinthUpload
|
||||
|
||||
task publishModrinth (type: TaskModrinthUpload){
|
||||
token = System.getenv("MODRINTH_API_TOKEN")
|
||||
projectId = 'YnU8kpyc'
|
||||
versionNumber = "${project.mod_version}"
|
||||
uploadFile = remapJar
|
||||
addGameVersion("${project.minecraft_version}")
|
||||
addLoader('fabric')
|
||||
versionName = "[${project.minecraft_version}] ${project.mod_version}"
|
||||
afterEvaluate {
|
||||
tasks.publishModrinth.dependsOn(remapJar)
|
||||
tasks.publishModrinth.dependsOn(sourcesJar)
|
||||
}
|
||||
}
|
||||
|
||||
curseforge {
|
||||
apiKey = System.getenv("CURSEFORGE_API_TOKEN") == null ? "###" : System.getenv("CURSEFORGE_API_TOKEN")
|
||||
project {
|
||||
id = "394823"
|
||||
releaseType = 'release'
|
||||
addGameVersion "Fabric"
|
||||
addGameVersion "${project.minecraft_version}"
|
||||
changelog = ""
|
||||
mainArtifact(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar"))
|
||||
mainArtifact.displayName = "[${project.minecraft_version}] ${project.mod_version}"
|
||||
afterEvaluate {
|
||||
uploadTask.dependsOn(remapJar)
|
||||
}
|
||||
}
|
||||
options {
|
||||
forgeGradleIntegration = false
|
||||
}
|
||||
}
|
|
@ -3,12 +3,18 @@ org.gradle.jvmargs=-Xmx1G
|
|||
# Fabric Properties
|
||||
# check these on https://modmuss50.me/fabric.html
|
||||
minecraft_version=1.16.5
|
||||
yarn_mappings=1.16.5+build.4
|
||||
loader_version=0.11.1
|
||||
yarn_mappings=1.16.5+build.9
|
||||
loader_version=0.11.3
|
||||
# Mod Properties
|
||||
mod_version=1.1.0
|
||||
mod_version=1.2.0
|
||||
maven_group=io.gitlab.jfronny
|
||||
archives_base_name=translater
|
||||
# Dependencies
|
||||
# check this on https://modmuss50.me/fabric.html
|
||||
fabric_version=0.30.3+1.16
|
||||
fabric_version=0.34.2+1.16
|
||||
|
||||
modrinth_id=YnU8kpyc
|
||||
modrinth_required_dependencies=7a9qcRLy
|
||||
modrinth_optional_dependencies=Gz5wa6j2
|
||||
curseforge_id=394823
|
||||
curseforge_required_dependencies=libjf
|
||||
curseforge_optional_dependencies=modmenu
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
@ -1,26 +1,21 @@
|
|||
package io.gitlab.jfronny.translater;
|
||||
|
||||
import me.sargunvohra.mcmods.autoconfig1u.ConfigData;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.annotation.Config;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.shadowed.blue.endless.jankson.Comment;
|
||||
import io.gitlab.jfronny.libjf.config.Entry;
|
||||
import io.gitlab.jfronny.libjf.config.JfConfig;
|
||||
|
||||
@Config(name = "TranslaterCF")
|
||||
public class Cfg implements ConfigData {
|
||||
@Comment("NOTE: remove the cache after you change the config!\nRegenerating the cache can take up to 3 hours for vanilla (5000 strings)\nWatch the log when in doubt\n\nThe amount of times to translate each element")
|
||||
public int rounds = 5;
|
||||
@Comment("Whether to fully break the texts content by translating from the wrong language (enable for complete breaking)")
|
||||
public boolean breakFully = false;
|
||||
@Comment("The language to translate to - Leave empty for auto-detection (might break text even more)")
|
||||
public String targetLanguage = "en";
|
||||
@Comment("Significantly slows down the loading time but gives a visual of the progress. Values: Full, Console, None")
|
||||
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
|
||||
public progressMode renderProgress = progressMode.None;
|
||||
@Comment("Use this if something is broken. This initiates the regeneration of the cache")
|
||||
@ConfigEntry.Gui.RequiresRestart
|
||||
public boolean forceRegenerate = false;
|
||||
public class Cfg implements JfConfig {
|
||||
@Entry
|
||||
public static int rounds = 5;
|
||||
@Entry
|
||||
public static boolean breakFully = false;
|
||||
@Entry
|
||||
public static String targetLanguage = "en";
|
||||
@Entry
|
||||
public static ProgressMode renderProgress = ProgressMode.None;
|
||||
@Entry
|
||||
public static boolean forceRegenerate = false;
|
||||
|
||||
public enum progressMode {
|
||||
public enum ProgressMode {
|
||||
Full,
|
||||
Console,
|
||||
None
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
package io.gitlab.jfronny.translater;
|
||||
|
||||
import io.github.prospector.modmenu.api.ConfigScreenFactory;
|
||||
import io.github.prospector.modmenu.api.ModMenuApi;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
|
||||
|
||||
public class ModMenu implements ModMenuApi {
|
||||
@Override
|
||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||
return screen -> AutoConfig.getConfigScreen(Cfg.class, screen).get();
|
||||
}
|
||||
}
|
|
@ -4,13 +4,10 @@ import io.gitlab.jfronny.translater.transformer.CachingTransformer;
|
|||
import io.gitlab.jfronny.translater.transformer.TransformingMap;
|
||||
import io.gitlab.jfronny.translater.transformer.TranslatingTransformer;
|
||||
import io.gitlab.jfronny.translater.translation.WurstGoogleBackend;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.serializer.JanksonConfigSerializer;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.Level;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
|
@ -18,43 +15,26 @@ import java.util.Map;
|
|||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class Translater implements ClientModInitializer {
|
||||
public static final String MOD_NAME = "Translater";
|
||||
public static final String MOD_ID = "translater";
|
||||
private static final Logger logger;
|
||||
public static Cfg cfg;
|
||||
public static final Logger LOGGER = LogManager.getFormatterLogger(MOD_ID);
|
||||
private static TransformingMap map;
|
||||
|
||||
static {
|
||||
AutoConfig.register(Cfg.class, JanksonConfigSerializer::new);
|
||||
cfg = AutoConfig.getConfigHolder(Cfg.class).getConfig();
|
||||
logger = LogManager.getFormatterLogger(MOD_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
|
||||
}
|
||||
|
||||
public static boolean Gui() {
|
||||
return cfg.renderProgress == Cfg.progressMode.Full;
|
||||
return Cfg.renderProgress == Cfg.ProgressMode.Full;
|
||||
}
|
||||
public static boolean Cli() {
|
||||
return cfg.renderProgress == Cfg.progressMode.Full || cfg.renderProgress == Cfg.progressMode.Console;
|
||||
}
|
||||
|
||||
public static void Warn(String msg) {
|
||||
logger.log(Level.WARN, "[" + MOD_NAME + "] " + msg);
|
||||
}
|
||||
|
||||
public static void Log(String msg) {
|
||||
logger.log(Level.INFO, "[" + MOD_NAME + "] " + msg);
|
||||
return Cfg.renderProgress == Cfg.ProgressMode.Full || Cfg.renderProgress == Cfg.ProgressMode.Console;
|
||||
}
|
||||
|
||||
public static TransformingMap getMap(Map<String, String> base) {
|
||||
if (map == null) {
|
||||
map = new TransformingMap(base, new CachingTransformer(new TranslatingTransformer<>(new WurstGoogleBackend())));
|
||||
//map = new TransformingMap(base, new CachingTransformer(new TranslatingTransformer<>(new EmptyBackend())));
|
||||
//map = new TransformingMap(base, new CachingTransformer(new TranslatingTransformer<>(new YandexTranslationBackend())));
|
||||
map.init();
|
||||
}
|
||||
return map;
|
||||
|
|
|
@ -29,7 +29,7 @@ public class MixinLanguage {
|
|||
@Inject(at = @At("HEAD"), method = "setInstance")
|
||||
private static void languageSetInstance(Language language, CallbackInfo ci) {
|
||||
if (FIELD == null) {
|
||||
Translater.Warn("Could not set language map, field not found");
|
||||
Translater.LOGGER.warn("Could not set language map, field not found");
|
||||
return;
|
||||
}
|
||||
if (language instanceof TranslationStorage) {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package io.gitlab.jfronny.translater.mixin;
|
||||
|
||||
import io.gitlab.jfronny.libjf.Libjf;
|
||||
import io.gitlab.jfronny.translater.Cfg;
|
||||
import io.gitlab.jfronny.translater.Translater;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
|
||||
|
@ -23,6 +25,7 @@ public class Plugin implements IMixinConfigPlugin {
|
|||
@SuppressWarnings("ReferenceToMixin")
|
||||
@Override
|
||||
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
|
||||
Libjf.registerConfig(Translater.MOD_ID, Cfg.class);
|
||||
if (Objects.equals(mixinClassName, MixinLanguage.class.getName()))
|
||||
return true;
|
||||
else if (Objects.equals(mixinClassName, MixinMinecraftClient.class.getName()))
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
package io.gitlab.jfronny.translater.transformer;
|
||||
|
||||
import io.gitlab.jfronny.libjf.Libjf;
|
||||
import io.gitlab.jfronny.translater.Cfg;
|
||||
import io.gitlab.jfronny.translater.Translater;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.ConfigManager;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Properties;
|
||||
|
||||
public class CachingTransformer implements ITransformer {
|
||||
private static final File cacheFile = new File(FabricLoader.getInstance().getConfigDir().toFile(), "Translater.cache");
|
||||
private static final Path cacheFile = FabricLoader.getInstance().getConfigDir().resolve(Translater.MOD_ID + ".cache");
|
||||
Properties cache;
|
||||
private final ITransformer transformer;
|
||||
|
||||
|
@ -22,7 +23,7 @@ public class CachingTransformer implements ITransformer {
|
|||
if (!cache.containsKey(str)) {
|
||||
String transformed = transformer.transform(str);
|
||||
if (transformed == null) {
|
||||
Translater.Warn("Very concerning, got null for non-null key " + str);
|
||||
Translater.LOGGER.warn("Very concerning, got null for non-null key " + str);
|
||||
return null;
|
||||
}
|
||||
cache.put(str, transformed);
|
||||
|
@ -35,33 +36,32 @@ public class CachingTransformer implements ITransformer {
|
|||
public CachingTransformer(ITransformer baseTransformer) {
|
||||
transformer = baseTransformer;
|
||||
cache = new Properties();
|
||||
if (Translater.cfg.forceRegenerate) {
|
||||
Translater.cfg.forceRegenerate = false;
|
||||
((ConfigManager<Cfg>) AutoConfig.getConfigHolder(Cfg.class)).save();
|
||||
if (Cfg.forceRegenerate) {
|
||||
Cfg.forceRegenerate = false;
|
||||
Libjf.getConfigs().get(Translater.MOD_ID).write();
|
||||
} else {
|
||||
//Load cache
|
||||
if (cacheFile.exists()) {
|
||||
try {
|
||||
Translater.Log("Loading cache");
|
||||
FileInputStream inS = new FileInputStream(cacheFile);
|
||||
if (Files.exists(cacheFile) && Files.isRegularFile(cacheFile)) {
|
||||
Translater.LOGGER.info("Loading cache");
|
||||
try (InputStream inS = Files.newInputStream(cacheFile)) {
|
||||
cache.load(inS);
|
||||
inS.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
Translater.Log("Initializing default cache");
|
||||
//Save default cache if parameters are default
|
||||
if (!Translater.cfg.breakFully && Translater.cfg.rounds == 5) {
|
||||
try {
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
InputStream inS = classLoader.getResourceAsStream("namecache.ini.vanilla");
|
||||
if (inS != null) {
|
||||
if (!Cfg.breakFully && Cfg.rounds == 5) {
|
||||
Translater.LOGGER.info("Initializing default cache");
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
InputStream inS = classLoader.getResourceAsStream("namecache.ini");
|
||||
if (inS != null) {
|
||||
try {
|
||||
cache.load(inS);
|
||||
inS.close();
|
||||
Save();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -70,10 +70,8 @@ public class CachingTransformer implements ITransformer {
|
|||
}
|
||||
|
||||
private void Save() {
|
||||
try {
|
||||
FileOutputStream outS = new FileOutputStream(cacheFile);
|
||||
try (OutputStream outS = Files.newOutputStream(cacheFile)) {
|
||||
cache.store(outS, "---Lang---");
|
||||
outS.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public class TransformingMap implements Map<String, String> {
|
|||
for (String value : strings) {
|
||||
if (Translater.Cli()) {
|
||||
initI++;
|
||||
Translater.Log("Transforming " + initI + "/" + initMax);
|
||||
Translater.LOGGER.info("Transforming " + initI + "/" + initMax);
|
||||
}
|
||||
if (Translater.Gui() && initI % 10 == 0)
|
||||
((IMinecraftClientMixin) MinecraftClient.getInstance()).forceRender();
|
||||
|
@ -59,6 +59,8 @@ public class TransformingMap implements Map<String, String> {
|
|||
|
||||
@Override
|
||||
public String get(Object o) {
|
||||
if (o instanceof String && ((String)o).startsWith("translater."))
|
||||
return backer.get(o);
|
||||
return transformer.transform(backer.get(o));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package io.gitlab.jfronny.translater.transformer;
|
||||
|
||||
import io.gitlab.jfronny.translater.Cfg;
|
||||
import io.gitlab.jfronny.translater.Translater;
|
||||
import io.gitlab.jfronny.translater.translation.ITranslationBackend;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
@ -10,9 +11,9 @@ import java.util.Set;
|
|||
|
||||
//The actual translation methods
|
||||
public class TranslatingTransformer<T> implements ITransformer {
|
||||
private Random rnd;
|
||||
private Collection<T> languages;
|
||||
private ITranslationBackend<T> backend;
|
||||
private final Random rnd;
|
||||
private final Collection<T> languages;
|
||||
private final ITranslationBackend<T> backend;
|
||||
@Override
|
||||
public String transform(String str) {
|
||||
try {
|
||||
|
@ -56,8 +57,8 @@ public class TranslatingTransformer<T> implements ITransformer {
|
|||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
Translater.Warn("Failed to transform: \"" + str + "\" (" + str.length() + " characters)");
|
||||
Translater.Warn("Please report this bug with the mod containing the lang file");
|
||||
Translater.LOGGER.warn("Failed to transform: \"" + str + "\" (" + str.length() + " characters)");
|
||||
Translater.LOGGER.warn("Please report this bug with the mod containing the lang file");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
@ -67,22 +68,22 @@ public class TranslatingTransformer<T> implements ITransformer {
|
|||
if (Translater.stringInvalid(str))
|
||||
return str;
|
||||
|
||||
T startLang = StringUtils.isAlpha(Translater.cfg.targetLanguage) && Translater.cfg.targetLanguage.length() == 2
|
||||
? backend.parseLang(Translater.cfg.targetLanguage)
|
||||
T startLang = StringUtils.isAlpha(Cfg.targetLanguage) && Cfg.targetLanguage.length() == 2
|
||||
? backend.parseLang(Cfg.targetLanguage)
|
||||
: backend.detect(str);
|
||||
String currentState = str;
|
||||
T currentLang = startLang;
|
||||
for (int i = 0; i < Translater.cfg.rounds; i++) {
|
||||
for (int i = 0; i < Cfg.rounds; i++) {
|
||||
T newLang = selectRandom();
|
||||
currentState = backend.translate(currentState, newLang, Translater.cfg.breakFully ? selectRandom() : currentLang);
|
||||
currentState = backend.translate(currentState, newLang, Cfg.breakFully ? selectRandom() : currentLang);
|
||||
currentLang = newLang;
|
||||
}
|
||||
currentState = backend.translate(currentState, startLang, currentLang);
|
||||
if (Translater.Cli())
|
||||
Translater.Log("Transformed: \"" + str + "\" to: \"" + currentState + "\"");
|
||||
Translater.LOGGER.info("Transformed: \"" + str + "\" to: \"" + currentState + "\"");
|
||||
return currentState;
|
||||
} catch (Exception e) {
|
||||
Translater.Warn("Failed to break: \"" + str + "\" (" + str.length() + " characters). Is your API key valid?");
|
||||
Translater.LOGGER.warn("Failed to break: \"" + str + "\" (" + str.length() + " characters). Is your API key valid?");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,16 @@
|
|||
{
|
||||
"text.autoconfig.TranslaterCF.title": "Translater",
|
||||
"text.autoconfig.TranslaterCF.option.rounds": "Rounds",
|
||||
"text.autoconfig.TranslaterCF.option.breakFully": "Break Fully",
|
||||
"text.autoconfig.TranslaterCF.option.key": "API Key",
|
||||
"text.autoconfig.TranslaterCF.option.targetLanguage": "Target Language",
|
||||
"text.autoconfig.TranslaterCF.option.renderProgress": "Progress Renderer ",
|
||||
"text.autoconfig.TranslaterCF.option.forceRegenerate": "Force Regenerate"
|
||||
"translater.jfconfig.title": "Translater",
|
||||
"translater.jfconfig.rounds": "Rounds",
|
||||
"translater.jfconfig.rounds.tooltip": "The amount of times to translate each element",
|
||||
"translater.jfconfig.breakFully": "Break Fully",
|
||||
"translater.jfconfig.breakFully.tooltip": "Whether to fully break the texts content by translating from the wrong language (enable for complete breaking)",
|
||||
"translater.jfconfig.targetLanguage": "Target Language",
|
||||
"translater.jfconfig.targetLanguage.tooltip": "The language to translate to - Leave empty for auto-detection (might break text even more)",
|
||||
"translater.jfconfig.renderProgress": "Progress Renderer",
|
||||
"translater.jfconfig.renderProgress.tooltip": "Significantly slows down the loading time but gives a visual of the progress. Values: Full, Console, None",
|
||||
"translater.jfconfig.forceRegenerate": "Force Regenerate",
|
||||
"translater.jfconfig.forceRegenerate.tooltip": "Use this if something is broken. This initiates the regeneration of the cache",
|
||||
"translater.jfconfig.enum.ProgressMode.Full": "Full",
|
||||
"translater.jfconfig.enum.ProgressMode.Console": "Console",
|
||||
"translater.jfconfig.enum.ProgressMode.None": "None"
|
||||
}
|
|
@ -15,12 +15,7 @@
|
|||
"icon": "assets/translater/icon.png",
|
||||
"environment": "client",
|
||||
"entrypoints": {
|
||||
"client": [
|
||||
"io.gitlab.jfronny.translater.Translater"
|
||||
],
|
||||
"modmenu": [
|
||||
"io.gitlab.jfronny.translater.ModMenu"
|
||||
]
|
||||
"libjf:config": ["io.gitlab.jfronny.translater.Cfg"]
|
||||
},
|
||||
"mixins": [
|
||||
"translater.mixins.json"
|
||||
|
|
Loading…
Reference in New Issue