ui: localize the collapsed bio More label

Pass the More label from a string resource into the collapsed bio splitter so
the suffix width and the bold span use the translated text.
This commit is contained in:
austinried
2026-10-19 08:55:06 +00:00
parent 0e90f51cfa
commit de64e8bc69
2 changed files with 7 additions and 4 deletions
@@ -524,6 +524,7 @@ private fun ArtistBio(
val measurer = rememberTextMeasurer() val measurer = rememberTextMeasurer()
val density = LocalDensity.current val density = LocalDensity.current
val style = MaterialTheme.typography.bodyMedium val style = MaterialTheme.typography.bodyMedium
val moreText = stringResource(R.string.artist_bio_more)
BoxWithConstraints(modifier.fillMaxWidth().padding(top = BIO_TOP_GAP)) { BoxWithConstraints(modifier.fillMaxWidth().padding(top = BIO_TOP_GAP)) {
val fullWidth = with(density) { maxWidth.roundToPx() } val fullWidth = with(density) { maxWidth.roundToPx() }
val reserve = with(density) { BIO_ACTION_RESERVE.roundToPx() } val reserve = with(density) { BIO_ACTION_RESERVE.roundToPx() }
@@ -533,9 +534,9 @@ private fun ArtistBio(
}.coerceAtLeast(1) }.coerceAtLeast(1)
val reserveLines = ceil(with(density) { BIO_ACTION_HEIGHT.toPx() } / lineHeightPx).toInt().coerceAtLeast(1) val reserveLines = ceil(with(density) { BIO_ACTION_HEIGHT.toPx() } / lineHeightPx).toInt().coerceAtLeast(1)
val lines = val lines =
remember(text, fullWidth, reserve, reserveLines, collapsed) { remember(text, fullWidth, reserve, reserveLines, collapsed, moreText) {
if (collapsed) { if (collapsed) {
splitBioCollapsed(measurer, text, style, fullWidth, reserve) splitBioCollapsed(measurer, text, style, fullWidth, reserve, moreText)
} else { } else {
splitBio(measurer, text, style, fullWidth, reserve, reserveLines).map { splitBio(measurer, text, style, fullWidth, reserve, reserveLines).map {
AnnotatedString(it.ifEmpty { " " }) AnnotatedString(it.ifEmpty { " " })
@@ -603,6 +604,7 @@ internal fun splitBioCollapsed(
style: TextStyle, style: TextStyle,
fullWidth: Int, fullWidth: Int,
reserve: Int, reserve: Int,
moreText: String,
): List<AnnotatedString> { ): List<AnnotatedString> {
val words = val words =
text text
@@ -627,7 +629,7 @@ internal fun splitBioCollapsed(
val more = val more =
buildAnnotatedString { buildAnnotatedString {
append("… ") append("… ")
withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { append("More") } withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { append(moreText) }
} }
val moreWidth = measurer.measure(more, style, maxLines = 1).size.width val moreWidth = measurer.measure(more, style, maxLines = 1).size.width
val secondAvailable = (available - moreWidth).coerceAtLeast(1) val secondAvailable = (available - moreWidth).coerceAtLeast(1)
@@ -645,7 +647,7 @@ internal fun splitBioCollapsed(
buildAnnotatedString { buildAnnotatedString {
if (second.isNotEmpty()) append("$second ") if (second.isNotEmpty()) append("$second ")
append("… ") append("… ")
withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { append("More") } withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { append(moreText) }
} }
return listOf(AnnotatedString(first), secondLine) return listOf(AnnotatedString(first), secondLine)
} }
+1
View File
@@ -38,6 +38,7 @@
<string name="artist_section_albums">Albums</string> <string name="artist_section_albums">Albums</string>
<string name="artist_section_appearances">Appears on</string> <string name="artist_section_appearances">Appears on</string>
<string name="artist_bio_empty">No artist bio available.</string> <string name="artist_bio_empty">No artist bio available.</string>
<string name="artist_bio_more">More</string>
<string name="artist_meta">%1$s · %2$s</string> <string name="artist_meta">%1$s · %2$s</string>
<string name="resources_filter_genre">Genre</string> <string name="resources_filter_genre">Genre</string>
<string name="resources_filter_starred">Starred</string> <string name="resources_filter_starred">Starred</string>