language code matching with 3-letter subtags. fixes #574
This commit is contained in:
parent
f454578628
commit
ff88c19e98
1 changed files with 26 additions and 0 deletions
|
|
@ -73,6 +73,32 @@ internal object PlayerSubtitleUtils {
|
|||
if (language.isNullOrBlank()) return false
|
||||
val normalizedLanguage = normalizeLanguageCode(language)
|
||||
val normalizedTarget = normalizeLanguageCode(target)
|
||||
if (matchesNormalizedLanguage(normalizedLanguage, normalizedTarget)) {
|
||||
return true
|
||||
}
|
||||
|
||||
val subtags = language.trim().lowercase()
|
||||
.replace('_', '-')
|
||||
.split('-', '.', '/', ' ')
|
||||
.map { it.trim() }
|
||||
.filter { it.isNotBlank() }
|
||||
if (subtags.size <= 1) {
|
||||
return false
|
||||
}
|
||||
for (subtag in subtags.drop(1)) {
|
||||
if (subtag.length != 3) continue
|
||||
val normalizedSubtag = normalizeLanguageCode(subtag)
|
||||
if (matchesNormalizedLanguage(normalizedSubtag, normalizedTarget)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private fun matchesNormalizedLanguage(
|
||||
normalizedLanguage: String,
|
||||
normalizedTarget: String
|
||||
): Boolean {
|
||||
if (normalizedTarget == "pt") {
|
||||
return normalizedLanguage == "pt"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue