001 package cpw.mods.fml.common.registry; 002 003 import java.util.HashMap; 004 import java.util.Map; 005 import java.util.Properties; 006 007 import net.minecraft.src.Block; 008 import net.minecraft.src.Item; 009 import net.minecraft.src.ItemStack; 010 import net.minecraft.src.StringTranslate; 011 012 public class LanguageRegistry 013 { 014 private static final LanguageRegistry INSTANCE = new LanguageRegistry(); 015 016 private Map<String,Properties> modLanguageData=new HashMap<String,Properties>(); 017 018 public static LanguageRegistry instance() 019 { 020 return INSTANCE; 021 } 022 023 public void addStringLocalization(String key, String value) 024 { 025 addStringLocalization(key, "en_US", value); 026 } 027 public void addStringLocalization(String key, String lang, String value) 028 { 029 Properties langPack=modLanguageData.get(lang); 030 if (langPack==null) { 031 langPack=new Properties(); 032 modLanguageData.put(lang, langPack); 033 } 034 langPack.put(key,value); 035 } 036 037 public static void reloadLanguageTable() 038 { 039 // reload language table by forcing lang to null and reloading the properties file 040 String lang = StringTranslate.getInstance().getCurrentLanguage(); 041 StringTranslate.getInstance().currentLanguage = null; 042 StringTranslate.getInstance().setLanguage(lang); 043 } 044 045 046 public void addNameForObject(Object objectToName, String lang, String name) 047 { 048 String objectName; 049 if (objectToName instanceof Item) { 050 objectName=((Item)objectToName).getItemName(); 051 } else if (objectToName instanceof Block) { 052 objectName=((Block)objectToName).getBlockName(); 053 } else if (objectToName instanceof ItemStack) { 054 objectName=((ItemStack)objectToName).getItem().getItemNameIS((ItemStack)objectToName); 055 } else { 056 throw new IllegalArgumentException(String.format("Illegal object for naming %s",objectToName)); 057 } 058 objectName+=".name"; 059 addStringLocalization(objectName, lang, name); 060 } 061 062 public static void addName(Object objectToName, String name) 063 { 064 instance().addNameForObject(objectToName, "en_US", name); 065 } 066 067 public void loadLanguageTable(Properties languagePack, String lang) 068 { 069 Properties usPack=modLanguageData.get("en_US"); 070 if (usPack!=null) { 071 languagePack.putAll(usPack); 072 } 073 Properties langPack=modLanguageData.get(lang); 074 if (langPack==null) { 075 return; 076 } 077 languagePack.putAll(langPack); 078 } 079 }