# General Translation Knowledge Base: Как поддерживать переводы в актуальном состоянии при каждом развёртывании?
URL: https://generaltranslation.com/ru/kb/translations-in-ci.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Запускайте перевод как этап конвейера перед каждой сборкой для рабочей среды — тогда новые тексты попадут в то же развёртывание, что и сами изменения, уже переведёнными. В CLI gt от General Translation для этого служит команда npx gt translate, которая использует ключ API проекта и идентификатор проекта, сохранённые как секреты CI.
Category: Инструменты для рабочих процессов
Last updated: 2026-10-21
Authors: Kevin Liu, Kevin Wu
Published: 2026-10-21

Поддержание переводов в актуальном состоянии при каждом развёртывании называется непрерывной локализацией: перевод выполняется как этап конвейера перед сборкой каждого релиза, поэтому любое изменение выходит на всех языках в том же развёртывании, в котором оно появилось. Сложность в том, что этот этап выполняется в CI (непрерывной интеграции): ему нужны учётные данные, работающие без входа пользователя в систему, он должен переводить только изменённое, чтобы сборки оставались быстрыми, и обязан завершиться до команды сборки — иначе новые тексты попадут в релиз непереведёнными.

## Video

The video is narrated in English, with English captions.

[How do I keep translations up to date on every deploy?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-translations-in-ci.mp4) (48 с)

General Translation keeps translations current when your CI runs `npx gt translate` before the build. Create an API key for CI with the file read, file write, context write and translation queue permissions, store it and your project ID as `GT_API_KEY` and `GT_PROJECT_ID` in your CI provider's secrets, put `npx gt translate` before the build command in your build script, and run that build on every push to main. Each build then translates new and changed text and ships current translations.

## Как поддерживать переводы в актуальном состоянии

| Подход                                                                                                                                                                            | Сильные стороны                                                                                                                                                                                                                             | Когда выполняется перевод                                                                   | Что остаётся на вас                                                                                                                                                                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Только библиотека интернационализации (i18n) (`i18next`, `react-intl`, `next-intl`)                                                                                               | Зрелые среды выполнения для рендеринга переводов и форматирования значений                                                                                                                                                                  | Когда кто-то обновляет файлы — обычно пакетом между релизами                                | Извлечение новых строк в файлы с ключами, добавление каждого перевода в отдельный файл для каждого языка и перевод всех файлов до релиза                                                                                                                                           |
| Синхронизация с [системой управления переводами](/kb/general-translation-vs-tms) ([Crowdin](/kb/general-translation-vs-crowdin), [Lokalise](/kb/general-translation-vs-lokalise)) | CLI или интеграция с GitHub загружает новые исходные строки и скачивает готовые переводы                                                                                                                                                    | Когда переводчики закончат работу — часто уже после развертывания, в котором появился текст | Файлы с ключами для каждой строки, конфигурация синхронизации и выбор: задерживать релиз или выпускать непереведённый текст, пока не появятся переводы                                                                                                                             |
| Собственный скрипт на основе API машинного перевода или ИИ (DeepL, OpenAI API, Claude API)                                                                                        | Переводит прямо в конвейере — в любом объёме                                                                                                                                                                                                | На шаге CI, который вы пишете и поддерживаете сами                                          | Поиск новых и изменённых строк, контекст и единая терминология для каждого запроса, запись результатов обратно и проверка                                                                                                                                                          |
| General Translation (CLI `gt`)                                                                                                                                                    | [`npx gt translate`](/docs/cli/reference/commands/translate) сканирует компоненты [`<T>`](/docs/react/reference/components/t), вызовы `useGT` и файлы из `gt.config.json` и переводит только тот контент, исходный текст которого изменился | В CI, перед командой сборки                                                                 | Оборачивание нового текста UI в [`<T>`](/docs/react/reference/components/t) или передача его в функцию `gt` из `useGT`, хранение ключа API проекта и идентификатора проекта в секретах CI, а также проверка переводов в панели управления, если нужно, чтобы их просмотрел человек |

