From ff88c19e98185d6f11eb888fe19fb64894120991 Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Wed, 4 Mar 2026 22:09:16 +0530 Subject: [PATCH] language code matching with 3-letter subtags. fixes #574 --- .../ui/screens/player/PlayerSubtitleUtils.kt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerSubtitleUtils.kt b/app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerSubtitleUtils.kt index 2fff0d60..d0e58444 100644 --- a/app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerSubtitleUtils.kt +++ b/app/src/main/java/com/nuvio/tv/ui/screens/player/PlayerSubtitleUtils.kt @@ -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" }