public static String getMessage(String messageId, Object[] args) {
    Context cx = Context.getCurrentContext();
    Locale locale = cx == null ? Locale.getDefault() : cx.getLocale();

    // ResourceBundle does caching.
    ResourceBundle rb =
        ResourceBundle.getBundle(
            "net.sourceforge.htmlunit.corejs.javascript.tools.resources.Messages", locale);

    String formatString;
    try {
      formatString = rb.getString(messageId);
    } catch (java.util.MissingResourceException mre) {
      throw new RuntimeException("no message resource found for message property " + messageId);
    }

    if (args == null) {
      return formatString;
    } else {
      MessageFormat formatter = new MessageFormat(formatString);
      return formatter.format(args);
    }
  }