Insiemi di messaggi in Eclipse 3.1

Descrizione

Gli insiemi di risorse Java standard presentano caratteristiche di utilizzo dello spazio poco efficienti. Dal momento che Eclipse in esecuzione tende ad avere molti messaggi esternalizzati, è stata implementata una nuova gestione degli insiemi di messaggi da utilizzare in Eclipse. Il meccanismo è semplice e generico, può essere utilizzato ovunque.

Riepilogo per il nuovo approccio:

Quando si crea un nuovo messaggio:

File di esempio:

Codice client

Vecchio codice:

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

Nuovo codice:

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

Vecchio codice:

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

Nuovo codice:

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

Vecchio codice:

key.one = Hello world.
key.two = This is an {0} of binding with one argument.

Nuovo codice:

key_one = Hello world.
key_two = This is an {0} of binding with one argument.