# General Translation React SDKs (gt-react, gt-next, gt-react-native): Обработка форм множественного числа и ветвей
URL: https://generaltranslation.com/ru/docs/react/guides/handling-plurals-and-branches.mdx
---
title: Обработка форм множественного числа и ветвей
description: Как обрабатывать формы множественного числа в React и условный переведённый контент с помощью и .
related:
links:
- /docs/react/guides/formatting-variables
- /docs/react/guides/translating-jsx
- /docs/react/guides/translating-strings
- /docs/react/guides/translating-with-dictionaries
---
В разных локалях используются разные формы множественного числа: в английском обычно есть `one` и `other`, тогда как в некоторых языках требуются дополнительные формы.
Используйте [``](/docs/react/reference/components/plural) для формулировок, зависящих от количества, а [``](/docs/react/reference/components/branch) — для другого условного контента.
## Выберите формы множественного числа или ветви [#choose]
* Используйте [``](/docs/react/reference/components/plural), когда формулировка зависит от числа, например от количества сообщений или результатов поиска.
* Используйте [``](/docs/react/reference/components/branch), когда содержимое зависит от статуса, плана, логического или другого значения.
* Поместите любой из этих компонентов внутрь [``](/docs/react/reference/components/t), чтобы каждый вариант можно было перевести.
* Оборачивайте динамические значения в каждом варианте [компонентом переменной](/docs/react/guides/formatting-variables), например [``](/docs/react/reference/components/num) или [``](/docs/react/reference/components/var).
Оба компонента работают одинаково в React, Next.js, TanStack Start и React Native. Различается только пакет импорта.
## Склонение по числу с `` [#plural]
Не формируйте формы множественного числа, проверяя `count === 1` или добавляя `s`; это применимо только к английской грамматике. Передайте количество как [`n`](/docs/react/reference/components/plural#n), затем укажите формы, используемые в вашем языке-источнике. [``](/docs/react/reference/components/plural) выбирает правильную форму согласно [правилам множественного числа Unicode CLDR](https://cldr.unicode.org/index/cldr-spec/plural-rules) для активной локали.
```tsx
import { T, Plural, Num } from 'gt-react';
You have {count} message.>}
other={<>You have {count} messages.>}
/>
;
```
```tsx
import { T, Plural, Num } from 'gt-next';
You have {count} message.>}
other={<>You have {count} messages.>}
/>
;
```
```tsx
import { T, Plural, Num } from 'gt-tanstack-start';
You have {count} message.>}
other={<>You have {count} messages.>}
/>
;
```
```tsx
import { T, Plural, Num } from 'gt-react-native';
You have {count} message.}
other={You have {count} messages.}
/>
;
```
Укажите [`категории множественного числа`](/docs/react/reference/components/plural#form), используемые в вашем языке-источнике; для английского обычно это `one` и `other`. Переводчики укажут категории, необходимые для каждого целевого языка, например `zero`, `two`, `few` и `many`.
Если точная категория недоступна, [``](/docs/react/reference/components/plural) использует ветвь `plural`, затем `other`. [`children`](/docs/react/reference/components/plural#children) отображается, только если отсутствуют обе универсальные ветви:
```tsx
One result>}>
{count} results
;
```
## Ветвление по значению с помощью `` [#branch]
Используйте [``](/docs/react/reference/components/branch), когда содержимое зависит от значения, а не от количества. Передайте значение в [`branch`](/docs/react/reference/components/branch#branch), добавьте [prop для каждого ожидаемого значения](/docs/react/reference/components/branch#value) и используйте [`children`](/docs/react/reference/components/branch#children) в качестве резервного варианта.
```tsx
Upgrade to unlock more.
}
pro={Thanks for going Pro!
}
>
Welcome.
;
```
Каждая ветвь переводится отдельно, поэтому переводчики могут адаптировать её формулировку целиком, не подстраиваясь под встроенное условие JavaScript.
### Заменяйте условные выражения внутри ``
Встроенный тернарный оператор делает дочерние элементы [``](/docs/react/reference/components/t) динамическими и мешает надёжному извлечению. Представьте то же условие с помощью [``](/docs/react/reference/components/branch):
```tsx
// ❌ Inline-условие
{isActive ? 'Active' : 'Inactive'};
// ✅ Переводимые ветки
Inactive
;
```
*Примечание: [``](/docs/react/reference/components/branch) игнорирует атрибуты `data-*`, поскольку незарезервированные пропсы используются как значения ветвей. Добавляйте тестовые ID и другие атрибуты данных к элементу-обёртке; правило линтера [`no-data-attrs-on-branch`](/docs/react/reference/lint-rules#no-data-attrs) выявляет эту ошибку.*
## Next steps
- /docs/react/guides/formatting-variables
- /docs/react/guides/translating-jsx
- /docs/react/guides/translating-strings
- /docs/react/guides/translating-with-dictionaries