- package cpw.mods.fml.common.registry;
- import java.io.*;
- import java.net.URL;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Properties;
- import cpw.mods.fml.common.FMLLog;
- import net.minecraft.block.Block;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemStack;
- import net.minecraft.util.StringTranslate;
- public class LanguageRegistry
- {
- private static final LanguageRegistry INSTANCE = new LanguageRegistry();
- private Map<String,Properties> modLanguageData=new HashMap<String,Properties>();
- public static LanguageRegistry instance()
- {
- 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);
- }
- public void addStringLocalization(String key, String lang, String value)
- {
- Properties langPack=modLanguageData.get(lang);
- if (langPack==null) {
- langPack=new Properties();
- modLanguageData.put(lang, langPack);
- }
- String FilePath = (new StringBuilder()).append(".").append("/").append("cn.lang").toString();
- if ((new File(FilePath)).exists())
- try
- {
- BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(new FileInputStream(FilePath), "GB2312"));
- String s3 = null;
- String split_s[];
- do
- {
- if ((s3 = bufferedreader.readLine()) == null)
- {
- split_s = new String[1];
- split_s[0] = null;
- break;
- }
- split_s = s3.split(" = ");
- } while (!split_s[0].equals(key) || split_s[1].equals(null));
- if (split_s[0] != null)
- value = split_s[1];
- }
- catch (FileNotFoundException filenotfoundexception) { }
- catch (Exception exception) { }
- String FilePath2 = (new StringBuilder()).append(".").append("/").append("Mod_lang.txt").toString();
- File saveFile = new File(FilePath2);
- try
- {
- FileWriter fwriter = new FileWriter(saveFile, true);
- fwriter.write((new StringBuilder()).append(key).append(" = ").append(value).append("\r\n").toString());
- fwriter.close();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- langPack.put(key,value);
- }
- public LanguageRegistry(){
- String FilePath3 = (new StringBuilder()).append("..").append("/").append("Mod_lang.txt").toString();
- File saveFile = new File(FilePath3);
- if (saveFile.exists()){
- saveFile.delete();
- }
- }
- 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.getInstance().getCurrentLanguage();
- StringTranslate.getInstance().currentLanguage = null;
- StringTranslate.getInstance().setLanguage(lang);
- }
- public void addNameForObject(Object objectToName, String lang, String name)
- {
- String objectName;
- if (objectToName instanceof Item) {
- objectName=((Item)objectToName).getItemName();
- } else if (objectToName instanceof Block) {
- objectName=((Block)objectToName).getBlockName();
- } else if (objectToName instanceof ItemStack) {
- objectName=((ItemStack)objectToName).getItem().getItemNameIS((ItemStack)objectToName);
- } else {
- throw new IllegalArgumentException(String.format("Illegal object for naming %s",objectToName));
- }
- objectName+=".name";
- addStringLocalization(objectName, lang, name);
- }
- public static void addName(Object objectToName, String name)
- {
- instance().addNameForObject(objectToName, "en_US", name);
- }
- public void loadLanguageTable(Properties languagePack, String lang)
- {
- Properties usPack=modLanguageData.get("en_US");
- if (usPack!=null) {
- languagePack.putAll(usPack);
- }
- Properties langPack=modLanguageData.get(lang);
- if (langPack==null) {
- return;
- }
- 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) {
- FMLLog.getLogger().severe("Unable to load localization from file: " + localizationFile);
- e.printStackTrace();
- }
- finally {
- try {
- if (langStream != null) {
- langStream.close();
- }
- }
- catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- }
- }
复制代码
|