diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gregtech/api/util/GT_LanguageManager.java | 28 | ||||
-rw-r--r-- | src/main/java/gregtech/loaders/preload/GT_PreLoad.java | 3 |
2 files changed, 25 insertions, 6 deletions
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 @@ -37,6 +37,11 @@ public class GT_LanguageManager { */ 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. */ public static boolean i18nPlaceholder = true; @@ -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) { diff --git a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java index 33b023268c..f57b2e3b92 100644 --- a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java +++ b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java @@ -104,6 +104,7 @@ public class GT_PreLoad { GT_FML_LOGGER.info("User lang is " + userLang); if (userLang.equals("en_US")) { GT_FML_LOGGER.info("Loading GregTech.lang"); + GT_LanguageManager.isEN_US = true; GT_LanguageManager.sEnglishFile = new Configuration(new File(languageDir, "GregTech.lang")); } else { String l10nFileName = "GregTech_" + userLang + ".lang"; @@ -113,10 +114,12 @@ public class GT_PreLoad { GT_LanguageManager.sEnglishFile = new Configuration(l10nFile); } else { GT_FML_LOGGER.info("Cannot find l10n file " + l10nFileName + ", fallback to GregTech.lang"); + GT_LanguageManager.isEN_US = true; GT_LanguageManager.sEnglishFile = new Configuration(new File(languageDir, "GregTech.lang")); } } } else { + GT_LanguageManager.isEN_US = true; GT_LanguageManager.sEnglishFile = new Configuration(new File(languageDir, "GregTech.lang")); } GT_LanguageManager.sEnglishFile.load(); |