Balíky zpráv v Eclipse 3.1

Popis

Standardní balíky ResourceBundles prostředí Java vykazují poměrně neefektivní nakládání s prostorem. Provoz platformy Eclipse souvisí s poměrně velkým počtem externalizovaných zpráv, a proto jsme implementovali nový balík zpráv určený pro použití na platformě Eclipse. Nový mechanizmus je poměrně jednoduchý a je zcela generický - můžete jej použít kdekoli.

Souhrn nového přístupu:

Chcete-li vytvořit novou zprávu:

Ukázkové soubory:

Kód klienta

Starý kód:

public class MyClass {
  public void myMethod() {
    String message;
    ...
    // bez argumentů
    message = Messages.getString("key.one"); //$NON-NLS-1$
    ...
    // vazba jednoho argumentu
    message = MessageFormat.format(Messages.getString("key.two"), new Object[] {"example usage"}); //$NON-NLS-1$ //$NON-NLS-2$
    ...
  }
}

Nový kód:

public class MyClass {
  public void myMethod() {
    String message;
    ...
    // bez argumentů
    message = Messages.key_one;
    ...
    // vazba jednoho argumentu
    message = NLS.bind(Messages.key_two, "example usage"); //$NON-NLS-1$
    ...
  }
}

Messages.java

Starý kód:

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

Nový kód:

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

Starý kód:

key.one = Ahoj světe.
key.two = Toto je {0} vazby s jedním argumentem. 

Nový kód:

key_one = Ahoj světe.
key_two = Toto je {0} vazby s jedním argumentem.