Skip to content

Commit

Permalink
Improve Translating
Browse files Browse the repository at this point in the history
  • Loading branch information
IntegerLimit committed Feb 17, 2024
1 parent 1fc7487 commit cb2aadf
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 49 deletions.
6 changes: 0 additions & 6 deletions src/main/java/com/nomiceu/nomilabs/groovy/GroovyHelpers.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,10 @@ public static class TranslationHelpers {
public static String translate(String key, Object... params) {
return LabsTranslate.translate(key, params);
}
public static String translateWithBackup(String key, String backup, Object... params) {
return LabsTranslate.translateWithBackup(key, backup, params);
}

public static String translateFormat(String key, TooltipHelper.GTFormatCode format, Object... params) {
return LabsTranslate.translateFormat(key, format, params);
}
public static String translateWithBackupFormat(String key, String backup, TooltipHelper.GTFormatCode format, Object... params) {
return LabsTranslate.translateWithBackupFormat(key, backup, format, params);
}

public static String format(String str, TextFormatting... formats) {
return LabsTranslate.format(str, formats);
Expand Down
49 changes: 20 additions & 29 deletions src/main/java/com/nomiceu/nomilabs/remap/LabsMessageHelper.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.nomiceu.nomilabs.remap;

import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.common.StartupQuery;

import static com.nomiceu.nomilabs.util.LabsTranslate.format;
import static com.nomiceu.nomilabs.util.LabsTranslate.translateWithBackup;
import static com.nomiceu.nomilabs.util.LabsTranslate.translate;

public class LabsMessageHelper {
public static void sendMessage(MessageType type, String[] message) {
Expand All @@ -27,47 +25,40 @@ public enum MessageType {
public static class Components {
public static String[] getIntro() {
return new String[] {
translateWithBackup("nomilabs.fixer.intro.1", "This world must be remapped."),
translateWithBackup("nomilabs.fixer.intro.2", format("A Backup will be made.", TextFormatting.BOLD)),
translateWithBackup("nomilabs.fixer.intro.3", "Pressing 'No' will cancel world loading."),
translateWithBackup("nomilabs.fixer.intro.4",
format("Note that after the world is loaded with this, you CANNOT undo this!.", TextFormatting.RED)),
translateWithBackup("nomilabs.fixer.intro.5",
String.format("You %s have to load from the backup in order to load in a previous version!",
format("WILL", TextFormatting.UNDERLINE)))
translate("nomilabs.fixer.intro.1"),
translate("nomilabs.fixer.intro.2"),
translate("nomilabs.fixer.intro.3"),
"",
translate("nomilabs.fixer.do_not_revert.intro_addition"),
translate("nomilabs.fixer.do_not_revert.1"),
translate("nomilabs.fixer.do_not_revert.2")
};
}

public static String[] getIntroAddition() {
return new String[] {
translateWithBackup("nomilabs.fixer.intro.6",
format("The changes that must be made via Data Fixers have been printed to your log.",
TextFormatting.GRAY))
"",
translate("nomilabs.fixer.intro.addition")
};
}

public static String[] getModeCheck(String mode) {
return new String[] {
translateWithBackup("nomilabs.fixer.mode_check.1",
String.format("Are you sure you previously loaded this world with the pack mode '%s' ?",
format(mode, TextFormatting.YELLOW)), mode),
translateWithBackup("nomilabs.fixer.mode_check.2",
format(String.format("Launching with the wrong mode %s void items and/or blocks!",
format("WILL", TextFormatting.UNDERLINE) + TextFormatting.RED),
TextFormatting.RED)),
translateWithBackup("nomilabs.fixer.mode_check.3",
format("If you did not change it in your old instance, the default mode is 'Normal'.", TextFormatting.GRAY)),
translateWithBackup("nomilabs.fixer.mode_check.4",
"Press 'No' if you are not sure! (It will cancel world loading)")
translate("nomilabs.fixer.mode_check.1", mode),
translate("nomilabs.fixer.mode_check.2"),
translate("nomilabs.fixer.mode_check.3"),
translate("nomilabs.fixer.mode_check.4")
};
}

public static String[] getDoNotExit() {
return new String[] {
translateWithBackup("nomilabs.fixer.do_not_exit.1",
format("Do not interrupt the loading process!", TextFormatting.RED)),
translateWithBackup("nomilabs.fixer.do_not_exit.2",
"If interrupted, load again from the backup, as your world may be corrupted!")
translate("nomilabs.fixer.do_not_exit.1"),
translate("nomilabs.fixer.do_not_exit.2"),
"",
translate("nomilabs.fixer.do_not_revert.do_not_exit_addition"),
translate("nomilabs.fixer.do_not_revert.1"),
translate("nomilabs.fixer.do_not_revert.2")
};
}
}
Expand Down
35 changes: 25 additions & 10 deletions src/main/java/com/nomiceu/nomilabs/util/LabsTranslate.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,42 @@
package com.nomiceu.nomilabs.util;

import gregtech.client.utils.TooltipHelper;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.translation.I18n;

import java.util.Arrays;
import java.util.IllegalFormatException;

@SuppressWarnings("unused")
public class LabsTranslate {
public static String translate(String key, Object... params) {
return translateWithBackup(key, key, params);
if (LabsSide.isDedicatedServer()) return translateServerSide(key, params); // I18n is not available on Dedicated Servers
try {
return net.minecraft.client.resources.I18n.format(key, params);
} catch (Exception e) {
return translateServerSide(key, params);
}
}

public static String translateWithBackup(String key, String backup, Object... params) {
if (LabsSide.isDedicatedServer()) return backup; // I18n is not available on Dedicated Servers
@SuppressWarnings("deprecation")
private static String translateServerSide(String key, Object... params) {
try {
return I18n.format(key, params);
var localTranslated = I18n.translateToLocalFormatted(key, params);
if (!localTranslated.equals(key)) return localTranslated;

// Try fallback
var fallbackTranslated = I18n.translateToFallback(key);
if (!fallbackTranslated.equals(key) && params.length != 0) {
try {
fallbackTranslated = String.format(fallbackTranslated, params);
}
catch (IllegalFormatException var5) {
fallbackTranslated = "Format error: " + fallbackTranslated;
}
}
return fallbackTranslated;
} catch (Exception e) {
return backup;
return key;
}
}

Expand All @@ -28,10 +47,6 @@ public static String translateFormat(String key, TooltipHelper.GTFormatCode form
return format(translate(key, params), format);
}

public static String translateWithBackupFormat(String key, String backup, TooltipHelper.GTFormatCode format, Object... params) {
return format(translateWithBackup(key, backup, params), format);
}

public static String format(String str, TextFormatting... formats) {
return String.join("", Arrays.stream(formats).map(TextFormatting::toString).toArray(String[]::new))
+ str + TextFormatting.RESET;
Expand Down
12 changes: 8 additions & 4 deletions src/main/resources/assets/nomilabs/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,17 @@ fluid.tough_alloy=Tough Alloy
fluid.moltendarksoularium=Molten Dark Soularium

# Data Fixers
# Don't forget to update this in LabsMessageHelper.Components as well!
nomilabs.fixer.intro.1=This world must be remapped.
nomilabs.fixer.intro.2=§lA Backup will be made.§r
nomilabs.fixer.intro.3=Pressing 'No' will cancel world loading.
nomilabs.fixer.intro.4=§cNote that after the world is loaded with this, you §nCANNOT§r§c undo this!.§r
nomilabs.fixer.intro.5=You §nWILL§r have to load from the backup in order to load in a previous version!
nomilabs.fixer.intro.6=§7The changes that must be made via Data Fixers have been printed to your log.§r

nomilabs.fixer.intro.addition=§7The changes that must be made via Data Fixers have been printed to your log.§r

nomilabs.fixer.do_not_revert.intro_addition=§eWarning:§r
nomilabs.fixer.do_not_revert.do_not_exit_addition=§eReminder:§r

nomilabs.fixer.do_not_revert.1=§cAfter the world is loaded with this, you §nCANNOT§r§c undo this!.§r
nomilabs.fixer.do_not_revert.2=You §nWILL§r have to load from the backup in order to load in a previous version!

nomilabs.fixer.mode_check.1=Are you sure you previously loaded this world with the pack mode '§e%s§r' ?
nomilabs.fixer.mode_check.2=Launching with the wrong mode §nWILL§r void items and/or blocks!
Expand Down

0 comments on commit cb2aadf

Please sign in to comment.