Параллельная обработка
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 распределяет задачи локализации между несколькими параллельными рабочими процессами, обрабатывая различные языковые пары и шаблоны файлов одновременно.
Обзор архитектуры:
- Создание задач — CLI анализирует вашу конфигурацию и создает отдельные задачи для каждой комбинации локали и файла
- Распределение рабочих процессов — Задачи распределяются между несколькими рабочими процессами
- Параллельная обработка — Рабочие процессы обрабатывают переводы одновременно, предотвращая конфликты файлов
- Агрегация результатов — Завершенные переводы безопасно записываются в целевые файлы
Управление параллельностью
Установить количество рабочих процессов:
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 использует сложную систему пула рабочих процессов:
Динамическое распределение — Рабочие процессы создаются на основе системных ресурсов и настроек параллелизма.
Распределение задач — Задачи равномерно распределяются между рабочими процессами с использованием оптимизированных алгоритмов.
Отслеживание прогресса — Мониторинг прогресса в реальном времени для всех параллельных операций.
Управление ресурсами — Автоматическая очистка и освобождение ресурсов после завершения обработки.