public String toString() {
   String locStr = RTConfig.getString(RTKey.SESSION_LOCALE, null);
   if (StringTools.isBlank(locStr)) {
     return this.getDefault();
   } else {
     Locale loc = I18N.getLocale(locStr);
     return this.toString(loc);
   }
 }
  /** ** Debug/Testing entry point ** @param argv The command-line args */
  public static void main(String argv[]) {
    RTConfig.setCommandLineArgs(argv);

    if (RTConfig.hasProperty(ARG_PACKAGE)) {
      String pkg = RTConfig.getString(ARG_PACKAGE, "org.opengts.util");
      String loc = RTConfig.getString(ARG_LOCALE, "en");
      String key = RTConfig.getString(ARG_KEY, "");
      Locale locale = I18N.getLocale(loc);
      Print.sysPrintln("Package: " + pkg);
      Print.sysPrintln("Locale : " + locale + " [" + loc + "]");
      Print.sysPrintln("Key    : " + key);
      I18N i18n = I18N.getI18N(pkg, locale);
      if (i18n != null) {
        Print.sysPrintln("String : " + i18n.getString(key, "Undefined"));
      } else {
        Print.sysPrintln("Package resource not found");
      }
      System.exit(0);
    }

    if (RTConfig.hasProperty("test")) {
      I18N i18n = getI18N(I18N.class, null);
      i18n.printKeyValues();
      String m3 =
          i18n.getString(
              "m.m3",
              "{0}",
              new Object() {
                public String toString() {
                  return mainStr;
                }
              });
      String m2 = i18n.getString("m.m2", "How Now Brown {0}", m3);
      String m1 = i18n.getString("m.m1", "Message: \\n{0}", m2);
      Print.sysPrintln(m1);
      mainStr = "Horse";
      Print.sysPrintln(m1);
    }
  }
 /**
  * ** Gets the Java Locale instance based on the specified locale name ** @param loc The name of
  * the Locale ** @param dft The default Locale returned ** @return The Java Locale instance
  */
 public static Locale getLocale(String loc, Locale dft) {
   String locale = !StringTools.isBlank(loc) ? loc : RTConfig.getString(RTKey.LOCALE, "");
   if (StringTools.isBlank(locale)) {
     return dft;
   } else {
     int p = locale.indexOf("_");
     try {
       if (p < 0) {
         String language = locale;
         return new Locale(language);
       } else {
         String language = locale.substring(0, p);
         String country = locale.substring(p + 1);
         return new Locale(language, country);
       }
     } catch (Throwable th) {
       return dft;
     }
   }
 }