Показать сообщение отдельно

  #2  
Старый 17.08.2015, 13:00
kick
Флудер
Регистрация: 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.
 
Ответить с цитированием