diff options
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r-- | src/main/java/gregtech/api/util/GT_LanguageManager.java | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java index 66cd7e9b50..899a3e731b 100644 --- a/src/main/java/gregtech/api/util/GT_LanguageManager.java +++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java @@ -2,19 +2,23 @@ package gregtech.api.util; import cpw.mods.fml.common.registry.LanguageRegistry; import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; + import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; +import java.lang.reflect.Field; import java.util.HashMap; +import java.util.Map; import java.util.Map.Entry; import static gregtech.api.enums.GT_Values.E; public class GT_LanguageManager { - public static final HashMap<String, String> TEMPMAP = new HashMap<String, String>(), BUFFERMAP = new HashMap<String, String>(), LANGMAP = new HashMap<String, String>(); + public static final HashMap<String, String> TEMPMAP = new HashMap<>(), BUFFERMAP = new HashMap<>(), LANGMAP = new HashMap<>(); public static Configuration sEnglishFile; public static String sLanguage = "en_US"; public static boolean sUseEnglishFile = false; @@ -78,8 +82,9 @@ public class GT_LanguageManager { rTranslation = StatCollector.translateToLocal(tTrimmedKey); if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.equals(rTranslation)) { if (aKey.endsWith(".name")) { - rTranslation = StatCollector.translateToLocal(tTrimmedKey.substring(0, tTrimmedKey.length() - 5)); - if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.substring(0, tTrimmedKey.length() - 5).equals(rTranslation)) { + String trimmedKeyNoName = tTrimmedKey.substring(0, tTrimmedKey.length() - 5); + rTranslation = StatCollector.translateToLocal(trimmedKeyNoName); + if (GT_Utility.isStringInvalid(rTranslation) || trimmedKeyNoName.equals(rTranslation)) { return aKey; } } else { @@ -365,5 +370,23 @@ public class GT_LanguageManager { addStringLocalization("Item_DESCRIPTION_Index_500", "Turbine Efficiency (Loose): %s"); addStringLocalization("Item_DESCRIPTION_Index_501", "Optimal Steam flow (Loose): %s L/t"); } - + + @SuppressWarnings("rawtypes, unchecked") + public static void propagateLocalizationServerSide() { + if (!GT_Values.GT.isServerSide()) + return; + try { + Class cls = Class.forName("net.minecraft.util.StringTranslate"); + Field languageList = cls.getDeclaredField("languageList"); + languageList.setAccessible(true); + Field instance = cls.getDeclaredField("instance"); + instance.setAccessible(true); + Object m = languageList.get(instance.get(null)); + if (!(m instanceof Map)) + return; + ((Map)m).putAll(LANGMAP); + } catch (Throwable ex) { + ex.printStackTrace(); + } + } } |