
17.08.2015, 13:00
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Сообщение от Спойлер
Код:
[CODE]
package l2s.extensions.multilang;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.HashMap;
import javolution.text.TextBuilder;
public class ASCIIBuilder
{
private static final String targetDir = "data/localization/ascii";
private static final String encoding = "latin1";
public static void createPropASCII(File f)
{
HashMap map = new HashMap();
try
{
LineNumberReader lnr = new LineNumberReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
TextBuilder tb = new TextBuilder();
String s;
String buf;
int index;
while ((s = lnr.readLine()) != null)
{
try
{
tb.append(s);
if(!tb.toString().endsWith("\\"))
{
buf = tb.toString().replace("\\", "");
index = buf.indexOf("=");
map.put(buf.substring(0, index), buf.substring(index + 1));
tb.clear();
}
}
catch(Exception e)
{
tb.clear();
}
}
lnr.close();
}
catch(Exception e)
{
e.printStackTrace(System.err);
}
for(String s : map.keySet())
map.put(s, convertString(map.get(s)));
File dir = new File(targetDir);
if(dir.exists())
dir.delete();
dir.mkdir();
File target = new File(targetDir + "/" + f.getName());
if(!target.exists())
try
{
target.createNewFile();
}
catch(IOException e)
{
e.printStackTrace(System.err);
}
try
{
FileOutputStream fos = new FileOutputStream(target);
for(String q : map.keySet())
{
fos.write(q.getBytes(encoding));
fos.write("=".getBytes(encoding));
fos.write(map.get(q).getBytes(encoding));
fos.write("\n".getBytes(encoding));
}
fos.close();
}
catch(IOException e)
{
e.printStackTrace(System.err);
}
}
private static String convertString(String s)
{
TextBuilder tb = new TextBuilder();
for(char c : s.toCharArray())
if(c > 127)
{
tb.append("\\u");
String hex = Integer.toHexString(c);
int lenght = hex.length();
for(int i = lenght; i
Сообщение от Спойлер
Код:
Код:
public class PropertiesFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
return name.endsWith(".properties");
}
}
Сообщение от Спойлер
Код:
Код:
package l2s.extensions.multilang;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Locale;
import java.util.ResourceBundle;
import l2s.game.model.L2Object;
import l2s.game.model.L2Skill;
import l2s.game.model.actor.L2Character;
import l2s.game.model.actor.L2Player;
import l2s.game.model.instances.L2ItemInstance;
import l2s.game.tables.ItemTable;
import l2s.game.tables.SkillTable;
import l2s.game.templates.L2Item;
import l2s.util.Log;
public class CustomMessage
{
private static final String localizationDirSrc = "data/localization/";
private static final String localizationDirASCII = "data/localization/ascii/";
private static URLClassLoader loader;
static
{
reload();
}
public synchronized static void reload()
{
File src = new File(localizationDirSrc);
for(File prop : src.listFiles(new PropertiesFilter()))
ASCIIBuilder.createPropASCII(prop);
try
{
loader = new URLClassLoader(new URL[] { new File(localizationDirASCII).toURI().toURL() });
en = ResourceBundle.getBundle("messages", new Locale("en"), loader);
ru = ResourceBundle.getBundle("messages", new Locale("ru"), loader);
}
catch(MalformedURLException e)
{
e.printStackTrace(System.err);
}
}
private static ResourceBundle en;
private static ResourceBundle ru;
private String _text;
private int mark = 0;
public CustomMessage(String address, L2Object player, Object... args)
{
if(player != null && player.isPlayer())
getString(address, ((L2Player) player).getLang());
add(args);
}
public CustomMessage(String address, String language, Object... args)
{
getString(address, language);
add(args);
}
private void getString(String address, String lang)
{
if(lang != null)
lang = lang.toLowerCase();
else
lang = "en";
ResourceBundle rb;
if(lang.equals("ru"))
rb = ru;
else
rb = en;
try
{
_text = rb.getString(address);
}
catch(Exception e)
{
Log.addDev("Custom message with address: \"" + address + "\" is unsupported!", "dev_custom_message");
_text = "Custom message with address: \"" + address + "\" is unsupported!";
}
if(_text == null)
{
Log.addDev("Custom message with address: \"" + address + "\" not found!", "dev_custom_message");
_text = "Custom message with address: \"" + address + "\" not found!";
}
}
public CustomMessage add(Object... args)
{
for(Object arg : args)
if(arg instanceof String)
addString((String) arg);
else if(arg instanceof Integer)
addNumber(((Integer) arg).intValue());
else if(arg instanceof Long)
addNumber(((Long) arg).longValue());
else if(arg instanceof L2Item)
addItemName((L2Item) arg);
else if(arg instanceof L2ItemInstance)
addItemName((L2ItemInstance) arg);
else if(arg instanceof L2Character)
addCharName((L2Character) arg);
else if(arg instanceof L2Skill)
addSkillName((L2Skill) arg);
else
{
System.out.println("unknown CustomMessage arg type: " + arg);
Thread.dumpStack();
}
return this;
}
public CustomMessage addNumber(long number)
{
_text = _text.replace("{" + mark + "}", String.valueOf(number));
mark++;
return this;
}
public CustomMessage addString(String str)
{
_text = _text.replace("{" + mark + "}", str);
mark++;
return this;
}
public CustomMessage addSkillName(L2Skill skill)
{
_text = _text.replace("{" + mark + "}", skill.getName());
mark++;
return this;
}
public CustomMessage addSkillName(short skillId, short skillLevel)
{
return addSkillName(SkillTable.getInstance().getInfo(skillId, skillLevel));
}
public CustomMessage addItemName(L2Item item)
{
_text = _text.replace("{" + mark + "}", item.getName());
mark++;
return this;
}
public CustomMessage addItemName(int itemId)
{
return addItemName(ItemTable.getInstance().getTemplate(itemId));
}
public CustomMessage addItemName(L2ItemInstance item)
{
return addItemName(item.getItem());
}
public CustomMessage addCharName(L2Character cha)
{
_text = _text.replace("{" + mark + "}", cha.getName());
mark++;
return this;
}
public String toString()
{
return _text;
}
}
Уж сколько лет то можно держать такой бред, лучше выпилить подобное и написать с 0.
|
|
|