Δέσμες μηνυμάτων

Περιγραφή

Τα τυπικά Java ResourceBundles διαθέτουν σχετικά ανεπαρκή χαρακτηριστικά χώρου. Εφόσον το Eclipse που εκτελείται τείνει να έχει πολλά τοπικά προσαρμοσμένα μηνύματα, έχουμε υλοποιήσει ένα νέο σύστημα δεσμών μηνυμάτων για χρήση στο Eclipse. Ο μηχανισμός είναι αρκετά απλός και εντελώς γενικός και μπορεί να χρησιμοποιηθεί οπουδήποτε.

Περίληψη της νέας προσέγγισης:

Κατά τη δημιουργία ενός νέου μηνύματος:

Αρχεία παραδειγμάτων:

Κώδικας πελάτη

Παλιός κώδικας:

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$
    ...
  }
}

Messages.java

Παλιός κώδικας:

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);
  }
}

messages.properties

Παλιός κώδικας:

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.