code: public static String getFormattedMessage(Class<?> caller, String bundleName, String key, Object[] args, String defaultString) {
          return TraceNLSResolver.getInstance().getMessage(caller, null, bundleName, key, args, defaultString, true, null, false);
      }
docs: Return the message obtained by looking up the localized text
  corresponding to the specified key in the specified ResourceBundle and
  formatting the resultant text using the specified substitution arguments.
  <p>
  The message is formatted using the java.text.MessageFormat class.
  Substitution parameters are handled according to the rules of that class.
  Most noteably, that class does special formatting for native java Date and
  Number objects.
  <p>
  If an error occurs in obtaining the localized text corresponding to this
  key, then the defaultString is used as the message text. If all else fails,
  this class will provide one of the default English messages to indicate
  what occurred.
  <p>
  
  @param caller
  Class object calling this method
  @param bundleName
  the fully qualified name of the ResourceBundle. Must not be
  null.
  @param key
  the key to use in the ResourceBundle lookup. Must not be null.
  @param args
  substitution parameters that are inserted into the message
  text. Null is tolerated
  @param defaultString
  text to use if the localized text cannot be found. Must not be
  null.
  <p>
  @return a non-null message that is localized and formatted as
  appropriate.