O Java ResourceBundles padrão possui características de espaço bem ineficientes. Como um Eclipse em execução tende a ter muitas mensagens externalizadas, tem sido implementada uma nova descrição de pacote configurável de mensagem para ser utilizada no Eclipse. O mecanismo é bem simples e completamente genérico - ele pode ser utilizado em qualquer lugar.
messages.properties
- esse arquivo é o mesmo que o anterior, exceto que todas
as chaves precisam ser indentificadores Java válidos.public static String
,
cujo nome é o mesmo que a chave de mensagem.messages.properties
.Messages.java
.messages.properties
, onde
o nome da chave corresponde ao nome do campo,Messages.my_key
)
e não à consulta padrão.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[] {"example usage"}); //$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, "example usage"); //$NON-NLS-1$
...
}
}
public class Messages {
private static final String BUNDLE_NAME = "org.eclipse.core.utils.messages"; //$NON-NLS-1$
private static final ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME);
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 BUNDLE_NAME = "org.eclipse.core.utils.messages"; //$NON-NLS-1$
public static String key_one;
public static String key_two;
...
static {
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
}
}
key.one = Hello world. key.two = Esse é um {0} de ligação com um argumento.
key_one = Hello world. key_two = Esse é um {0} de ligação com um argumento.