mirror of
https://github.com/GTNewHorizons/CodeChickenCore.git
synced 2026-10-26 14:24:57 +00:00
Added LangUtil for localisations
This commit is contained in:
1 parent
3c5a61e011
commit
9341031e7f
2 files changed
+130
-7
No files matched your search
@@ -69,7 +69,7 @@ public class ObfMapping
|
||||
|
||||
public static ObfMapping fromDesc(String s)
|
||||
{
|
||||
int lastDot = s.lastIndexOf('.');
|
||||
int lastDot = s.lastIndexOf('.');
|
||||
if(lastDot < 0)
|
||||
return new ObfMapping(s, "", "");
|
||||
int sep = s.indexOf('(');//methods
|
||||
@@ -85,7 +85,7 @@ public class ObfMapping
|
||||
if(sep < 0)
|
||||
return new ObfMapping(s.substring(0, lastDot), s.substring(lastDot + 1), "");
|
||||
|
||||
return new ObfMapping(s.substring(0, lastDot), s.substring(lastDot+1, sep), s.substring(sep_end));
|
||||
return new ObfMapping(s.substring(0, lastDot), s.substring(lastDot+1, sep), s.substring(sep_end));
|
||||
}
|
||||
|
||||
public ObfMapping subclass(String subclass)
|
||||
@@ -176,7 +176,17 @@ public class ObfMapping
|
||||
return "["+s_owner+"]";
|
||||
if(s_desc.length() == 0)
|
||||
return "["+s_owner+"."+s_name+"]";
|
||||
return "["+s_owner+"."+s_name+s_desc+"]";
|
||||
return "["+(isMethod() ? methodDesc() : fieldDesc())+"]";
|
||||
}
|
||||
|
||||
public String methodDesc()
|
||||
{
|
||||
return s_owner+"."+s_name+s_desc;
|
||||
}
|
||||
|
||||
public String fieldDesc()
|
||||
{
|
||||
return s_owner+"."+s_name+":"+s_desc;
|
||||
}
|
||||
|
||||
public boolean isClass()
|
||||
@@ -203,12 +213,14 @@ public class ObfMapping
|
||||
|
||||
s_owner = mapper.mapType(s_owner);
|
||||
|
||||
if(!isClass())
|
||||
if(isMethod())
|
||||
s_desc = mapper.mapMethodDesc(s_desc);
|
||||
else if(!isClass())
|
||||
s_desc = mapper.mapDesc(s_desc);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public ObfMapping toRuntime()
|
||||
{
|
||||
if(!runtime)
|
||||
@@ -217,9 +229,9 @@ public class ObfMapping
|
||||
runtime = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public ObfMapping copy()
|
||||
{
|
||||
return new ObfMapping(s_owner, s_name, s_desc);
|
||||
return new ObfMapping(s_owner, s_name, s_desc);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package codechicken.lib.lang;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.SortedSet;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.Language;
|
||||
import net.minecraft.client.resources.Resource;
|
||||
import net.minecraft.client.resources.ResourceManager;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.StatCollector;
|
||||
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
|
||||
/**
|
||||
* Easy localisation access.
|
||||
*/
|
||||
public class LangUtil
|
||||
{
|
||||
public static LangUtil instance = new LangUtil(null);
|
||||
|
||||
public String prefix;
|
||||
|
||||
public LangUtil(String prefix)
|
||||
{
|
||||
this.prefix = prefix;
|
||||
}
|
||||
|
||||
public static String translateG(String s, Object... format)
|
||||
{
|
||||
return instance.translate(s, format);
|
||||
}
|
||||
|
||||
public String translate(String s, Object... format)
|
||||
{
|
||||
if(prefix != null && !s.startsWith(prefix+"."))
|
||||
s = prefix+"."+s;
|
||||
String ret = LanguageRegistry.instance().getStringLocalization(s);
|
||||
if(ret.length() == 0)
|
||||
ret = LanguageRegistry.instance().getStringLocalization(s, "en_US");
|
||||
if(ret.length() == 0)
|
||||
ret = StatCollector.translateToLocal(s);
|
||||
if(ret.length() == 0)
|
||||
return s;
|
||||
if(format.length > 0)
|
||||
ret = String.format(ret, format);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void addLangFile(InputStream resource, String lang) throws IOException
|
||||
{
|
||||
LanguageRegistry reg = LanguageRegistry.instance();
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(resource, "UTF-8"));
|
||||
while(true)
|
||||
{
|
||||
String read = reader.readLine();
|
||||
if(read == null)
|
||||
break;
|
||||
|
||||
int equalIndex = read.indexOf('=');
|
||||
if(equalIndex == -1)
|
||||
continue;
|
||||
String key = read.substring(0, equalIndex);
|
||||
String value = read.substring(equalIndex+1);
|
||||
if(prefix != null)
|
||||
key = prefix+"."+key;
|
||||
reg.addStringLocalization(key, lang, value);
|
||||
}
|
||||
}
|
||||
|
||||
public static LangUtil loadLangDir(String domain)
|
||||
{
|
||||
return new LangUtil(domain).addLangDir(new ResourceLocation(domain, "lang"));
|
||||
}
|
||||
|
||||
public LangUtil addLangDir(ResourceLocation dir)
|
||||
{
|
||||
ResourceManager resManager = Minecraft.getMinecraft().func_110442_L();
|
||||
for(Language lang : (SortedSet<Language>)Minecraft.getMinecraft().func_135016_M().func_135040_d())
|
||||
{
|
||||
String langID = lang.func_135034_a();
|
||||
Resource langRes;
|
||||
try
|
||||
{
|
||||
langRes = resManager.func_110536_a(new ResourceLocation(dir.func_110624_b(), dir.func_110623_a()+'/'+langID+".lang"));
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
try
|
||||
{
|
||||
addLangFile(langRes.func_110527_b(), langID);
|
||||
}
|
||||
catch(IOException e)
|
||||
{
|
||||
System.err.println("Failed to load lang resource. domain="+prefix+", resource="+langRes);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public static void loadBaseLangDir(ResourceLocation dir)
|
||||
{
|
||||
instance.addLangDir(dir);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user