Merge pull request #112 from pahimar/master

Additonal Language Registry functionality
This commit is contained in:
cpw committed 2012-09-26 21:57:53 -07:00
commit a08b5b19d5
1 file changed
+80 -6
@@ -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();
}
}
}
}