aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/util/GT_LanguageManager.java28
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_PreLoad.java3
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();