Назад

gtx-cli@2.3.0

Fernando Aviles avatarFernando Aviles
gtx-cli2.3.0translateuploadsetup

Обзор

В gtx-cli 2.3.0 мы обновили поведение команд translate и upload, а также сделали конвейер перевода более наглядным.


Перевод

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

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

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

Настройка

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

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

  • Загрузка: отправьте файлы и убедитесь, что загрузка прошла успешно.
  • Настройка (только при необходимости): запустите задачу настройки и дождитесь завершения; если она завершится ошибкой или по тайм-ауту, мы всё равно продолжим.
  • Перевод: создайте задачи перевода на основе файлов, которые вы уже загрузили.

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

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

Starting translation...

Files to translate:
  - your/file/path.mdx
  - ...

Uploading files to General Translation API...
 Files uploaded successfully

Setting up project...

# Если настройка прошла успешно
Setup successfully completed.

# Если настройка завершилась по таймауту
 Setup timed out proceeding without setup: Timed out while waiting for setup generation

# Если настройка завершилась с ошибкой
 Setup failed proceeding without setup: <error message>

# В любом случае продолжаем перевод
Creating 12 translation(s)
[0/12] translations completed
your/file/path.mdx [es]

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

Кроме того, так вам будет проще понять, как и где мы генерируем контент, влияющий на ваши переводы, а также без опасений добавлять новые шаги настройки, поскольку они уже не смогут помешать процессу перевода.


Загрузка

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

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

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

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

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

При запуске npx gtx-cli upload:

# Только исходные файлы (локальные переводы не найдены):
Starting upload...

Files to upload:
  - src/i18n/en/common.json -> es, fr
  ...

Uploading 1 file(s) to General Translation...
 Files uploaded successfully

Done!

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

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

Starting upload...

Files to upload:
  - src/i18n/en/common.json -> es, fr

Uploading 3 file(s) to General Translation...
 Files uploaded successfully

Done!

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

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

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

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

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

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

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