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

Hello, world!

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

Hello, world!

; } ``` Для динамического содержимого внутри [``](/docs/next/api/components/t) используйте [компонент переменных](/docs/next/guides/variables) и [компоненты ветвления](/docs/next/guides/branches). ## Базовое использование [Компонент ``](/docs/next/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/next/api/components/t) **только для статического содержимого**: ```jsx // ✅ Статическое содержимое работает

Welcome to our site

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

Hello {username}

Today is {new Date()}

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

Hello {username}

``` Компоненты для переменных и ветвления предназначены для работы внутри [``](/docs/next/api/components/t) с динамическим содержимым. Подробнее см. в руководствах [Компонент переменных](/docs/next/guides/variables) и [Компоненты ветвления](/docs/next/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/next/api/components/var) см. в [руководстве по компоненту переменных](/docs/next/guides/variables). ## Продакшен-сетап ### Процесс сборки Встройте перевод в процесс сборки: ```json title="package.json" { "scripts": { "build": "npx gt translate && <...YOUR_BUILD_COMMAND...>" } } ``` ### Поведение в разработке и продакшене * **Разработка**: С API-ключом для разработки переводы выполняются по мере рендеринга компонентов. Во время разработки вы будете видеть перевод в реальном времени. * **Продакшен**: Все переводы предварительно собираются на этапе сборки и становятся доступны после публикации приложения. Укажите API-ключ для разработки в переменных окружения, чтобы включить перевод в реальном времени во время разработки. Создать его можно на панели управления в разделе [API Keys](https://dash.generaltranslation.com/en-US/project/api-keys). ### Вопросы конфиденциальности Содержимое компонентов [``](/docs/next/api/components/t) отправляется в API GT для перевода. Для чувствительных данных используйте [переменные компоненты](/docs/next/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/next/api/components/t) переводит только непосредственные дочерние элементы, а не содержимое других компонентов: ```jsx // ❌ Неверно — содержимое внутри компонентов не будет переведено function MyComponent() { return

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

; }

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

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

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

; }

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

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

Hello {username}

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

Hello {username}

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