98 lines
2.8 KiB
Java
98 lines
2.8 KiB
Java
package com.github.gtache.autosubtitle;
|
|
|
|
import java.util.Locale;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
import static java.util.Objects.requireNonNull;
|
|
|
|
/**
|
|
* A list of languages //TODO add more or use Locale if possible?
|
|
*/
|
|
public enum Language {
|
|
AR("arabic", "ar", "ara"),
|
|
BE("belarusian", "be", "bel"),
|
|
BG("bulgarian", "bg", "bul"),
|
|
CS("czech", "cs", "cze"),
|
|
DA("danish", "da", "dan"),
|
|
DE("german", "de", "deu", "ger"),
|
|
EL("greek", "el", "gre"),
|
|
EN("english", "en", "eng"),
|
|
ES("spanish", "es", "spa"),
|
|
FA("persian", "fa", "per"),
|
|
FI("finnish", "fi", "fin"),
|
|
FR("french", "fr", "fra", "fre"),
|
|
HE("hebrew", "he", "heb"),
|
|
HR("croatian", "hr", "hrv"),
|
|
ID("indonesian", "id", "ind"),
|
|
IT("italian", "it", "ita", "gre"),
|
|
JA("japanese", "ja", "jpn"),
|
|
KO("korean", "ko", "kor"),
|
|
LA("latin", "la", "lat"),
|
|
LB("luxembourgish", "lb", "ltz"),
|
|
LO("lao", "lo", "lao"),
|
|
LT("lithuanian", "lt", "lit"),
|
|
MT("maltese", "mt", "mlt"),
|
|
MY("myanmar", "my", "mya"),
|
|
NL("dutch", "nl", "nld"),
|
|
NO("norwegian", "no", "nor"),
|
|
PL("polish", "pl", "pol"),
|
|
PT("portuguese", "pt", "por"),
|
|
RO("romanian", "ro", "ron"),
|
|
RU("russian", "ru", "rus"),
|
|
SK("slovak", "sk", "slo"),
|
|
SL("slovenian", "sl", "slv"),
|
|
SV("swedish", "sv", "swe"),
|
|
TH("thai", "th", "tha"),
|
|
TR("turkish", "tr", "tur"),
|
|
UK("ukrainian", "uk", "ukr"),
|
|
VI("vietnamese", "vi", "vie"),
|
|
ZH("chinese", "zh", "zho", "chi"),
|
|
AUTO("auto", "auto", "auto");
|
|
|
|
private static final Map<String, Language> STRING_LANGUAGE_MAP;
|
|
|
|
static {
|
|
final Map<String, Language> map = new java.util.HashMap<>();
|
|
for (final var language : Language.values()) {
|
|
map.put(language.name().toLowerCase(), language);
|
|
map.put(language.iso2, language);
|
|
map.put(language.iso3, language);
|
|
language.aliases.forEach(s -> map.put(s, language));
|
|
}
|
|
STRING_LANGUAGE_MAP = map;
|
|
}
|
|
|
|
private final String englishName;
|
|
private final String iso2;
|
|
private final String iso3;
|
|
private final Set<String> aliases;
|
|
|
|
Language(final String englishName, final String iso2, final String iso3, final String... aliases) {
|
|
this.englishName = requireNonNull(englishName);
|
|
this.iso2 = requireNonNull(iso2);
|
|
this.iso3 = requireNonNull(iso3);
|
|
this.aliases = Set.of(aliases);
|
|
}
|
|
|
|
public String englishName() {
|
|
return englishName;
|
|
}
|
|
|
|
public String iso2() {
|
|
return iso2;
|
|
}
|
|
|
|
public String iso3() {
|
|
return iso3;
|
|
}
|
|
|
|
public static Language getLanguage(final String name) {
|
|
return STRING_LANGUAGE_MAP.get(name.toLowerCase());
|
|
}
|
|
|
|
public static Language getDefault() {
|
|
return STRING_LANGUAGE_MAP.getOrDefault(Locale.getDefault().getLanguage(), EN);
|
|
}
|
|
}
|