📄 messagetext.java
字号:
/*
* Created on 24.07.2003
*
* To change the template for this generated file go to Window - Preferences -
* Java - Code Generation - Code and Comments
*/
package org.gudy.azureus2.core3.internat;
import java.io.File;
import java.io.FilenameFilter;
import java.io.LineNumberInputStream;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.SystemProperties;
import org.gudy.azureus2.core3.util.FileUtil;
/**
* @author Arbeiten
*
* To change the template for this generated type comment go to Window -
* Preferences - Java - Code Generation - Code and Comments
*/
public class MessageText {
public static final Locale LOCALE_ENGLISH = new Locale("en", "");
public static final Locale LOCALE_DEFAULT = new Locale("", ""); // == english
private static Locale LOCALE_CURRENT = LOCALE_DEFAULT;
private static final String BUNDLE_NAME = "org.gudy.azureus2.internat.MessagesBundle"; //$NON-NLS-1$
private static Map pluginLocalizationPaths = new HashMap();
private static ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME, LOCALE_DEFAULT, MessageText.class.getClassLoader());
// private static ResourceBundle RESOURCE_BUNDLE = new IntegratedResourceBundle(ResourceBundle.getBundle(BUNDLE_NAME, LOCALE_DEFAULT), pluginLocalizationPaths);
private static ResourceBundle DEFAULT_BUNDLE = RESOURCE_BUNDLE;
public static boolean keyExists(String key) {
try {
RESOURCE_BUNDLE.getString(key);
return true;
} catch (MissingResourceException e) {
return false;
}
}
/**
* @param key
* @return
*/
public static String getString(String key, String sDefault) {
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return sDefault;
}
}
public static String getString(String key) {
// TODO Auto-generated method stub
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
/**
* Process a sequence of words, and translate the ones containing at least one '.', unless it's an ending dot.
* @param sentence
* @return the formated String in the current Locale
*/
public static String getStringForSentence(String sentence) {
StringTokenizer st = new StringTokenizer(sentence , " ");
StringBuffer result = new StringBuffer(sentence.length());
String separator = "";
while(st.hasMoreTokens())
{
result.append(separator);
separator = " ";
String word = st.nextToken();
int length = word.length();
int position = word.lastIndexOf(".");
if(position == -1 || (position+1) == length) {
result.append(word);
} else {
//We have a key :
String translated = getString(word);
if(translated.equals("!" + word + "!")) {
result.append(word);
}
else {
result.append(translated);
}
}
}
return result.toString();
}
/**
* Expands a message text and replaces occurrences of %1 with first param, %2 with second...
* @param key
* @param params
* @return
*/
public static String
getString(
String key,
String[] params )
{
String res = getString(key);
for(int i=0;i<params.length;i++){
String from_str = "%" + (i+1);
String to_str = params[i];
res = replaceStrings( res, from_str, to_str );
}
return( res );
}
protected static String
replaceStrings(
String str,
String f_s,
String t_s )
{
int pos = 0;
String res = "";
while( pos < str.length()){
int p1 = str.indexOf( f_s, pos );
if ( p1 == -1 ){
res += str.substring(pos);
break;
}
res += str.substring(pos, p1) + t_s;
pos = p1+f_s.length();
}
return( res );
}
public static String getDefaultLocaleString(String key) {
// TODO Auto-generated method stub
try {
return DEFAULT_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
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 = BUNDLE_NAME.replace('.', '/');
final String prefix = BUNDLE_NAME.substring(BUNDLE_NAME.lastIndexOf('.') + 1);
final String extension = ".properties";
String urlString = MessageText.class.getClassLoader().getResource(bundleFolder.concat(extension)).toExternalForm();
//System.out.println("urlString: " + urlString);
String[] bundles = null;
if (urlString.startsWith("jar:file:")) {
File jar = FileUtil.getJarFileFromURL( urlString );
if ( jar != null ){
try{
// System.out.println("jar: " + jar.getAbsolutePath());
JarFile jarFile = new JarFile(jar);
Enumeration entries = jarFile.entries();
ArrayList list = new ArrayList(250);
while (entries.hasMoreElements()) {
JarEntry jarEntry = (JarEntry) entries.nextElement();
if (jarEntry.getName().startsWith(bundleFolder) && jarEntry.getName().endsWith(extension) && jarEntry.getName().length() < bundleFolder.length() + extension.length() + 7) {
// System.out.println("jarEntry: " + jarEntry.getName());
list.add(jarEntry.getName().substring(bundleFolder.length() - prefix.length()));
// "MessagesBundle_de_DE.properties"
}
}
bundles = (String[]) list.toArray(new String[list.size()]);
} catch (Exception e) {
Debug.printStackTrace( e );
}
}
} else {
File bundleDirectory = new File(URI.create(urlString)).getParentFile();
// System.out.println("bundleDirectory: " +
// bundleDirectory.getAbsolutePath());
bundles = bundleDirectory.list(new FilenameFilter() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -