From 8dac58ffc162958ec3b545c40a9aa3e5cd511863 Mon Sep 17 00:00:00 2001 From: pahimar Date: Wed, 26 Sep 2012 15:41:58 -0400 Subject: [PATCH] Added ability to query the Language Registry by key and language for specific localized text, as well as loading in localization text from a specific file/URL --- .../fml/common/registry/LanguageRegistry.java | 86 +++++++++++++++++-- 1 file changed, 80 insertions(+), 6 deletions(-) diff --git a/common/cpw/mods/fml/common/registry/LanguageRegistry.java b/common/cpw/mods/fml/common/registry/LanguageRegistry.java index ef3c05d2af..7261913f7d 100644 --- a/common/cpw/mods/fml/common/registry/LanguageRegistry.java +++ b/common/cpw/mods/fml/common/registry/LanguageRegistry.java @@ -1,5 +1,8 @@ package cpw.mods.fml.common.registry; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.Properties; @@ -20,6 +23,25 @@ public class LanguageRegistry return INSTANCE; } + public String getStringLocalization(String key) + { + return getStringLocalization(key, StringTranslate.getInstance().getCurrentLanguage()); + } + + public String getStringLocalization(String key, String lang) + { + String localizedString = ""; + Properties langPack = modLanguageData.get(lang); + + if (langPack != null) { + if (langPack.getProperty(key) != null) { + localizedString = langPack.getProperty(key); + } + } + + return localizedString; + } + public void addStringLocalization(String key, String value) { addStringLocalization(key, "en_US", value); @@ -33,13 +55,28 @@ public class LanguageRegistry } langPack.put(key,value); } + + public void addStringLocalization(Properties langPackAdditions) { + addStringLocalization(langPackAdditions, "en_US"); + } + + public void addStringLocalization(Properties langPackAdditions, String lang) { + Properties langPack = modLanguageData.get(lang); + if (langPack == null) { + langPack = new Properties(); + modLanguageData.put(lang, langPack); + } + if (langPackAdditions != null) { + langPack.putAll(langPackAdditions); + } + } public static void reloadLanguageTable() { // reload language table by forcing lang to null and reloading the properties file - String lang = StringTranslate.func_74808_a().func_74811_c(); - StringTranslate.func_74808_a().field_74813_d = null; - StringTranslate.func_74808_a().func_74810_a(lang); + String lang = StringTranslate.getInstance().getCurrentLanguage(); + StringTranslate.getInstance().currentLanguage = null; + StringTranslate.getInstance().setLanguage(lang); } @@ -47,11 +84,11 @@ public class LanguageRegistry { String objectName; if (objectToName instanceof Item) { - objectName=((Item)objectToName).func_77658_a(); + objectName=((Item)objectToName).getItemName(); } else if (objectToName instanceof Block) { - objectName=((Block)objectToName).func_71917_a(); + objectName=((Block)objectToName).getBlockName(); } else if (objectToName instanceof ItemStack) { - objectName=((ItemStack)objectToName).func_77973_b().func_77667_c((ItemStack)objectToName); + objectName=((ItemStack)objectToName).getItem().getItemNameIS((ItemStack)objectToName); } else { throw new IllegalArgumentException(String.format("Illegal object for naming %s",objectToName)); } @@ -76,4 +113,41 @@ public class LanguageRegistry } languagePack.putAll(langPack); } + + public void loadLocalization(String localizationFile, String lang, boolean isXML) + { + loadLocalization(this.getClass().getResource(localizationFile), lang, isXML); + } + + public void loadLocalization(URL localizationFile, String lang, boolean isXML) + { + InputStream langStream = null; + Properties langPack = new Properties(); + + try { + langStream = localizationFile.openStream(); + + if (isXML) { + langPack.loadFromXML(langStream); + } + else { + langPack.load(langStream); + } + + addStringLocalization(langPack, lang); + } + catch (IOException e) { + e.printStackTrace(); + } + finally { + try { + if (langStream != null) { + langStream.close(); + } + } + catch (IOException ex) { + ex.printStackTrace(); + } + } + } }