public static Locale parseLocaleString(String localeString) {
      String[] parts = tokenizeToStringArray(localeString, "_ ", false, false);
      String language = (parts.length > 0 ? parts[0] : "");
      String country = (parts.length > 1 ? parts[1] : "");
      validateLocalePart(language);
      validateLocalePart(country);
      String variant = "";
      if (parts.length > 2) {
         // There is definitely a variant, and it is everything after the country
         // code sans the separator between the country code and the variant.
         int endIndexOfCountryCode = localeString.lastIndexOf(country) + country.length();
         // Strip off any leading '_' and whitespace, what's left is the variant.
         variant = trimLeadingWhitespace(localeString.substring(endIndexOfCountryCode));
         if (variant.startsWith("_")) {
            variant = trimLeadingCharacter(variant, '_');
         }
      }
      return (language.length() > 0 ? new Locale(language, country, variant) : null);
   }