Используйте только библиотеку интернационализации, если языковыми файлами занимаются переводчики и каждый релиз может их подождать, а синхронизацию с системой управления переводами — если переводчики должны утверждать каждую строку перед выпуском. Собственный скрипт подходит для разового перевода текста, который больше не будет меняться. Шаг перевода в CI стоит использовать, если тексты меняются в большинстве релизов. Если тексты меняются лишь изредка, хватит и более простой настройки: запускайте [`npx gt translate`](/docs/cli/reference/commands/translate) локально после [`gt login`](/docs/cli/reference/commands/login), указав `projectId` в `gt.config.json`, и коммитьте созданные файлы.

## Добавьте шаг перевода в CI

CLI `gt` от General Translation выполняет этот шаг с помощью [`npx gt translate`](/docs/cli/reference/commands/translate). Поскольку [`gt login`](/docs/cli/reference/commands/login) требует ручного подтверждения, в CI вместо этого используется ключ проекта:

1. Создайте ключ в разделе **Проект &gt; Ключи API** с **пользовательскими** разрешениями: для **Файлы** установите **Write**, для **Translation queue** — **Enabled**, а для **Контекст** — **Write**, если конвейер генерирует контекст.
2. Сохраните ключ как `GT_API_KEY`, а идентификатор проекта — как `GT_PROJECT_ID` в настройках секретов вашей CI-платформы.
3. Запускайте перевод перед сборкой:

   ```json title="package.json"
   {
     "scripts": {
       "translate": "npx gt translate",
       "build": "npm run translate && <your build command>"
     }
   }
   ```

## Что делает каждый запуск

С General Translation каждый запуск переводит только тот контент, исходный текст которого изменился, применяет назначенные проекту контекстные группы (Glossary и пользовательские промпты), чтобы термины оставались единообразными от релиза к релизу, и сохраняет результаты в вашу кодовую базу, откуда они попадают в сборку (или, с флагом `--publish`, публикует их в CDN General Translation, откуда приложение загружает их во время выполнения). Подробные шаги описаны в руководстве [Генерация переводов](/docs/cli/guides/generating-translations).

## Related questions

- [Как интернационализировать приложение с помощью Cursor или Claude Code?](https://generaltranslation.com/ru/kb/ai-agent-i18n-setup.mdx): Начните с промпта Setup for Agents от General Translation в Cursor или Claude Code, выберите функциональность и целевые языки, а затем поручите агенту реализовать и проверить результат. Вход через браузер, машиночитаемая документация и инструменты MCP связывают настройку с переводом и проверкой. Используйте Locadex, чтобы автоматизировать дальнейшую локализацию через пул-реквесты.
- [Как проверять и редактировать переводы?](https://generaltranslation.com/ru/kb/review-translations.mdx): Сравнивайте каждый перевод с источником и другими локалями и исправляйте то, что звучит неправильно. В General Translation переводы редактируются на странице «Переводы» в панели управления, а ход проверки отслеживается с помощью меток и комментариев. При следующем запуске перевода Locadex, AI-агент платформы, переносит правки в пул-реквест.
- [Что делает агент Locadex?](https://generaltranslation.com/ru/kb/what-is-locadex.mdx): Locadex — это AI-агент General Translation, который интернационализирует ваш код и переводит контент в вашем репозитории GitHub. Его автоматизации запускаются при открытии пул-реквеста, при пуше коммита или вручную, а каждое изменение поступает в виде пул-реквеста.
- [Можно ли делать i18n без файлов перевода?](https://generaltranslation.com/ru/kb/i18n-without-translation-files.mdx): Да. Библиотеки gt-react и gt-next от General Translation обеспечивают i18n для React и Next.js без ключей перевода и без отдельного JSON-файла для каждого языка, который приходится поддерживать. Тексты остаются встроенными в JSX внутри компонента `<T>`, а команда gt translate генерирует переводы для каждого языка во время сборки, учитывая контекст из вашего кода. Locadex может поддерживать их в актуальном состоянии через пул-реквесты.

## Previous and next questions

- Previous question: [Как перевести строки вне JSX?](https://generaltranslation.com/ru/kb/translate-strings-outside-jsx.mdx)
- Next question: [Как проверять и редактировать переводы?](https://generaltranslation.com/ru/kb/review-translations.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/ru/kb/sitemap.md) for every article.
