Стандартные комплекты ресурсов Java не очень эффективны с точки зрения использования памяти. Во время работы Eclipse часто экспортируется большое количество сообщений, поэтому для применения в Eclipse реализован новый принцип работы комплектов сообщений. Механизм очень прост и общедоступен, поэтому может применяться где угодно.
messages.properties
- файл такой же, как и раньше, только все ключи должны быть допустимыми идентификаторами Java. public static String
, имя которого совпадает с ключом сообщения. messages.properties
. Messages.java
. messages.properties
, где имя ключа должно совпадать с именем поля, Messages.my_key
), а не используйте стандартный поиск. public class MyClass {
public void myMethod() {
String message;
...
// no args
message = Messages.getString("key.one"); //$NON-NLS-1$
...
// bind one arg
message = MessageFormat.format(Messages.getString("key.two"), new Object[] {"пример-формата"}); //$NON-NLS-1$ //$NON-NLS-2$
...
}
}
public class MyClass {
public void myMethod() {
String message;
...
// no args
message = Messages.key_one;
...
// bind one arg
message = NLS.bind(Messages.key_two, "пример-формата"); //$NON-NLS-1$
...
}
}
public class Messages {
private static final String ИМЯ-КОМПЛЕКТА = "org.eclipse.core.utils.messages"; //$NON-NLS-1$
private static final ResourceBundle bundle = ResourceBundle.getBundle(ИМЯ-КОМПЛЕКТА);
public static String getString(String key) {
try {
return bundle.getString(key);
} catch (MissingResourceException e) {
return key;
}
}
}
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
private static final String ИМЯ-КОМПЛЕКТА = "org.eclipse.core.utils.messages"; //$NON-NLS-1$
public static String key_one;
public static String key_two;
...
static {
NLS.initializeMessages(ИМЯ-КОМПЛЕКТА, Messages.class);
}
}
key.one = Hello world. key.two = This is an {0} of binding with one argument.
key_one = Hello world. key_two = This is an {0} of binding with one argument.