Параллельная обработка

Lingo.dev CLI предоставляет возможность параллельной обработки с помощью команды run, которая обрабатывает несколько задач локализации одновременно, значительно сокращая время перевода для крупных проектов.

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

Основное использование

Обработка всех переводов с параллельной обработкой:

npx lingo.dev@latest run

Управление уровнем параллельности:

npx lingo.dev@latest run --concurrency 20

Команда run использует те же файлы конфигурации i18n.json и блокировки i18n.lock, что и стандартная команда i18n.

Как работает параллельная обработка

Lingo.dev CLI распределяет задачи локализации между несколькими параллельными рабочими процессами, обрабатывая различные языковые пары и шаблоны файлов одновременно.

Обзор архитектуры:

  1. Создание задач — CLI анализирует вашу конфигурацию и создает отдельные задачи для каждой комбинации локали и файла
  2. Распределение рабочих процессов — Задачи распределяются между несколькими рабочими процессами
  3. Параллельная обработка — Рабочие процессы обрабатывают переводы одновременно, предотвращая конфликты файлов
  4. Агрегация результатов — Завершенные переводы безопасно записываются в целевые файлы

Управление параллельностью

Установить количество рабочих процессов:

npx lingo.dev@latest run --concurrency 15

Параллельность по умолчанию составляет 10 рабочих процессов. Более высокие значения ускоряют обработку переводов, но потребляют больше системных ресурсов и могут достигать лимитов API.

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

Целевая обработка

Обработка определенных языков:

npx lingo.dev@latest run --locale es --locale fr

Обработка определенных типов файлов:

npx lingo.dev@latest run --bucket json

Обработка определенных файлов:

npx lingo.dev@latest run --file components/header

Обработка определенных ключей:

npx lingo.dev@latest run --key welcome.title

Принудительный повторный перевод:

npx lingo.dev@latest run --force

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

Предотвращение состояния гонки

Lingo.dev CLI предотвращает повреждение файлов при параллельной обработке благодаря нескольким мерам защиты:

Синхронизация ввода/вывода — Операции с файловой системой синхронизированы, чтобы предотвратить одновременную запись нескольких рабочих процессов в один и тот же файл.

Защита с помощью файла блокировки — Файл i18n.lock использует атомарные операции, чтобы избежать повреждений при одновременных обновлениях.

Транзакционная обработка — Каждая задача либо полностью завершается, либо корректно прерывается, обеспечивая согласованное состояние файлов.

Оптимизация производительности

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

Начните с настроек по умолчанию:

npx lingo.dev@latest run

# Использует оптимальные настройки параллелизма

Увеличивайте постепенно:

npx lingo.dev@latest run --concurrency 20

# Увеличивайте, если система справляется с нагрузкой

Целевой процессинг для конкретного контента:

npx lingo.dev@latest run --file src/components

# Обрабатывайте только изменённые компоненты

Совместимость

Команда run полностью совместима с существующими конфигурациями:

  • Тот же формат i18n.json — Изменения конфигурации не требуются
  • То же поведение i18n.lock — Отслеживание инкрементальных переводов работает идентично
  • Те же форматы файлов — Поддерживаются все типы хранилищ
  • Те же параметры таргетинга — Флаги --locale, --bucket, --key, --file, --force работают идентично

Миграция с команды i18n:


# Текущая команда

npx lingo.dev@latest i18n

# Параллельный эквивалент

npx lingo.dev@latest run

Вся функциональность переносится напрямую с заметным улучшением производительности.

Архитектура пула рабочих процессов

Lingo.dev CLI использует сложную систему пула рабочих процессов:

Динамическое распределение — Рабочие процессы создаются на основе системных ресурсов и настроек параллелизма.

Распределение задач — Задачи равномерно распределяются между рабочими процессами с использованием оптимизированных алгоритмов.

Отслеживание прогресса — Мониторинг прогресса в реальном времени для всех параллельных операций.

Управление ресурсами — Автоматическая очистка и освобождение ресурсов после завершения обработки.