package com.gmail.dpierron.calibre.datamodel;
import com.gmail.dpierron.tools.Helper;
import java.util.Locale;
public class Language {
private final String id;
private Locale locale;
public Language(String id, String iso3) {
assert id != null;
assert Helper.isNotNullOrEmpty(iso3);
for (Locale l : Locale.getAvailableLocales()) {
if (l.getISO3Language().equalsIgnoreCase(iso3)) {
this.locale = l;
break;
}
}
// Force generic ENGLISH locale for awkward cases
if (this.locale == null || this.locale.getLanguage().equalsIgnoreCase("en")) {
this.locale = Locale.ENGLISH;
}
this.id = id;
}
public String getId() {
return id;
}
public String getIso3() {
assert locale != null;
return locale.getISO3Language();
}
public String getIso2() {
assert locale != null;
return locale.getLanguage();
}
public String getEnglishName() {
assert locale != null;
return locale.getDisplayLanguage().toLowerCase();
}
public String toString() {
assert locale != null;
return ""+locale.getLanguage()+"/"+locale.getISO3Language()+"/"+ locale.getDisplayLanguage();
}
public Locale getLocale() {
return locale;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof String) {
String lang = (String) obj;
return (getIso3().equalsIgnoreCase(lang)) || (getIso2().equalsIgnoreCase(lang)) || (getEnglishName().equalsIgnoreCase(lang));
} else
return super.equals(obj);
}
}