aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util/GT_LanguageManager.java
diff options
context:
space:
mode:
authorDream-Master <dream-master@gmx.net>2016-06-21 18:50:29 +0200
committerDream-Master <dream-master@gmx.net>2016-06-21 18:50:29 +0200
commit09add3e8ac3be54b1e6c068e87d4fb5143c6d785 (patch)
tree7b02b400788333f9ebf82081736c9c55f8ed48e8 /src/main/java/gregtech/api/util/GT_LanguageManager.java
parentb09b54435f9427332854558c42bd2c902825cbfe (diff)
downloadGT5-Unofficial-09add3e8ac3be54b1e6c068e87d4fb5143c6d785.tar.gz
GT5-Unofficial-09add3e8ac3be54b1e6c068e87d4fb5143c6d785.tar.bz2
GT5-Unofficial-09add3e8ac3be54b1e6c068e87d4fb5143c6d785.zip
even with Blood asp experimental branch
Diffstat (limited to 'src/main/java/gregtech/api/util/GT_LanguageManager.java')
-rw-r--r--src/main/java/gregtech/api/util/GT_LanguageManager.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java
new file mode 100644
index 0000000000..a60189ea71
--- /dev/null
+++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java
@@ -0,0 +1,95 @@
+package gregtech.api.util;
+
+import cpw.mods.fml.common.registry.LanguageRegistry;
+import gregtech.api.GregTech_API;
+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.util.HashMap;
+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>();
+ public static Configuration sEnglishFile;
+
+ public static String addStringLocalization(String aKey, String aEnglish) {
+ return addStringLocalization(aKey, aEnglish, true);
+ }
+
+ public static String addStringLocalization(String aKey, String aEnglish, boolean aWriteIntoLangFile) {
+ if (aKey == null) return E;
+ if (aWriteIntoLangFile) aEnglish = writeToLangFile(aKey, aEnglish);
+ TEMPMAP.put(aKey.trim(), aEnglish);
+ LanguageRegistry.instance().injectLanguage("en_US", TEMPMAP);
+ TEMPMAP.clear();
+ return aEnglish;
+ }
+
+ private static synchronized String writeToLangFile(String aKey, String aEnglish) {
+ if (aKey == null) return E;
+ if (sEnglishFile == null) {
+ BUFFERMAP.put(aKey.trim(), aEnglish);
+ } else {
+ if (!BUFFERMAP.isEmpty()) {
+ for (Entry<String, String> tEntry : BUFFERMAP.entrySet()) {
+ Property tProperty = sEnglishFile.get("LanguageFile", tEntry.getKey(), tEntry.getValue());
+ if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sEnglishFile.save();
+ }
+ BUFFERMAP.clear();
+ }
+ Property tProperty = sEnglishFile.get("LanguageFile", aKey.trim(), aEnglish);
+ if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sEnglishFile.save();
+ if (sEnglishFile.get("EnableLangFile", "UseThisFileAsLanguageFile", false).getBoolean(false))
+ aEnglish = tProperty.getString();
+ }
+ return aEnglish;
+ }
+
+ public static String getTranslation(String aKey) {
+ if (aKey == null) return E;
+ String tTrimmedKey = aKey.trim(), rTranslation = LanguageRegistry.instance().getStringLocalization(tTrimmedKey);
+ if (GT_Utility.isStringInvalid(rTranslation)) {
+ 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)) {
+ return aKey;
+ }
+ } else {
+ rTranslation = StatCollector.translateToLocal(tTrimmedKey + ".name");
+ if (GT_Utility.isStringInvalid(rTranslation) || (tTrimmedKey + ".name").equals(rTranslation)) {
+ return aKey;
+ }
+ }
+ }
+ }
+ return rTranslation;
+ }
+
+ public static String getTranslation(String aKey, String aSeperator) {
+ if (aKey == null) return E;
+ String rTranslation = E;
+ for (String tString : aKey.split(aSeperator)) {
+ rTranslation += getTranslation(tString);
+ }
+ return rTranslation;
+ }
+
+ public static String getTranslateableItemStackName(ItemStack aStack) {
+ if (GT_Utility.isStackInvalid(aStack)) return "null";
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ if (tNBT != null && tNBT.hasKey("display")) {
+ String tName = tNBT.getCompoundTag("display").getString("Name");
+ if (GT_Utility.isStringValid(tName)) {
+ return tName;
+ }
+ }
+ return aStack.getUnlocalizedName() + ".name";
+ }
+} \ No newline at end of file