# node: Обработка ошибок и резервные варианты
URL: https://generaltranslation.com/ru/docs/node/guides/error-handling.mdx
---
title: Обработка ошибок и резервные варианты
description: Что происходит, если переводы недоступны, и как это обрабатывать
---
## Поведение резервного варианта по умолчанию
Если перевод недоступен — из-за неподдерживаемой локали, отсутствующего файла перевода или недоступности CDN, — `gt-node` возвращает исходную строку на языке вашей `defaultLocale`. Ваше приложение никогда не падает из-за отсутствующего перевода.
```js
import { getGT } from 'gt-node';
app.get('/api/greeting', async (req, res) => {
const gt = await getGT();
// Если перевод на испанский недоступен, возвращает оригинал на английском
res.json({ message: gt('Hello, world!') });
});
```
Этот резервный вариант подставляется автоматически. Вам не нужно оборачивать вызовы перевода в try/catch на случай, если перевод отсутствует.
## Отсутствующие локали
Если поступает запрос для локали, которую вы не настроили в `locales`, функции перевода используют `defaultLocale` в качестве резервной локали:
```js
initializeGT({
defaultLocale: 'en',
locales: ['en', 'es', 'fr'], // Японский не включён
});
// Запрос с Accept-Language: ja
// gt('Hello!') → возвращает 'Hello!' (резервный вариант на английском)
```
Чтобы добавить новую локаль, добавьте её в массив `locales` и заново сгенерируйте переводы:
```bash
npx gt translate
```
## Проверка доступных локалей
Используйте [`getLocales()`](/docs/node/api/get-locales) и [`getDefaultLocale()`](/docs/node/api/get-default-locale), чтобы посмотреть, что доступно во время выполнения:
```js
import { getLocales, getDefaultLocale } from 'gt-node';
app.get('/api/locales', (req, res) => {
res.json({
supported: getLocales(),
default: getDefaultLocale(),
});
});
```
## Обработка перевода в ответах API
При создании API может потребоваться явно указывать, что контент возвращается на резервном варианте языка:
```js
import { getGT, getLocale, getDefaultLocale } from 'gt-node';
app.get('/api/greeting', async (req, res) => {
const gt = await getGT();
const locale = getLocale();
const defaultLocale = getDefaultLocale();
res.json({
message: gt('Hello, world!'),
locale,
isFallback: locale !== defaultLocale,
});
});
```
## Отладка переводов
### Проверьте, какая локаль сейчас активна
```js
import { getLocale } from 'gt-node';
app.use((req, res, next) => {
console.log(`[i18n] Request locale: ${getLocale()}`);
next();
});
```
### Убедитесь, что переводы загружаются
В среде разработки `gt-node` выполняет перевод по запросу через API. Если кажется, что переводы не подгружаются:
1. Убедитесь, что заданы `GT_API_KEY` и `GT_PROJECT_ID`
2. Проверьте, что локаль указана в массиве `locales`
3. Проверьте логи сервера на наличие ошибок
### Чеклист для продакшена
Перед развёртыванием проверьте:
* [ ] `npx gt translate` успешно выполняется в вашем build-скрипте
* [ ] Все целевые локали перечислены в `gt.config.json`
* [ ] `GT_PROJECT_ID` задан в окружении продакшена
* [ ] `GT_API_KEY` задан в окружении продакшена (для `npx gt translate`)
В среде разработки переводы выполняются по запросу и могут работать медленно. В продакшене всегда заранее генерируйте переводы с помощью `npx gt translate` — см. [документацию по CLI](/docs/cli/translate).
## Следующие шаги
* [Подходы к переводу строк](/docs/node/guides/strings) — два подхода к переводу
* [Локальное хранение переводов](/docs/node/guides/local-tx) — сохранение переводов в бандле для офлайн-использования
* [`getLocale` API справка](/docs/node/api/get-locale)