/** @see #formattedMessage */
  public String getFormattedMessage() {
    // resolve msg somente na primeira vez
    if (formattedMessage == null && i18nMessage != null) {
      List<ResourceBundle> rbs = this.source.getApplication().getResouceBundle();
      if (rbs != null) {
        for (ResourceBundle rb : rbs) {
          try {
            String msg = rb.getString(i18nMessage);
            if (msg != null) {
              formattedMessage = MessageFormat.format(msg, param.toArray(new Object[] {}));
              break;
            }
          } catch (MissingResourceException mre) {
            // silently igonre
            continue;
          }
        }
      }
    }

    // verifica msgs da platforma
    if (StringUtils.isBlank(formattedMessage)) {
      List<ResourceBundleMessageSource> rbs =
          PlatformMessageRegistry.getInstance().getMessageBundles();
      if (rbs != null) {
        for (ResourceBundleMessageSource rb : rbs) {
          try {
            String msg =
                rb.getMessage(
                    i18nMessage,
                    param.toArray(new Object[] {}),
                    source.getApplication().getCurrentLocale());

            formattedMessage = msg;
            break;

          } catch (NoSuchMessageException nsme) {
            // silently igonre
            continue;
          }
        }
      }
    }

    if (StringUtils.isBlank(formattedMessage)) {
      formattedMessage = MessageFormat.format(i18nMessage, param.toArray(new Object[] {}));
    }

    return formattedMessage;
  }