protected Locale getParentLocale()

in src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java [576:609]


    protected Locale getParentLocale(Locale locale) {
        if (!locale.getScript().isEmpty() && !locale.getVariant().isEmpty()) {
            try {
                return new Locale.Builder()
                        .setLanguage(locale.getLanguage())
                        .setRegion(locale.getCountry())
                        .setScript(locale.getScript())
                        .build();
            } catch (IllformedLocaleException e) {
                // should never happen, as all elements already come from a valid locale object
                return new Locale(locale.getLanguage(), locale.getCountry());
            }
        } else if (!locale.getScript().isEmpty() && !locale.getCountry().isEmpty()) {
            try {
                return new Locale.Builder()
                        .setLanguage(locale.getLanguage())
                        .setScript(locale.getScript())
                        .build();
            } catch (IllformedLocaleException e) {
                // should never happen, as all elements already come from a valid locale object
                return new Locale(locale.getLanguage());
            }
        } else if (!locale.getScript().isEmpty()) {
            return new Locale(locale.getLanguage());
        } else if (!locale.getVariant().isEmpty()) {
            return new Locale(locale.getLanguage(), locale.getCountry());
        } else if (!locale.getCountry().isEmpty()) {
            return new Locale(locale.getLanguage());
        } else if (!locale.getLanguage().equals(defaultLocale.getLanguage())) {
            return defaultLocale;
        }
        // the default locale has no parent locale
        return null;
    }