# gt-node: General Translation Node.js SDK: withGT URL: https://generaltranslation.com/ru/docs/node/reference/functions/with-gt.mdx --- title: withGT description: Привязывает локаль на время запроса, чтобы функции General Translation работали в её контексте. Справочник API для withGT. --- Оборачивает колбэк, чтобы задать контекст локали для функций перевода. На сервере Node.js каждый запрос обычно обслуживает отдельного пользователя со своей локалью, и `withGT` устанавливает локаль для всех функций General Translation, вызываемых внутри колбэка. ## Обзор [#overview] Вызовите `withGT`, передав локаль и функцию. Все вызовы [`getGT`](/docs/node/reference/functions/get-gt), [`getMessages`](/docs/node/reference/functions/get-messages), [`getTranslations`](/docs/node/reference/functions/get-translations), [`tx`](/docs/node/reference/functions/tx) и [`getLocale`](/docs/node/reference/functions/get-locale) внутри колбэка будут выполняться для этой локали. ```ts import { withGT } from 'gt-node'; app.get('/api/greeting', (req, res) => { withGT(req.locale, () => { // Функции перевода здесь используют req.locale }); }); ``` Сигнатура: ```ts withGT(locale: string, fn: () => T): T ``` *Примечание: `withGT` использует механизм async local storage, чтобы привязать локаль к текущему запросу. Контекст не передаётся в другие параллельные запросы.* ## Как это работает [#how-it-works] * **Локаль с ограниченной областью действия.** Локаль привязывается только на время выполнения `fn`. При параллельных запросах у каждого сохраняется своя локаль. * **Определение локали.** Переданная локаль сверяется с настроенными `locales`; если значение не поддерживается, используется `defaultLocale`. * **Синхронно или асинхронно.** `fn` может быть синхронной или асинхронной, а `withGT` возвращает всё, что возвращает `fn`. * **Требуется инициализация.** [`initializeGT`](/docs/node/reference/functions/initialize-gt) нужно вызвать до `withGT`, иначе будет выброшена ошибка. ## Параметры [#parameters] | Параметр | Описание | Тип | Необязательный | По умолчанию | | ------------------- | ----------------------------------------- | --------- | -------------- | ------------ | | [`locale`](#locale) | Локаль, к которой привязывается колбэк. | `string` | Нет | — | | [`fn`](#fn) | Функция, выполняемая в области локали. | `() => T` | Нет | — | ### `locale` [#locale] **Тип** `string` · **Обязательно** [Код локали](/docs/platform/core/reference/utility-functions/locales/is-valid-locale) (например, `'es'`, `'fr-CA'`), используемый для переводов внутри колбэка. ### `fn` [#fn] **Тип** `() => T` · **Обязательно** Колбэк, который выполняется в контексте указанной локали. Может быть синхронным или асинхронным. ## Возвращает [#returns] **Тип** `T` Возвращаемое значение колбэка `fn`. ## Примеры [#examples] ```ts title="server.js" // Express middleware import express from 'express'; import { initializeGT, withGT, getGT } from 'gt-node'; initializeGT({ defaultLocale: 'en', locales: ['en', 'es', 'fr'], projectId: process.env.GT_PROJECT_ID, }); const app = express(); app.use((req, res, next) => { const locale = req.headers['accept-language']?.split(',')[0] || 'en'; withGT(locale, () => { next(); }); }); app.get('/api/greeting', async (req, res) => { const gt = await getGT(); res.json({ message: gt('Hello, world!') }); }); ``` ```ts title="handler.js" // Обёртка для асинхронного обработчика import { withGT, getGT } from 'gt-node'; export async function handleRequest(locale) { return withGT(locale, async () => { const gt = await getGT(); return gt('Welcome to our app!'); }); } ``` ## Заметки [#notes] * [`initializeGT`](/docs/node/reference/functions/initialize-gt) необходимо вызвать до использования `withGT`, иначе будет выброшена ошибка. * Контекст локали ограничен колбэком и не распространяется на другие параллельные запросы. * `withGT` работает как с синхронными, так и с асинхронными колбэками.