app.gif

plurals – это строковый ресурс Android для текста, который зависит от числа. Он нужен, чтобы писать не 1 day и 2 days вручную через if, а отдавать выбор формы системе: 1 день, 2 дня, 5 дней, 21 день.

В проекте https://github.com/michaelbel/Plurals один ресурс R.plurals.days_count показан двумя способами: через обычный Fragment с XML-разметкой и через Compose. Также в проекте есть набор локализаций, на которых хорошо видно, что plural-правила в разных языках устроены по-разному.

Зачем нужны plurals

Плохой вариант – собирать строку вручную:

val text = if (count == 1) {
    "$count day"
} else {
    "$count days"
}

Для английского это еще выглядит терпимо, но для русского уже не работает:

1 день
2 дня
5 дней
21 день
22 дня
25 дней

А в арабском или словенском форм еще больше. Поэтому plural-логику не стоит писать руками. Android уже знает правила текущей локали и может выбрать нужную форму по числу.

Базовый ресурс

В values/strings.xml проекта объявлен plural для английского:

<plurals name="days_count">
    <item quantity="one">%d day</item>
    <item quantity="other">%d days</item>
</plurals>

name – имя ресурса, через него в коде будет доступен R.plurals.days_count.

quantity – грамматическая категория. Android поддерживает: