gtx-cli@2.3.0
Обзор
В 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.- Если вам нужно сначала проверить изменения, используйте отдельный проект или экспортируйте текущие переводы перед загрузкой.
- Отсутствующие переводы пропускаются; имеющиеся переводы заменяются.