/** * Returns the locale formatted as language-region. If region is not set, language is returned. If * language is not set, empty string is returned. */ public String toLocaleId() { // Return lang-reg only if both lang and reg are present. Else return // lang. return hasLanguage() && hasRegion() ? language.getValue() + "-" + region.getValue() : hasLanguage() ? language.getValue() : ""; }
@Override public String toString() { return Objects.toStringHelper(this) .omitNullValues() .addValue(language.getValue()) .addValue(region.getValue()) .toString(); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((language == null) ? 0 : language.hashCode()); result = prime * result + ((region == null) ? 0 : region.hashCode()); return result; }
/** * Constructs a new {@linkplain Locale} matching a given language in a given locale. * * @param language the language * @param region the region */ private Locale(@NonNull LanguageQualifier language, @NonNull RegionQualifier region) { if (language.getValue().equals(FAKE_LANG_VALUE)) { language = ANY_LANGUAGE; } if (region.getValue().equals(FAKE_REGION_VALUE)) { region = ANY_REGION; } this.language = language; this.region = region; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Locale other = (Locale) obj; if (language == null) { if (other.language != null) return false; } else if (!language.equals(other.language)) return false; if (region == null) { if (other.region != null) return false; } else if (!region.equals(other.region)) return false; return true; }
/** * Returns a flag image to use for this locale * * @return a flag image, or a default globe icon */ @NonNull public Image getFlagImage() { Image image = null; String languageCode = hasLanguage() ? language.getValue() : null; String regionCode = hasRegion() ? region.getValue() : null; if (languageCode == null && regionCode == null) { return FlagManager.getGlobeIcon(); } else { FlagManager icons = FlagManager.get(); image = icons.getFlag(languageCode, regionCode); if (image == null) { image = FlagManager.getEmptyIcon(); } return image; } }