Skip to content

Commit d5790fc

Browse files
feat: show audio track languages in i18n strings
1 parent a08fa5a commit d5790fc

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

android/src/main/kotlin/project/pipepipe/app/ui/component/player/PlayerControl.kt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -725,23 +725,38 @@ private fun MoreMenu(
725725
expanded = showAudioLanguageMenu,
726726
onDismissRequest = { onAudioLanguageMenuChange(false) }
727727
) {
728+
val originText = stringResource(MR.strings.sort_origin)
728729
availableLanguages.forEach { language ->
730+
// Get localized language name using Locale
731+
val languageCode = language.first
732+
val locale = java.util.Locale.forLanguageTag(languageCode)
733+
val localizedName = locale.getDisplayLanguage(java.util.Locale.getDefault())
734+
val displayText = if (localizedName.isNotBlank()) {
735+
if (language.second) {
736+
"$localizedName ($originText)"
737+
} else {
738+
localizedName
739+
}
740+
} else {
741+
if (language.second) {
742+
"$languageCode ($originText)"
743+
} else {
744+
languageCode
745+
}
746+
}
747+
729748
DropdownMenuItem(
730749
text = {
731750
Text(
732-
text = language.first + if (language.second) " (${
733-
stringResource(
734-
MR.strings.sort_origin
735-
)
736-
})" else "",
737-
color = if (currentLanguage == language.first)
751+
text = displayText,
752+
color = if (currentLanguage == languageCode)
738753
MaterialTheme.colorScheme.primary
739754
else
740755
MaterialTheme.colorScheme.onSurface
741756
)
742757
},
743758
onClick = {
744-
onAudioLanguageSelected(language.first)
759+
onAudioLanguageSelected(languageCode)
745760
onAudioLanguageMenuChange(false)
746761
}
747762
)

android/src/main/kotlin/project/pipepipe/app/ui/component/player/VideoPlayer.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,10 +461,13 @@ fun VideoPlayer(
461461
val languages = mutableSetOf<Pair<String, Boolean>>()
462462
currentTracks.groups.filter { it.type == C.TRACK_TYPE_AUDIO }.forEach { audioGroup ->
463463
audioGroup?.forEachIndexed { index, format ->
464-
val languageName = format.language ?: audioLanguageDefault
465-
languages.add(Pair(languageName, languageName.contains("Original")))
464+
val rawLanguage = format.language ?: audioLanguageDefault
465+
// Extract pure language code by removing everything after "."
466+
val languageCode = rawLanguage.substringBefore(".")
467+
val isOriginal = rawLanguage.contains("Original")
468+
languages.add(Pair(languageCode, isOriginal))
466469
if (audioGroup.isTrackSelected(index)) {
467-
currentLanguage = languageName
470+
currentLanguage = languageCode
468471
}
469472
}
470473
}

0 commit comments

Comments
 (0)