# node: withGT URL: https://generaltranslation.com/ru/docs/node/api/with-gt.mdx --- title: withGT description: Справка по API для обёртки запросов withGT --- ## Обзор Функция `withGT` оборачивает колбэк, чтобы передать функциям перевода контекст локали. На сервере Node.js каждый запрос обычно обрабатывает другого пользователя с другой локалью. `withGT` устанавливает локаль для всех функций перевода, вызываемых внутри колбэка. ```js import { withGT } from 'gt-node'; app.get('/api/greeting', (req, res) => { withGT(req.locale, () => { // Функции перевода здесь используют req.locale }); }); ``` **Контекст запроса:** `withGT` использует под капотом асинхронное локальное хранилище, чтобы привязать локаль к текущему запросу. Все вызовы `getGT` и `getMessages` внутри callback будут использовать переданную локаль. ## Справочник ### Параметры T', optional: false, }, }} /> ### Описание | Param | Description | | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `locale` | [Код локали](/docs/core/locales) (например, `'es'`, `'fr-CA'`), который используется для переводов внутри колбэка. | | `fn` | Функция колбэка, которая выполняется в указанном контексте локали. Может быть синхронной или асинхронной. | ### Возвращает `T` — значение, возвращаемое функцией колбэка `fn`. *** ## Примеры ### Middleware для Express ```js title="server.js" import express from 'express'; import { initializeGT, withGT, getGT } from 'gt-node'; initializeGT({ defaultLocale: 'en-US', locales: ['en-US', '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-US'; withGT(locale, () => { next(); }); }); app.get('/api/greeting', async (req, res) => { const gt = await getGT(); res.json({ message: gt('Hello, world!') }); }); ``` ### Обёртка для асинхронного обработчика ```js title="handler.js" import { withGT, getGT } from 'gt-node'; export async function handleRequest(locale: string) { return withGT(locale, async () => { const gt = await getGT(); return gt('Welcome to our app!'); }); } ``` *** ## Примечания * `initializeGT` необходимо вызвать до использования `withGT`. В противном случае будет выброшена ошибка. * Контекст локали ограничен колбэком и не распространяется на другие параллельные запросы. * `withGT` работает как с синхронными, так и с асинхронными колбэками. ## Что дальше * См. [`initializeGT`](/docs/node/api/initialize-gt), чтобы выполнить начальную настройку. * См. [`getGT`](/docs/node/api/get-gt), чтобы переводить строки в контексте запроса.