diff --git a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt
index 6243bd38d9..0c0cebca72 100644
--- a/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt
+++ b/features/poll/api/src/main/kotlin/io/element/android/features/poll/api/pollcontent/PollAnswerView.kt
@@ -20,9 +20,13 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.res.pluralStringResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.clearAndSetSemantics
+import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme
import io.element.android.compound.tokens.generated.CompoundIcons
+import io.element.android.features.poll.api.R
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
import io.element.android.libraries.designsystem.theme.components.Icon
@@ -32,14 +36,40 @@ import io.element.android.libraries.designsystem.theme.progressIndicatorTrackCol
import io.element.android.libraries.designsystem.toEnabledColor
import io.element.android.libraries.designsystem.utils.CommonDrawables
import io.element.android.libraries.ui.strings.CommonPlurals
+import io.element.android.libraries.ui.strings.CommonStrings
@Composable
internal fun PollAnswerView(
answerItem: PollAnswerItem,
modifier: Modifier = Modifier,
) {
+ val nbVotesText = pluralStringResource(
+ id = CommonPlurals.common_poll_votes_count,
+ count = answerItem.votesCount,
+ answerItem.votesCount,
+ )
+ val a11yText = buildString {
+ val sentenceDelimiter = stringResource(CommonStrings.common_sentence_delimiter)
+ append(answerItem.answer.text.removeSuffix("."))
+ if (answerItem.showVotes) {
+ append(sentenceDelimiter)
+ append(nbVotesText)
+ if (answerItem.votesCount != 0) {
+ append(sentenceDelimiter)
+ append(stringResource(R.string.a11y_polls_percent_of_total, (answerItem.percentage * 100).toInt()))
+ }
+ if (answerItem.isWinner) {
+ append(sentenceDelimiter)
+ append(stringResource(R.string.a11y_polls_winning_answer))
+ }
+ }
+ }
Row(
- modifier = modifier.fillMaxWidth(),
+ modifier = modifier
+ .fillMaxWidth()
+ .clearAndSetSemantics {
+ contentDescription = a11yText
+ },
) {
Icon(
imageVector = if (answerItem.isSelected) {
@@ -70,11 +100,6 @@ internal fun PollAnswerView(
style = if (answerItem.isWinner) ElementTheme.typography.fontBodyLgMedium else ElementTheme.typography.fontBodyLgRegular,
)
if (answerItem.showVotes) {
- val text = pluralStringResource(
- id = CommonPlurals.common_poll_votes_count,
- count = answerItem.votesCount,
- answerItem.votesCount
- )
Row(
modifier = Modifier.align(Alignment.Bottom),
verticalAlignment = Alignment.CenterVertically,
@@ -87,13 +112,13 @@ internal fun PollAnswerView(
)
Spacer(modifier = Modifier.width(2.dp))
Text(
- text = text,
+ text = nbVotesText,
style = ElementTheme.typography.fontBodySmMedium,
color = ElementTheme.colors.textPrimary,
)
} else {
Text(
- text = text,
+ text = nbVotesText,
style = ElementTheme.typography.fontBodySmRegular,
color = ElementTheme.colors.textSecondary,
)
diff --git a/features/poll/api/src/main/res/values/localazy.xml b/features/poll/api/src/main/res/values/localazy.xml
new file mode 100644
index 0000000000..2c90549056
--- /dev/null
+++ b/features/poll/api/src/main/res/values/localazy.xml
@@ -0,0 +1,5 @@
+
+
+ "%1$d percent of total votes"
+ "This is the winning answer"
+
diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml
index d2cbee9a19..21004580f1 100644
--- a/libraries/ui-strings/src/main/res/values/localazy.xml
+++ b/libraries/ui-strings/src/main/res/values/localazy.xml
@@ -259,6 +259,7 @@ Reason: %1$s."
"Sending…"
"Sending failed"
"Sent"
+ ". "
"Server not supported"
"Server URL"
"Settings"
diff --git a/tools/localazy/config.json b/tools/localazy/config.json
index b299c39ef7..5c70f3fe50 100644
--- a/tools/localazy/config.json
+++ b/tools/localazy/config.json
@@ -242,6 +242,12 @@
"screen_polls_history_.*"
]
},
+ {
+ "name" : ":features:poll:api",
+ "includeRegex" : [
+ "a11y\\.polls\\..*"
+ ]
+ },
{
"name" : ":features:securebackup:impl",
"includeRegex" : [