package org.jabref.logic.l10n; import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.TreeMap; public class Languages { public static final Map<String, String> LANGUAGES; static { LANGUAGES = new TreeMap<>(); // LANGUAGES contains mappings for supported languages. LANGUAGES.put("Dansk", "da"); LANGUAGES.put("Deutsch", "de"); LANGUAGES.put("English", "en"); LANGUAGES.put("Español", "es"); LANGUAGES.put("Persian (فارسی)", "fa"); LANGUAGES.put("Français", "fr"); LANGUAGES.put("Bahasa Indonesia", "in"); LANGUAGES.put("Italiano", "it"); LANGUAGES.put("Japanese", "ja"); LANGUAGES.put("Nederlands", "nl"); LANGUAGES.put("Norsk", "no"); LANGUAGES.put("Brazilian Portuguese", "pt_BR"); LANGUAGES.put("Russian", "ru"); LANGUAGES.put("Svenska", "sv"); LANGUAGES.put("Turkish", "tr"); LANGUAGES.put("Vietnamese", "vi"); LANGUAGES.put("Simplified Chinese", "zh"); } private Languages() { } public static Optional<Locale> convertToSupportedLocale(String language) { Objects.requireNonNull(language); if (!LANGUAGES.values().contains(language)) { if (!language.contains("_")) { return Optional.empty(); } String lang = language.split("_")[0]; if (!LANGUAGES.values().contains(lang)) { return Optional.empty(); } return Optional.of(new Locale(lang)); } return Optional.of(new Locale(language)); } }