Fix for Brazilian Portuguese language preferences when using OpenSubtitles
@see https://www.filebot.net/forums/viewtopic.php?f=8&t=4992
This commit is contained in:
parent
e312e23680
commit
de98fab2ed
@ -456,42 +456,36 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// some additional special handling
|
|
||||||
subLanguageMap.put("iw", "heb"); // Hebrew
|
|
||||||
subLanguageMap.put("pb", "pob"); // Brazilian Portuguese
|
|
||||||
subLanguageMap.put("zh", "chi"); // Chinese (Simplified)
|
|
||||||
subLanguageMap.put("tw", "zht"); // Chinese (Traditional)
|
|
||||||
|
|
||||||
return subLanguageMap;
|
return subLanguageMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getLanguageCode(Locale locale) {
|
|
||||||
switch (locale.toString()) {
|
|
||||||
case "pt_BR":
|
|
||||||
return "pb";
|
|
||||||
case "zh_TW":
|
|
||||||
return "tw";
|
|
||||||
default:
|
|
||||||
return locale.getLanguage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String[] getLanguageFilter(Locale locale) {
|
|
||||||
return locale == null || locale.getLanguage().isEmpty() ? new String[0] : new String[] { getSubLanguageID(locale) };
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String getSubLanguageID(Locale locale) {
|
protected String getSubLanguageID(Locale locale) {
|
||||||
if (locale == null || locale.getLanguage().isEmpty()) {
|
if (locale == null || locale.equals(Locale.ROOT)) {
|
||||||
return "all";
|
return "all";
|
||||||
}
|
}
|
||||||
|
|
||||||
String subLanguageID = null;
|
// some special handling
|
||||||
|
switch (locale.toString()) {
|
||||||
|
case "en_US":
|
||||||
|
return "eng"; // English
|
||||||
|
case "pt_BR":
|
||||||
|
return "pob"; // Brazilian Portuguese
|
||||||
|
case "zh_CN":
|
||||||
|
return "chi"; // Chinese (Simplified)
|
||||||
|
case "zh_TW":
|
||||||
|
return "zht"; // Chinese (Traditional)
|
||||||
|
case "iw_IL":
|
||||||
|
return "heb"; // Hebrew
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, String> languageMap;
|
||||||
try {
|
try {
|
||||||
subLanguageID = getSubLanguageMap().get(getLanguageCode(locale));
|
languageMap = getSubLanguageMap();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalStateException("Failed to retrieve subtitle language map", e);
|
throw new IllegalStateException("Failed to retrieve subtitle language map", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String subLanguageID = languageMap.get(locale.getLanguage());
|
||||||
if (subLanguageID == null) {
|
if (subLanguageID == null) {
|
||||||
throw new IllegalArgumentException("SubLanguageID not found: " + locale);
|
throw new IllegalArgumentException("SubLanguageID not found: " + locale);
|
||||||
}
|
}
|
||||||
@ -499,6 +493,10 @@ public class OpenSubtitlesClient implements SubtitleProvider, VideoHashSubtitleS
|
|||||||
return subLanguageID;
|
return subLanguageID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String[] getLanguageFilter(Locale locale) {
|
||||||
|
return locale == null || locale.getLanguage().isEmpty() ? new String[0] : new String[] { getSubLanguageID(locale) };
|
||||||
|
}
|
||||||
|
|
||||||
public Cache getCache(String section) {
|
public Cache getCache(String section) {
|
||||||
return Cache.getCache(getName() + "_" + section, CacheType.Daily);
|
return Cache.getCache(getName() + "_" + section, CacheType.Daily);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user