# General Translation React SDKs (gt-react, gt-next): t URL: https://generaltranslation.com/ru/docs/react/reference/functions/t-function.mdx --- title: t description: Синхронный перевод строк на уровне модуля с помощью General Translation gt-react. Справочник 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-react`; для TanStack Start импортируйте из `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` и вызовите её, передав строку. ```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).