# General Translation React SDKs (gt-react, gt-next, gt-react-native): t
URL: https://generaltranslation.com/ru/docs/react/reference/functions/t-function.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Синхронный перевод строк на уровне модуля. Справочник API для t.

Функция `t` — это синхронная функция перевода строк на уровне модуля для client-side приложений `gt-react`. В отличие от [`useGT`](/docs/react/reference/hooks/use-gt) (который требует контекст React) и [`msg`](/docs/react/reference/functions/msg) (который кодирует строки для последующего разрешения), `t` сразу возвращает переведённую строку и может вызываться где угодно в браузерном коде, в том числе вне React-компонентов.

*Доступно в `gt-react` и `gt-tanstack-start`.*

*Примечание: не экспортируется из `gt-next` и `gt-react-native`. В `gt-next` используйте [`useGT`](/docs/react/reference/hooks/use-gt) в синхронных компонентах или [`getGT`](/docs/react/nextjs/reference/functions/get-gt) в async App Router components.*

## Обзор [#overview]

Импортируйте `t` из `gt-react` и вызовите её, передав строку.

*В примерах используется импорт из `gt-react`; для TanStack Start импортируйте из `gt-tanstack-start`.*

```tsx
import { t } from 'gt-react';

const greeting = t('Hello, world!');
```

Его также можно использовать как тегированный шаблонный литерал:

```tsx
import { t } from 'gt-react';

const greeting = t`Hello, ${name}!`;
```

*Примечание: `t` считывает переводы из клиентского кэша, заполняемого [`initializeGTSPA`](/docs/react/reference/config#initialize-spa). Убедитесь, что инициализация выполняется до загрузки любого модуля, который вызывает `t` на уровне модуля. Вызывать `t` на уровне модуля в приложении с серверным рендерингом запрещено: в режиме разработки это выбрасывает исключение, а в production записывается ошибка в журнал и используется значение локали по умолчанию.*

## Как это работает [#how-it-works]

* **Синхронный перевод на уровне модуля.** После загрузки переводов для активной локали `t` синхронно читает их без дополнительных накладных расходов. Поскольку он не использует контекст React, он работает как на уровне модуля (константы, таблицы маршрутов), так и внутри компонентов.
* **Вычисляется при загрузке.** Переводы вычисляются при выполнении модулей, поэтому **переключение локалей требует полной перезагрузки страницы** — браузер должен заново выполнить модули, чтобы подхватить новую локаль. Этот подход работает только в client-side приложениях.
* **Переменные не переводятся.** Интерполированные значения вставляются в переведённую строку, но сами не переводятся.
* **Поведение на сервере.** Вызывать `t` на уровне модуля нельзя, если стратегия render — `server-render`, то есть до инициализации хранилища условий на этапе обработки запроса. В режиме разработки это вызывает ошибку; в production ошибка записывается в журнал, после чего используется значение `defaultLocale`. Для серверного перевода используйте hooks на основе контекста, например [`useGT`](/docs/react/reference/hooks/use-gt).

## Тегированный шаблонный литерал [#tagged-template]

`t` можно использовать как тег для шаблонного литерала — так синтаксис выглядит естественнее. Это равнозначные варианты:

```tsx
import { t } from 'gt-react';

t('Hello, {name}!', { name: 'Alice' });
t`Hello, ${name}!`;
```

Тегированная форма подставляет переменные напрямую из шаблона, поэтому вам не нужны плейсхолдеры в стиле ICU или объект параметров.

### Глобальная регистрация [#macros]

Вместо того чтобы импортировать `t` в каждом файле, зарегистрируйте его глобально, один раз импортировав модуль macros в точке входа приложения:

```tsx
import 'gt-react/macros';
```

Это устанавливает `globalThis.t`, благодаря чему тегированный шаблон становится доступен везде без явного импорта:

```tsx
// Импорт не нужен
const labels = {
  save: t`Save`,
  cancel: t`Cancel`,
};
```

## Параметры [#parameters]

| Параметр              | Описание                                  | Тип                    | Необязательный | По умолчанию |
| --------------------- | ----------------------------------------- | ---------------------- | -------------- | ------------ |
| [`message`](#message) | Строка, которую нужно перевести.          | `string`               | Нет            | —            |
| [`options`](#options) | Переменные интерполяции и опции перевода. | `GTTranslationOptions` | Да             | —            |

### `message` [#message]

**Тип** `string` · **Обязательно**

Строка для перевода. При использовании в качестве tagged template здесь указывается строка шаблона.

### `options` [#options]

**Тип** `GTTranslationOptions` · **Необязательный**

Переменные для интерполяции и параметры, такие как `$context` и `$id`. См. [`InlineTranslationOptions`](/docs/react/reference/types/inline-translation-options).

## Возвращает [#returns]

**Тип** `string`

Строка, переведённая для активной локали, либо исходная строка, если перевод недоступен.

## Примеры [#examples]

```tsx title="constants.ts"
import { t } from 'gt-react';

export const ERROR_MESSAGES = {
  notFound: t('Страница не найдена'),
  unauthorized: t('У вас нет прав для просмотра этой страницы'),
  serverError: t('Что-то пошло не так. Пожалуйста, попробуйте позже.'),
};
```

```tsx title="routes.ts"
import { t } from 'gt-react';

export const routes = [
  { path: '/', label: t('Home') },
  { path: '/dashboard', label: t('Dashboard') },
  { path: '/settings', label: t('Settings') },
];
```

```tsx
import { t } from 'gt-react';

const message = t('Hello, {name}!', { name: 'Alice' });
// Значения переменных подставляются, но не переводятся.
```

## Заметки [#notes]

* `t` работает синхронно и может вызываться на уровне модуля; она не использует контекст React.
* Переключение локалей требует полной перезагрузки страницы.
* Чтобы переводить строки внутри компонентов, используйте [`useGT`](/docs/react/reference/hooks/use-gt); чтобы закодировать строки для их последующего разрешения, используйте [`msg`](/docs/react/reference/functions/msg).

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
