Berichtbundels

Beschrijving

De standaard Java-resourcebundels hebben geen efficiënte ruimtekenmerken. Als Eclipse wordt uitgevoerd, bevat het meestal vele geëxternaliseerde berichten. Daarom is een nieuw berichtbundelsysteem geïmplementeerd voor gebruik in Eclipse. Het mechanisme is eenvoudig en volledig generiek, het kan overal worden gebruikt.

Samenvatting van deze nieuwe benadering:

Als u een nieuw bericht maakt:

Voorbeeldbestanden:

Clientcode

Oude code:

public class MyClass {
  public void myMethod() {
    String message;
    ...
    // geen argumenten
    message = Messages.getString("key.one"); //$NON-NLS-1$
    ...
    // één argument binden
    message = MessageFormat.format(Messages.getString("key.two"), new Object[] {"voorbeeld"}); //$NON-NLS-1$ //$NON-NLS-2$
    ...
  }
}

Nieuwe code:

public class MyClass {
  public void myMethod() {
    String message;
    ...
    // geen argumenten
    message = Messages.key_one;
    ...
    // één argument binden
    message = NLS.bind(Messages.key_two, "voorbeeld"); //$NON-NLS-1$
    ...
  }
}

Messages.java

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

Nieuwe 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

Oude code:

key.one = Hallo wereld.
key.two = Dit is een {0} van het maken van een binding met één argument.

Nieuwe code:

key_one = Hallo wereld.
key_two = Dit is een {0} van het maken van een binding met één argument.