# gt-node: General Translation Node.js SDK: withGT
URL: https://generaltranslation.com/ru/docs/node/reference/functions/with-gt.mdx
Docs index: https://generaltranslation.com/llms.txt
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<T>(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` работает как с синхронными, так и с асинхронными колбэками.

## Sitemap

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