# gt: General Translation CLI tool: Translate URL: https://generaltranslation.com/ru/docs/cli/translate.mdx --- title: Translate description: Как перевести проект --- ## Использование ```bash npx gt translate ``` **Важно:** Запустите это в вашем CI-конвейере **до** сборки приложения для продакшена. ## Обзор Команда `gt translate` переводит проект: она считывает файл `gt.config.json`, чтобы определить, какие файлы нужно перевести. Если вы используете [`gt-next`](/docs/next), [`gt-react`](/docs/react) или [`gt-react-native`](/docs/react-native), она также просканирует исходный код проекта на наличие встроенного контента (например, компонентов `` и хуков `useGT`) и сгенерирует необходимые файлы перевода. Кроме того, она включает контент файла словаря (если он указан). Эта команда — основной способ работы с API General Translation и связанными сервисами. **Только для использования в продакшене:** Эта команда предназначена для продакшен-сборок и **не должна использоваться в development**. Перед запуском этой команды обязательно убедитесь, что вы находитесь в ветке, которая будет использоваться для продакшена. Укажите продакшен API-ключ (`GT_API_KEY`) и идентификатор проекта (`GT_PROJECT_ID`) как переменные окружения. **Примечание:** требуется продакшен API-ключ. Получите его бесплатно на [generaltranslation.com](https://generaltranslation.com/dashboard) или запустите [мастер настройки](/docs/cli/init), чтобы сгенерировать его. ### Переведите проект [#translate] ```bash npx gt translate ``` Команда `translate` читает файл `gt.config.json`, чтобы определить, какие файлы нужно перевести, а также ищет в исходном коде проекта контент, доступный для перевода, а затем генерирует необходимые файлы перевода. Переводы автоматически сохраняются в кодовой базе проекта. Подробнее см. в [документации по конфигурации](/docs/cli/reference/config#files). {/* These links point to our own SDK docs intentionally — we want to show how our CLI handles these libraries, not link to the external library sites */} **Автоопределение:** Если вы используете [`next-intl`](/docs/next), [`react-i18next`](/docs/react) или [`next-i18next`](/docs/react-native), CLI автоматически определит вашу библиотеку i18n по файлу `package.json` и переведёт ваши JSON-файлы с учётом синтаксиса этой библиотеки i18n. ### Проверка без перевода [#validate] ```bash npx gt translate --dry-run ``` Если вы используете [`gt-next`](/docs/next), [`gt-react`](/docs/react), или [`gt-react-native`](/docs/react-native), вы можете использовать это для проверки компонентов `` и файла словаря в вашем проекте без генерации переводов. *** ## Флаги | Параметр | Описание | Тип | По умолчанию | | ------------------------------- | ------------------------------------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------- | | `--api-key` | Укажите Production API-ключ | `string` | | | `--project-id` | Укажите идентификатор проекта | `string` | | | `--version-id` | Укажите идентификатор версии (по умолчанию — хеш контента) | `string` | | | `--config ` | Укажите путь к config file GT | `string` | `"gt.config.json"` | | `--tsconfig, --jsconfig ` | Укажите путь к TS- или JS-config file | `string` | | | `--src ` | Разделённые пробелами glob-шаблоны для исходных файлов (относительно корня) | `[string]` | `['src/**/*.{js,jsx,ts,tsx}', 'app/**/*.{js,jsx,ts,tsx}', 'pages/**/*.{js,jsx,ts,tsx}', 'components/**/*.{js,jsx,ts,tsx}']` | | `--dictionary ` | Укажите путь к файлу словаря | `string` | | | `--inline` | Включать инлайн-теги `` в дополнение к словарю | `boolean` | `true` | | `--timeout` | Тайм-аут запроса перевода в секундах | `number` | `900` | | `--new, --locales ` | Локали, на которые нужно перевести (добавляются к `locales` в `gt.config.json`) | `[string]` | | | `--default-locale ` | Исходная локаль проекта | `string` | `en` | | `--ignore-errors` | Игнорировать ошибки и принудительно выполнять перевод для валидного контента | `flag` | `false` | | `--dry-run` | Выполнить валидацию без перевода | `flag` | `false` | | `--force` | Принудительно выполнить повторный перевод всего контента | `flag` | `false` | | `--force-download` | Принудительно скачать все переводы | `flag` | `false` | | `--save-local` | Обнаружить и сохранить локальные правки перед постановкой переводов в очередь | `flag` | `false` | | `--enable-branching` | Включить ветвление для проекта | `flag` | `false` | | `--branch ` | Укажите пользовательское имя ветки для переводов | `string` | | | `--disable-branch-detection` | Отключить автоматическое определение ветки | `flag` | `false` | | `--tag [value]` | Пометить этот запуск перевода (автоматически определяется из git, если значение не указано) | `string` | | | `-m, --message ` | Сообщение, которое нужно прикрепить к тегу перевода | `string` | | | `--publish` | Опубликовать переводы в CDN после перевода | `flag` | `false` | | `--remote-name ` | Укажите пользовательское имя remote для определения ветки | `string` | `"origin"` | **Безопасность:** Не добавляйте API-ключ в файл `gt.config.json`! Вместо этого задайте его как переменную окружения. CLI автоматически считывает `GT_API_KEY`, если она задана. ### Основные флаги | Флаг | Описание | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `--dry-run` | Разбирает и проверяет проект без обращения к API GT. Полезно для проверки кодовой базы. | | `--force` | Заново переводит весь контент, перезаписывая существующие переводы. Все локальные изменения будут потеряны. За новые переводы будет взиматься плата. | | `--force-download` | Повторно загружает все переводы, перезаписывая локальные изменения. Не запускает повторный перевод. | | `--save-local` | Обнаруживает и сохраняет локальные правки в файлах перевода перед постановкой в очередь. См. [`save-local`](/docs/cli/save-local). | | `--enable-branching` | Отслеживает переводы отдельно для разных веток Git. См. [ветвление](/docs/cli/branching). | | `--tag` | Помечает запуск перевода человекочитаемым идентификатором для отслеживания версий. См. [тегирование](#tagging). | | `-m, --message` | Добавляет к тегу перевода поясняющее сообщение. См. [тегирование](#tagging). | | `--publish` | Публикует переводы в CDN для загрузки во время выполнения. См. [публикация в CDN](#publishing-to-the-cdn). | ### Файл конфигурации При первом запуске CLI попытается создать файл `gt.config.json` в корне проекта. Подробнее о конфигурации читайте [здесь](/docs/cli/reference/config). ## Важные рекомендации ### Источники контента Команда `translate` рекурсивно ищет в вашем проекте контент, пригодный для перевода. По умолчанию поиск выполняется в следующих каталогах: * `./src` * `./app` * `./pages` * `./components` Вы можете указать другие каталоги с помощью флага `--src` или изменив свойство `src` в файле [`gt.config.json`](/docs/cli/reference/config). ### Перезапись переводов По умолчанию CLI не перезаписывает локальные правки в переводах, если исходный контент не изменился. Чтобы заново перевести контент, который уже был переведён, используйте `--force`. **Внимание:** `--force` **перезапишет все существующие переводы и создаст новые**. Все локальные изменения будут потеряны. С вас будет списана плата за новые переводы. Чтобы повторно скачать переводы без повторного перевода, используйте `--force-download`. **Внимание:** `--force-download` перезапишет локальные правки в переводах и загрузит самые актуальные переводы. Повторный перевод контента выполняться не будет. ### Тегирование [#tagging] Используйте флаги `--tag` и `-m`, чтобы помечать запуски перевода понятными идентификаторами — так будет проще отслеживать версии и различать их на панели управления. #### Пометьте пользовательским идентификатором ```bash npx gt translate --tag v2.1.0 ``` #### Тег с пользовательским идентификатором и сообщением ```bash npx gt translate --tag v2.1.0 -m "Added checkout page translations" ``` #### Автотег из Git Передайте `--tag` без значения, чтобы автоматически использовать хеш текущего коммита Git как id тега, а сообщение коммита — как сообщение тега: ```bash npx gt translate --tag ``` Вы можете переопределить сообщение коммита, указав своё: ```bash npx gt translate --tag -m "Release 2.1 translations" ``` #### Тегирование только по сообщению Если передать `-m` без `--tag`, тег будет автоматически сгенерирован на основе хеша текущего коммита Git (или случайного идентификатора, если вы не в git-репозитории): ```bash npx gt translate -m "Weekly translation update" ``` Добавление тегов не блокирует процесс — если создать тег не удаётся, запуск перевода всё равно продолжается в обычном режиме. ### Публикация в CDN [#publishing-to-the-cdn] По умолчанию `gt translate` сохраняет файлы перевода локально в вашей кодовой базе. Используйте флаг `--publish`, чтобы также опубликовать переводы в CDN General Translation и включить их загрузку во время выполнения без добавления файлов в бандл приложения. ```bash npx gt translate --publish ``` Это полезно для проектов `gt-next`, которые загружают переводы из CDN во время выполнения, а не из локальных файлов. **Необходимо включить CDN:** Перед использованием `--publish` включите CDN в настройках проекта на [generaltranslation.com/dashboard](https://generaltranslation.com/dashboard). Если CDN не включён, команда успешно выполнит перевод, но не сможет опубликовать результаты и выдаст предупреждение. Вы можете использовать `--publish` вместе с выводом в локальные файлы — переводы будут сохранены локально *и* опубликованы в CDN: ```bash npx gt translate --publish ``` ### Файл словаря Команда `translate` автоматически обнаруживает файл словаря в вашем проекте. По умолчанию она ищет файл с именем `dictionary.[json|ts|js]` в: * `./src` * `./` Вы можете указать другой файл словаря с помощью флага `--dictionary` или изменить свойство `dictionary` в файле [`gt.config.json`](/docs/cli/reference/config).