# gt-react: General Translation React SDK: Компоненты ветвления URL: https://generaltranslation.com/ru/docs/react/guides/branches.mdx --- title: Компоненты ветвления description: Как использовать компоненты ветвления для условного содержимого в переводах --- {/* СГЕНЕРИРОВАНО АВТОМАТИЧЕСКИ: Не редактируйте напрямую. Вместо этого измените шаблон в content/docs-templates/. */} Компоненты ветвления позволяют условно отображать содержимое внутри компонентов [``](/docs/react/api/components/t). Они обрабатывают динамическую логику, такую как условия if/else и правила множественного числа, обеспечивая при этом корректный перевод всех вариантов содержимого. ## Доступные компоненты * [``](/docs/react/api/components/branch): Условное содержимое на основе значений или состояний * [``](/docs/react/api/components/plural): Автоматическая обработка множественного числа по правилам локали ## Быстрый старт Компоненты ветвления используются внутри [``](/docs/react/api/components/t) для обработки условной логики: ```jsx import { T, Branch, Plural, Num, Var } from 'gt-react'; function NotificationPanel({ user, messageCount }) { return ( {user.name} is currently online

} away={

{user.name} is away

} >

{user.name} status unknown

You have {messageCount} message

} other={

You have {messageCount} messages

} />
); } ``` ## Как работают компоненты ветвления Компоненты ветвления решают проблему условного рендеринга внутри переводов следующим образом: 1. **Заменяют тернарные операторы** и условную логику внутри [``](/docs/react/api/components/t) 2. **Предоставляют резервный вариант**, если условия не соответствуют ожидаемым значениям 3. **Позволяют переводить** все возможные варианты контента 4. **Автоматически учитывают правила локали** для обработки множественного числа ```jsx // ❌ Это не работает — условная логика внутри

{isActive ? 'User is active' : 'User is inactive'}

// ✅ Это работает — условная логика с ветвлением User is active

} false={

User is inactive

} />
``` ## Руководство по компонентам ### Branch — Условное содержимое Используйте [``](/docs/react/api/components/branch) для любого условного рендеринга в зависимости от значений или состояний: ```jsx // Отображение статуса пользователя Administrator Dashboard

} user={

User Dashboard

} guest={

Guest Access

} >

Access level unknown

// Булевы условия Welcome back!

} false={

Please log in

} />
// Уровни подписки Upgrade to unlock premium features

} premium={

Enjoy your premium experience

} enterprise={

Contact support for enterprise solutions

} >

Subscription status unavailable

``` ### Plural — умная обработка множественного числа Используйте [``](/docs/react/api/components/plural) для содержимого, которое меняется в зависимости от количества: ```jsx // Базовая обработка множественного числа {itemCount} item in cart

} other={

{itemCount} items in cart

} />
// Обработка нулевого значения No new notifications

} one={

{notifications} notification

} other={

{notifications} notifications

} />
// Сложная обработка множественного числа (следует правилам Unicode CLDR) Due today

} one={

Due in {days} day

} few={

Due in {days} days

} many={

Due in {days} days

} other={

Due in {days} days

} />
``` ### Сочетание с переменными компонентами Ветвление и переменные компоненты отлично работают вместе: ```jsx Order {order.id} is pending. Total: {order.total}

} shipped={

Order {order.id} shipped on {order.shippedDate}

} delivered={

Order {order.id} was delivered successfully

} >

Order status unknown

``` ## Когда использовать компоненты ветвления ### Замените тернарные операторы Преобразуйте условную логику для использования с [``](/docs/react/api/components/t): ```jsx // ❌ Нельзя использовать тернарный оператор в {isActive ?

Active user

:

Inactive user

}
// ✅ Используйте Branch вместо него Active user

} false={

Inactive user

} />
``` ### Обработка нескольких условий Замените операторы switch или несколько условий if/else: ```jsx // ❌ Сложная условная логика {status === 'loading' ?

Loading...

: status === 'error' ?

Error occurred

: status === 'success' ?

Success!

:

Unknown status

}
// ✅ Чистая логика ветвления Loading...

} error={

Error occurred

} success={

Success!

} >

Unknown status

``` ### Правила множественного числа Замените ручную обработку множественного числа: ```jsx // ❌ Ручная обработка множественного числа {count === 1 ?

1 item

:

{count} items

}
// ✅ Автоматическая обработка множественного числа {count} item

} other={

{count} items

} />
``` ## Автономное использование Компоненты ветвления можно использовать вне [``](/docs/react/api/components/t) для чистой логики, без перевода: ```jsx // Чистый условный рендеринг } light={} > // Чистая обработка множественного числа } other={} /> ``` ## Частые проблемы ### Отсутствующие ключи вариантов Всегда указывайте резервный вариант для значений, которые не совпадают ни с одним вариантом: ```jsx // ❌ Нет резервного варианта для неожиданных значений } user={} // Что если userRole равно "moderator"? /> // ✅ Всегда указывайте резервный вариант } user={} > {/* Резервный вариант для любого другого значения */} ``` ### Неполные формы множественного числа Укажите необходимые формы множественного числа для локали по умолчанию: ```jsx // ❌ Отсутствует форма "other" 1 item

} // А как насчёт 0, 2, 3 и т.д.? /> // ✅ Укажите необходимые формы No items

} one={

1 item

} other={

{count} items

} /> ``` ### Сложная вложенная логика Хотя такой вариант работает, мы рекомендуем делать логику ветвления простой и избегать глубокой вложенности: ```jsx // ❌ Сложная вложенная ветвящаяся логика {/* Сложно читать и поддерживать */} // ✅ Упростите логику или используйте несколько компонентов } active-offline={} inactive-online={} > ``` Подробнее о правилах обработки множественного числа см. в [документации Unicode CLDR](https://cldr.unicode.org/index/cldr-spec/plural-rules). ## Следующие шаги * [Руководство по переводу строк](/docs/react/guides/strings) — Переводите обычный текст без JSX * [Руководство по динамическому контенту](/docs/key-concepts/dynamic-content) — Работа с переводом во время выполнения * Справочник API: * [Компонент ``](/docs/react/api/components/branch)