From 22679363bf69144a961e28b0ff516f21922195e8 Mon Sep 17 00:00:00 2001 From: miozune Date: Sat, 30 Mar 2024 15:19:01 +0900 Subject: Fix GT lang not accepting en_US string updates (#2552) --- .../java/gregtech/api/util/GT_LanguageManager.java | 28 +++++++++++++++++----- 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'src/main/java/gregtech/api/util') diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java index 12e39eb774..b1bd45476a 100644 --- a/src/main/java/gregtech/api/util/GT_LanguageManager.java +++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java @@ -36,6 +36,11 @@ public class GT_LanguageManager { * it's not necessarily English, but on system it's always treated as English (as in, "default" language.) */ public static Configuration sEnglishFile; + /** + * If the game is running with en_US language. This does not get updated when user changes language in game; + * GT lang system cannot handle that anyway. + */ + public static boolean isEN_US; /** * If placeholder like %material should be used for writing lang entries to file. */ @@ -125,14 +130,25 @@ public class GT_LanguageManager { sEnglishFile.save(); hasUnsavedEntry = false; } - if (!tProperty.wasRead()) { - if (GregTech_API.sPostloadFinished) { - sEnglishFile.save(); - } else { - hasUnsavedEntry = true; + String translation = tProperty.getString(); + if (tProperty.wasRead()) { + if (isEN_US && !aEnglish.equals(translation)) { + tProperty.set(aEnglish); + markFileDirty(); + return aEnglish; } + } else { + markFileDirty(); + } + return translation; + } + + private static synchronized void markFileDirty() { + if (GregTech_API.sPostloadFinished) { + sEnglishFile.save(); + } else { + hasUnsavedEntry = true; } - return tProperty.getString(); } public static String getTranslation(String aKey) { -- cgit