# gt-react: General Translation React SDK: Компонент T URL: https://generaltranslation.com/ru/docs/react/guides/t.mdx --- title: Компонент T description: Как добавить интернационализацию в JSX-компоненты с помощью компонента T --- {/* АВТОМАТИЧЕСКИ СГЕНЕРИРОВАНО: не редактируйте напрямую. Вместо этого изменяйте шаблон в content/docs-templates/ instead. */} [Компонент ``](/docs/react/api/components/t) — основной инструмент для интернационализации JSX-контента в вашем React-приложении. Он оборачивает JSX-элементы и автоматически переводит их в зависимости от локали пользователя. **Совет:** Если включена [автоматическая JSX-инъекция](/docs/cli/features/auto-jsx-injection), компилятор может автоматически оборачивать ваш JSX в компоненты перевода на этапе сборки. В большинстве случаев добавлять `` вручную не потребуется. Однако ручное использование `` по-прежнему полезно, если вам нужен более точный контроль, например чтобы задать конкретный `id` или `context`. ## Быстрый старт Оберните любое статическое содержимое JSX в [``](/docs/react/api/components/t): ```jsx import { T } from 'gt-react'; // До function Greeting() { return

Hello, world!

; } // После function Greeting() { return

Hello, world!

; } ``` Для динамического содержимого в [``](/docs/react/api/components/t) используйте [компоненты переменных](/docs/react/guides/variables) и [компоненты ветвления](/docs/react/guides/branches). ## Базовое использование [Компонент ``](/docs/react/api/components/t) принимает в качестве дочерних элементов любой JSX-контент: ```jsx // Простой текст Welcome to our app // HTML-элементы

Page Title

// Сложный вложенный JSX
Important: Please read carefully.
``` ## Параметры конфигурации ### Добавление контекста Укажите контекст для перевода неоднозначных терминов: ```jsx Click the toast to dismiss ``` ## Когда использовать T Используйте [``](/docs/react/api/components/t) **только для статического контента**: ```jsx // ✅ Статическое содержимое работает

Welcome to our site

// ❌ Динамическое содержимое не работает

Hello {username}

Today is {new Date()}

// ✅ Используйте компоненты переменных для динамического содержимого

Hello {username}

``` Компоненты переменных и Branching предназначены для использования внутри [``](/docs/react/api/components/t) при работе с динамическим содержимым. Подробности см. в руководствах [Компоненты переменных](/docs/react/guides/variables) и [Компоненты ветвления](/docs/react/guides/branches). ## Примеры ### Простые элементы ```jsx // Простой текст Hello, world! // Кнопка с текстом // Заголовок со стилями

Welcome

``` ### Составные компоненты ```jsx // Навигационное меню // Предупреждающее сообщение
Your session expires in 5 minutes
``` ### С переменными Вы можете использовать компоненты переменных, чтобы применять локализованное форматирование. ```jsx // Объединение статического текста с динамическими значениями

Welcome back, {user.name}!

You have {user.friends.length} friends online

Your birthday is {user.birthday}

Your balance is {user.balance}

``` Подробнее о [компоненте ``](/docs/react/api/components/var) см. в [руководстве по компонентам переменных](/docs/react/guides/variables). ## Настройка продакшена ### Процесс сборки Добавьте перевод в пайплайн сборки: ```json title="package.json" { "scripts": { "build": "npx gt translate && <...YOUR_BUILD_COMMAND...>" } } ``` ### Поведение в разработке и продакшене * **Разработка**: С API-ключом для разработки переводы выполняются on-demand при рендеринге компонентов. Во время разработки вы будете видеть перевод в реальном времени. * **Продакшен**: Все переводы заранее собираются на этапе сборки и становятся доступны после публикации приложения. Чтобы включить перевод в реальном времени во время разработки, задайте API-ключ для разработки в переменных окружения. Создать его можно на панели управления в разделе [API Keys](https://dash.generaltranslation.com/en-US/project/api-keys). ### Вопросы конфиденциальности Содержимое компонентов [``](/docs/react/api/components/t) отправляется в API GT для перевода. Для чувствительных данных используйте [компоненты переменных](/docs/react/guides/variables), чтобы личная информация оставалась локально: ```jsx // Безопасно — конфиденциальные данные остаются локальными Welcome back, {username} ``` ## Какой объём оборачивать в один `` Оборачивайте **логически связанные блоки содержимого** — то, что переводчик естественно воспринимает и переводит как единое целое. ```jsx // ✅ Хорошо — связанное содержимое обёрнуто вместе, что даёт переводчикам полный контекст

Welcome to Our Platform

Get started in minutes with our simple setup process.

// ✅ Хорошо — каждая карточка является самостоятельной единицей {features.map((feature) => (

{feature.title}

{feature.description}

))} // ❌ Слишком узко — фрагментирует перевод, теряется контекст

Welcome to Our Platform

Get started in minutes with our simple setup process.

// ❌ Слишком широко — оборачивание всей страницы усложняет поддержку {/* ...сотни строк JSX... */} ``` **Общее правило:** если текст визуально или по смыслу связан, оборачивайте его в один ``. Разделяйте только в тех случаях, когда части действительно независимы друг от друга (например, заголовок и нижний колонтитул). Если обернуть больше текста в один ``, у переводчиков будет больше контекста, а значит, переводы будут звучать естественнее — в некоторых языках приходится перестраивать предложения или опираться на соседний текст. ## Типичные проблемы ### Границы компонента [``](/docs/react/api/components/t) переводит только непосредственные дочерние элементы, но не содержимое внутри других компонентов: ```jsx // ❌ Неверно — содержимое внутри компонентов не будет переведено function MyComponent() { return

Это не будет переведено

; }

Это будет переведено

{/* Содержимое внутри не будет переведено */}
// ✅ Верно — оберните каждый компонент отдельно function MyComponent() { return

Это будет переведено

; }

Это будет переведено

``` ### Вложенные компоненты T ```jsx // ❌ Не вкладывайте компоненты друг в друга Hello world {/* Не делайте так */} ``` ### Ошибки, связанные с динамическим содержимым CLI выдаст ошибку, если в [``](/docs/react/api/components/t) есть динамическое содержимое. Оберните динамические значения в компоненты переменных: ```jsx // ❌ Неверно — динамический контент вызывает ошибку

Hello {username}

// ✅ Верно — используйте компоненты переменных

Hello {username}

``` См. [руководство по компонентам переменных](/docs/react/guides/variables) для работы с динамическими значениями и [руководство по компонентам ветвления](/docs/react/guides/branches) для работы с условным содержимым. ## Следующие шаги **Смотрите в действии:** Ознакомьтесь с [примером приложения с основами компонента ``](https://github.com/gt-examples/t-component-basics), чтобы увидеть рабочую демонстрацию, — [предварительный просмотр в реальном времени](https://t-component-basics.generaltranslation.dev). * [Руководство по компонентам переменных](/docs/react/guides/variables) - Работа с динамическим контентом в переводах JSX * [Руководство по компонентам ветвления](/docs/react/guides/branches) - Добавление условной логики в переводы