protected Locale parseLocale(Element localeElt, ZimbraSoapContext zc) {
protected Locale parseLocale(Element localeElt, ZimbraSoapContext zsc) {
    protected Locale parseLocale(Element localeElt, ZimbraSoapContext zc) {        String locStr = localeElt.getText();                if (locStr != null && locStr.length() > 0) {            Matcher m = sLocalePattern.matcher(locStr);            if (m.lookingAt()) {                String lang=null, country=null, variant=null;                                if (m.start(1) != -1)                    lang = locStr.substring(m.start(1), m.end(1));                                if (lang == null || lang.length()<=0)                    return null;                                if (m.start(2) != -1)                    country = locStr.substring(m.start(2), m.end(2));                                if (m.start(4) != -1)                    variant = locStr.substring(m.start(4), m.end(4));                                if (variant != null && country != null && variant.length() > 0 && country.length() > 0)                    return new Locale(lang, country, variant);                                if (country != null && country.length() > 0)                    return new Locale(lang, country);                                return new Locale(lang);            }        }                        return null;    }