mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-11 20:00:46 +00:00
[trunk] Translation of Essentials to other languages. This is just a start, many strings needs to be added.
Console doesn't show umlauts, but in game chat does. New config property: locale git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1387 e251c2fe-e539-e718-e476-b85c1f46cddb
This commit is contained in:
parent
0c334bc1e7
commit
a314f16f90
3 changed files with 128 additions and 1 deletions
|
@ -496,6 +496,6 @@ public class Settings implements IConf
|
||||||
|
|
||||||
public String getLocale()
|
public String getLocale()
|
||||||
{
|
{
|
||||||
return config.getString("locale", "en_US");
|
return config.getString("locale", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,21 @@
|
||||||
package com.earth2me.essentials;
|
package com.earth2me.essentials;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
@ -268,4 +281,114 @@ public class Util
|
||||||
{
|
{
|
||||||
return Math.round(d*100.0)/100.0;
|
return Math.round(d*100.0)/100.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class ConfigClassLoader extends ClassLoader {
|
||||||
|
private File dataFolder;
|
||||||
|
private ClassLoader cl;
|
||||||
|
|
||||||
|
public ConfigClassLoader(File dataFolder, ClassLoader cl)
|
||||||
|
{
|
||||||
|
this.dataFolder = dataFolder;
|
||||||
|
this.cl = cl;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public URL getResource(String string)
|
||||||
|
{
|
||||||
|
File file = new File(dataFolder, string);
|
||||||
|
if (file.exists())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return file.toURI().toURL();
|
||||||
|
}
|
||||||
|
catch (MalformedURLException ex)
|
||||||
|
{
|
||||||
|
return cl.getResource(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cl.getResource(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void clearAssertionStatus()
|
||||||
|
{
|
||||||
|
cl.clearAssertionStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InputStream getResourceAsStream(String string)
|
||||||
|
{
|
||||||
|
File file = new File(dataFolder, string);
|
||||||
|
if (file.exists())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return new FileInputStream(file);
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException ex)
|
||||||
|
{
|
||||||
|
return cl.getResourceAsStream(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cl.getResourceAsStream(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Enumeration<URL> getResources(String string) throws IOException
|
||||||
|
{
|
||||||
|
return cl.getResources(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<?> loadClass(String string) throws ClassNotFoundException
|
||||||
|
{
|
||||||
|
return cl.loadClass(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void setClassAssertionStatus(String string, boolean bln)
|
||||||
|
{
|
||||||
|
cl.setClassAssertionStatus(string, bln);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void setDefaultAssertionStatus(boolean bln)
|
||||||
|
{
|
||||||
|
cl.setDefaultAssertionStatus(bln);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void setPackageAssertionStatus(String string, boolean bln)
|
||||||
|
{
|
||||||
|
cl.setPackageAssertionStatus(string, bln);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Locale defaultLocale = Locale.getDefault();
|
||||||
|
public static Locale currentLocale = defaultLocale;
|
||||||
|
private static ResourceBundle bundle = ResourceBundle.getBundle("messages", defaultLocale);
|
||||||
|
|
||||||
|
public static String i18n(String string) {
|
||||||
|
return bundle.getString(string);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String format(String string, Object... objects) {
|
||||||
|
MessageFormat mf = new MessageFormat(i18n(string));
|
||||||
|
return mf.format(objects);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void updateLocale(String loc, File dataFolder) {
|
||||||
|
if (loc == null || loc.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String[] parts = loc.split("_");
|
||||||
|
if (parts.length == 1) {
|
||||||
|
currentLocale = new Locale(parts[0]);
|
||||||
|
}
|
||||||
|
if (parts.length == 2) {
|
||||||
|
currentLocale = new Locale(parts[0], parts[1]);
|
||||||
|
}
|
||||||
|
bundle = ResourceBundle.getBundle("messages", currentLocale, new ConfigClassLoader(dataFolder, Util.class.getClassLoader()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,6 +185,10 @@ sort-list-by-groups: false
|
||||||
# More output to the console
|
# More output to the console
|
||||||
debug: false
|
debug: false
|
||||||
|
|
||||||
|
# Set the locale for all messages
|
||||||
|
# If you don't set this, the default locale of the server will be used.
|
||||||
|
#locale: de_DE
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# +------------------------------------------------------+ #
|
# +------------------------------------------------------+ #
|
||||||
# | EssentialsHome | #
|
# | EssentialsHome | #
|
||||||
|
|
Loading…
Reference in a new issue