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;
}