# 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)