Назад

gtx-cli@2.3.0

Fernando Aviles avatarFernando Aviles
gtx-cli2.3.0translateuploadsetup

Обзор

В gtx-cli 2.3.0 мы изменили поведение команд translate и upload и улучшили видимость конвейера перевода.


Translate

Ранее translate и запускал переводы, и в фоновом режиме выполнял разовую инициализацию проекта (генерируя контекст и глоссарий, которые вы видите в своей панели управления).

На небольших проектах это происходило быстро; на крупных кодовых базах подготовка могла занимать достаточно времени, чтобы сработал таймаут, создавая впечатление, будто произошёл сбой перевода.

Хотя пользователям казалось, что translate завершился с ошибкой, инициализация асинхронно продолжалась, а переводы генерировались, но не загружались, что приводило к неполному и запутанному UX.

Настройка

Теперь настройка — это отдельный шаг. Мы оптимизировали её, чтобы таймауты возникали крайне редко.

Но, понимая, что настройка всё ещё может завершиться с ошибкой, мы сделали так, что перевод больше не «зависит» от её завершения. Теперь конвейер выглядит примерно так:

  • Upload: отправьте файлы и дождитесь подтверждения успешной загрузки.
  • Setup (only if needed): запустите задачу настройки и дождитесь результата; если она завершается с ошибкой или по таймауту, мы переходим дальше.
  • Translate: создайте задачи перевода на основе уже загруженных файлов.

Если настройка завершается вовремя — отлично. Если она завершается с ошибкой или по таймауту, мы продолжаем и сообщаем вам, что произошло. Вы всё равно получаете переводы.

Что вы увидите при запуске npx gtx-cli translate:

Запуск перевода...

Файлы для перевода:
  - your/file/path.mdx
  - ...

Загрузка файлов в General Translation API...
 Файлы успешно загружены

Настройка проекта...

# Если настройка выполнена успешно
Настройка успешно завершена.

# Если истекло время ожидания настройки
 Истекло время ожидания настройки продолжение без настройки: Превышено время ожидания генерации настройки

# Если настройка завершилась ошибкой
 Ошибка настройки продолжение без настройки: <error message>

# В любом случае продолжаем перевод
Создание 12 перевод(ов)
[0/12] переводов завершено
your/file/path.mdx [es]

С этим изменением мы теперь можем гарантировать, что ваши переводы будут генерироваться даже в маловероятном случае сбоя настройки.

Нам также нравится, что это дает вам больше прозрачности в том, как и где мы генерируем контент, который влияет на ваши переводы, и делает добавление новых шагов настройки беззаботным, поскольку они никогда не помешают выполнению перевода.


Загрузка

Мы также сделали upload более гибким. В ранних версиях предполагалось, что вы всегда отправляете исходный файл вместе с его переводами. Это подходит не для всех сценариев. Теперь вы можете:

  • Загружать только исходные файлы (без переводов).
  • Загружать исходники и переводы вместе.

Мы по‑прежнему автоматически определяем переводы по структуре вашего репозитория и конфигу. После загрузки вы сразу увидите файлы в своей панели управления.

Если ваш gt.config.json выглядит так:

{
  "defaultLocale": "ru",
  "locales": ["es", "fr"],
  "files": {
    "json": { "include": ["src/i18n/en/**/*.json"] }
  }
}

Выполнение npx gtx-cli upload:

# Только исходные файлы (локальные переводы не найдены):
Начинается загрузка...

Файлы для загрузки:
  - src/i18n/en/common.json -> es, fr
  ...

Загрузка 1 файла в General Translation...
 Файлы успешно загружены

Готово!

# В панели управления вы увидите:
#   src/i18n/en/common.json
# без соответствующих переводов.

Если локализованные переводы присутствуют и были автоматически обнаружены:

Начинается загрузка...

Файлы для загрузки:
  - src/i18n/en/common.json -> es, fr

Загрузка 3 файлов в General Translation...
 Файлы успешно загружены

Готово!

# В панели управления вы увидите:
#   src/i18n/en/common.json
# а также переведённые версии на испанском и французском языках в выпадающем списке локалей.

Если файл перевода локали отсутствует, мы загружаем исходный текст и пропускаем недостающий перевод.

Если у вас есть локальные переводы, но вы хотите загрузить только исходники, удалите локали из gt.config.json перед запуском upload:

{
  "defaultLocale": "en",
  "locales": [],
  "files": {
    "json": { "include": ["src/i18n/en/**/*.json"] }
  }
}

Загрузки перезаписывают существующие переводы

Важно: Когда вы запускаете upload, любой переведённый файл, который мы находим и загружаем для заданного файла/локали, заменяет то, что сейчас хранится для этого файла/локали.

  • Чтобы загружать только исходные тексты, удалите целевые локали из gt.config.json перед запуском upload.
  • Если вам нужно сначала просмотреть изменения, используйте отдельный проект или экспортируйте текущие переводы перед загрузкой.
  • Отсутствующие переводы пропускаются; существующие переводы перезаписываются.