Files
auto-subtitle/api/src/main/java/com/github/gtache/autosubtitle/Language.java
Guillaume Tâche 5efdaa6f63 Extraction works
2024-08-04 21:55:30 +02:00

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