Groupes de messages dans Eclipse 3.1

Description

Les caractéristiques d'espace des ResourceBundles Java classiques sont assez peu intéressantes. Dans la mesure où l'exécution d'Eclipse génère de nombreux messages externalisés, nous avons implémenté un nouveau scénario pour l'utilisation des groupes de messages dans Eclipse. Son fonctionnement est très simple et générique : il peut être utilisé partout.

Synthèse de la nouvelle approche :

Lors de la création d'un nouveau message :

Exemples :

Code client

Ancien code :

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

Nouveau code :

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

Ancien code :

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

Nouveau code :

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

Ancien code :

key.one = Hello world.
key.two = liaison avec un argument : {0}.

Nouveau code :

key_one = Hello world.
key_two = liaison avec un arguement : {0}.