📄 messagetext.java
字号:
return (new StringBuilder()).append('!').append(key).append('!').toString();
}
public static Locale getCurrentLocale()
{
return LOCALE_DEFAULT.equals(LOCALE_CURRENT) ? LOCALE_ENGLISH : LOCALE_CURRENT;
}
public static boolean isCurrentLocale(Locale locale)
{
return LOCALE_ENGLISH.equals(locale) ? LOCALE_CURRENT.equals(LOCALE_DEFAULT) : LOCALE_CURRENT.equals(locale);
}
public static Locale[] getLocales()
{
String bundleFolder = "org.gudy.azureus2.internat.MessagesBundle".replace('.', '/');
String prefix = "org.gudy.azureus2.internat.MessagesBundle".substring("org.gudy.azureus2.internat.MessagesBundle".lastIndexOf('.') + 1);
String extension = ".properties";
String urlString = org/gudy/azureus2/core3/internat/MessageText.getClassLoader().getResource(bundleFolder.concat(".properties")).toExternalForm();
String bundles[] = null;
if (urlString.startsWith("jar:file:"))
{
File jar = FileUtil.getJarFileFromURL(urlString);
if (jar != null)
try
{
JarFile jarFile = new JarFile(jar);
Enumeration entries = jarFile.entries();
ArrayList list = new ArrayList(250);
do
{
if (!entries.hasMoreElements())
break;
JarEntry jarEntry = (JarEntry)entries.nextElement();
if (jarEntry.getName().startsWith(bundleFolder) && jarEntry.getName().endsWith(".properties"))
list.add(jarEntry.getName().substring(bundleFolder.length() - prefix.length()));
} while (true);
bundles = (String[])(String[])list.toArray(new String[list.size()]);
}
catch (Exception e)
{
Debug.printStackTrace(e);
}
} else
{
File bundleDirectory = (new File(URI.create(urlString))).getParentFile();
bundles = bundleDirectory.list(new FilenameFilter(prefix) {
final String val$prefix;
public boolean accept(File dir, String name)
{
return name.startsWith(prefix) && name.endsWith(".properties");
}
{
prefix = s;
super();
}
});
}
HashSet bundleSet = new HashSet();
File localDir = new File(SystemProperties.getUserPath());
String localBundles[] = localDir.list(new FilenameFilter(prefix) {
final String val$prefix;
public boolean accept(File dir, String name)
{
return name.startsWith(prefix) && name.endsWith(".properties");
}
{
prefix = s;
super();
}
});
if (localBundles != null)
bundleSet.addAll(Arrays.asList(localBundles));
File appDir = new File(SystemProperties.getApplicationPath());
String appBundles[] = appDir.list(new FilenameFilter(prefix) {
final String val$prefix;
public boolean accept(File dir, String name)
{
return name.startsWith(prefix) && name.endsWith(".properties");
}
{
prefix = s;
super();
}
});
if (appBundles != null)
bundleSet.addAll(Arrays.asList(appBundles));
bundleSet.addAll(Arrays.asList(bundles));
List foundLocalesList = new ArrayList(bundleSet.size());
foundLocalesList.add(LOCALE_ENGLISH);
Iterator val = bundleSet.iterator();
do
{
if (!val.hasNext())
break;
String sBundle = (String)val.next();
if (prefix.length() + 1 < sBundle.length() - ".properties".length())
{
String locale = sBundle.substring(prefix.length() + 1, sBundle.length() - ".properties".length());
String sLocalesSplit[] = locale.split("_", 3);
if (sLocalesSplit.length > 0 && sLocalesSplit[0].length() == 2)
{
if (sLocalesSplit.length == 3)
foundLocalesList.add(new Locale(sLocalesSplit[0], sLocalesSplit[1], sLocalesSplit[2]));
else
if (sLocalesSplit.length == 2 && sLocalesSplit[1].length() == 2)
foundLocalesList.add(new Locale(sLocalesSplit[0], sLocalesSplit[1]));
else
foundLocalesList.add(new Locale(sLocalesSplit[0]));
} else
if (sLocalesSplit.length == 3 && sLocalesSplit[0].length() == 0 && sLocalesSplit[2].length() > 0)
foundLocalesList.add(new Locale(sLocalesSplit[0], sLocalesSplit[1], sLocalesSplit[2]));
}
} while (true);
Locale foundLocales[] = new Locale[foundLocalesList.size()];
foundLocalesList.toArray(foundLocales);
try
{
Arrays.sort(foundLocales, new Comparator() {
public final int compare(Object a, Object b)
{
return ((Locale)a).getDisplayName((Locale)a).compareToIgnoreCase(((Locale)b).getDisplayName((Locale)b));
}
});
}
catch (Throwable e)
{
Debug.printStackTrace(e);
}
return foundLocales;
}
public static boolean changeLocale(Locale newLocale)
{
return changeLocale(newLocale, false);
}
private static boolean changeLocale(Locale newLocale, boolean force)
{
Locale.setDefault(newLocale);
if (!isCurrentLocale(newLocale) || force)
{
Locale.setDefault(LOCALE_DEFAULT);
ResourceBundle newResourceBundle = null;
String bundleFolder = "org.gudy.azureus2.internat.MessagesBundle".replace('.', '/');
String prefix = "org.gudy.azureus2.internat.MessagesBundle".substring("org.gudy.azureus2.internat.MessagesBundle".lastIndexOf('.') + 1);
String extension = ".properties";
if (newLocale.equals(LOCALE_ENGLISH))
newLocale = LOCALE_DEFAULT;
try
{
File userBundleFile = new File(SystemProperties.getUserPath());
File appBundleFile = new File(SystemProperties.getApplicationPath());
ClassLoader cl = org/gudy/azureus2/core3/internat/MessageText.getClassLoader();
String sJar = cl.getResource((new StringBuilder()).append(bundleFolder).append(".properties").toString()).toString();
sJar = sJar.substring(0, sJar.length() - prefix.length() - ".properties".length());
URL jarURL = new URL(sJar);
URL urls[] = {
userBundleFile.toURL(), appBundleFile.toURL(), jarURL
};
newResourceBundle = getResourceBundle("MessagesBundle", newLocale, new URLClassLoader(urls));
if (!newResourceBundle.getLocale().getLanguage().equals(newLocale.getLanguage()) && !newLocale.getCountry().equals(""))
{
Locale foundLocale = newResourceBundle.getLocale();
System.out.println((new StringBuilder()).append("changeLocale: ").append(foundLocale.toString().equals("") ? "*Default Language*" : foundLocale.getDisplayLanguage()).append(" != ").append(newLocale.getDisplayName()).append(". Searching without country..").toString());
Locale localeJustLang = new Locale(newLocale.getLanguage());
newResourceBundle = getResourceBundle("MessagesBundle", localeJustLang, new URLClassLoader(urls));
if (newResourceBundle == null || !newResourceBundle.getLocale().getLanguage().equals(localeJustLang.getLanguage()))
{
System.out.println((new StringBuilder()).append("changeLocale: Searching for language ").append(newLocale.getDisplayLanguage()).append(" in *any* country..").toString());
Locale locales[] = getLocales();
int i = 0;
do
{
if (i >= locales.length)
break;
if (locales[i].getLanguage() == newLocale.getLanguage())
{
newResourceBundle = getResourceBundle("MessagesBundle", locales[i], new URLClassLoader(urls));
break;
}
i++;
} while (true);
}
}
}
catch (MissingResourceException e)
{
System.out.println((new StringBuilder()).append("changeLocale: no resource bundle for ").append(newLocale).toString());
Debug.printStackTrace(e);
return false;
}
catch (Exception e)
{
Debug.printStackTrace(e);
}
if (newResourceBundle != null)
{
if (!newLocale.equals(LOCALE_DEFAULT) && !newResourceBundle.getLocale().equals(newLocale))
{
String sNewLanguage = newResourceBundle.getLocale().getDisplayName();
if (sNewLanguage == null || sNewLanguage.trim().equals(""))
sNewLanguage = "English (default)";
System.out.println((new StringBuilder()).append("changeLocale: no message properties for Locale '").append(newLocale.getDisplayName()).append("' (").append(newLocale).append("), using '").append(sNewLanguage).append("'").toString());
}
newLocale = newResourceBundle.getLocale();
Locale.setDefault(newLocale.equals(LOCALE_DEFAULT) ? LOCALE_ENGLISH : newLocale);
LOCALE_CURRENT = newLocale;
setResourceBundle(new IntegratedResourceBundle(newResourceBundle, pluginLocalizationPaths));
if (newLocale.equals(LOCALE_DEFAULT))
DEFAULT_BUNDLE = RESOURCE_BUNDLE;
return true;
} else
{
return false;
}
} else
{
return false;
}
}
public static boolean integratePluginMessages(String localizationPath, ClassLoader classLoader)
{
boolean integratedSuccessfully = false;
if (null != localizationPath && localizationPath.length() != 0 && !pluginLocalizationPaths.containsKey(localizationPath))
{
synchronized (pluginLocalizationPaths)
{
pluginLocalizationPaths.put(localizationPath, classLoader);
}
RESOURCE_BUNDLE.addPluginBundle(localizationPath, classLoader);
setResourceBundle(RESOURCE_BUNDLE);
integratedSuccessfully = true;
}
return integratedSuccessfully;
}
public static boolean integratePluginMessages(ResourceBundle bundle)
{
synchronized (pluginResourceBundles)
{
pluginResourceBundles.add(bundle);
}
RESOURCE_BUNDLE.addResourceMessages(bundle);
setResourceBundle(RESOURCE_BUNDLE);
return true;
}
public static void revertToDefaultLocale()
{
String language = (String)AccessController.doPrivileged(new GetPropertyAction("user.language", "en"));
String region = (String)AccessController.doPrivileged(new GetPropertyAction("user.region"));
String country;
String variant;
if (region != null)
{
int i = region.indexOf('_');
if (i >= 0)
{
country = region.substring(0, i);
variant = region.substring(i + 1);
} else
{
country = region;
variant = "";
}
} else
{
country = (String)AccessController.doPrivileged(new GetPropertyAction("user.country", ""));
variant = (String)AccessController.doPrivileged(new GetPropertyAction("user.variant", ""));
}
changeLocale(new Locale(language, country, variant));
COConfigurationManager.removeParameter("locale");
}
public static String resolveLocalizationKey(String localizationKey)
{
if (null == localizationKey)
return null;
if ("az3".equalsIgnoreCase(COConfigurationManager.getStringParameter("ui")))
{
String v3Key = null;
if (!localizationKey.startsWith("v3."))
v3Key = (new StringBuilder()).append("v3.").append(localizationKey).toString();
else
v3Key = localizationKey;
if (keyExists(v3Key))
return v3Key;
}
return localizationKey;
}
public static String resolveAcceleratorKey(String acceleratorKey)
{
if (null == acceleratorKey)
return null;
if ("az3".equalsIgnoreCase(COConfigurationManager.getStringParameter("ui")))
{
String v3Key = null;
if (!acceleratorKey.startsWith("v3."))
v3Key = (new StringBuilder()).append("v3.").append(acceleratorKey).toString();
else
v3Key = acceleratorKey;
if (keyExists((new StringBuilder()).append(v3Key).append(".keybinding").toString()))
return v3Key;
}
return acceleratorKey;
}
static
{
LOCALE_DEFAULT = new Locale("", "");
LOCALE_CURRENT = LOCALE_DEFAULT;
pluginLocalizationPaths = new HashMap();
setResourceBundle(new IntegratedResourceBundle(getResourceBundle("org.gudy.azureus2.internat.MessagesBundle", LOCALE_DEFAULT, org/gudy/azureus2/core3/internat/MessageText.getClassLoader()), pluginLocalizationPaths));
DEFAULT_BUNDLE = RESOURCE_BUNDLE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -