Τα τυπικά Java ResourceBundles διαθέτουν σχετικά ανεπαρκή χαρακτηριστικά χώρου. Εφόσον το 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[] {"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 = This is an {0} of binding with one argument.
key.one = Hello world. key.two = This is an {0} of binding with one argument.