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

Hello, world!

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

Hello, world!

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

Welcome to our site

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

Hello {username}

Today is {new Date()}

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

Hello {username}

``` Компоненты для переменной и ветвления предназначены для работы внутри [``](/docs/react-native/api/components/t) с динамическим содержимым. Подробнее см. в руководствах [Компоненты для переменной](/docs/react-native/guides/variables) и [Компоненты ветвления](/docs/react-native/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-native/api/components/var) см. в [руководстве по компонентам для переменной](/docs/react-native/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/react-native/api/components/t) отправляется в API GT для перевода. Для чувствительных данных используйте [переменные компоненты](/docs/react-native/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-native/api/components/t) переводит только непосредственных потомков, а не содержимое внутри других компонентов: ```jsx // ❌ Неверно — содержимое внутри компонентов не будет переведено function MyComponent() { return

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

; }

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

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

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

; }

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

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

Hello {username}

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

Hello {username}

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