Крупные проекты
Lingo.dev CLI предоставляет оптимизацию производительности и стратегии рабочего процесса для масштабных проектов локализации с сотнями тысяч ключей перевода, множеством языков и сложными структурами контента.
Для проектов с большим объемом контента CLI предлагает параллельную обработку и интеграцию с CI/CD для эффективного управления переводами в больших масштабах.
Параллельная обработка
Lingo.dev CLI ускоряет обработку крупных проектов с помощью параллельных рабочих процессов, которые одновременно выполняют несколько задач перевода.
Включение параллельной обработки:
npx lingo.dev@latest run
Это распределяет задачи перевода между несколькими рабочими процессами, значительно сокращая время обработки для крупных проектов.
Управление количеством рабочих процессов:
npx lingo.dev@latest run --concurrency 16
По умолчанию используется 10 рабочих процессов. Более высокие значения позволяют обрабатывать больше задач одновременно, но могут привести к превышению лимитов API.
Как работает параллельная обработка
CLI создает пул рабочих процессов, которые обрабатывают задачи перевода одновременно, предотвращая повреждение файлов:
- Распределение задач — Разбивает локализацию на отдельные задачи для каждого языка и файла
- Назначение рабочих процессов — Распределяет задачи между доступными рабочими процессами с использованием балансировки нагрузки
- Предотвращение гонок — Использует блокировки файловой системы для предотвращения конфликтов при одновременном доступе нескольких рабочих процессов к одним и тем же файлам
- Отслеживание прогресса — Отображает прогресс выполнения задач в реальном времени для всех рабочих процессов
Пример для крупных проектов:
// Проект с 50 файлами на 10 языках = 500 задач перевода
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja", "zh", "ko", "pt", "it", "ru", "ar"]
},
"buckets": {
"json": {
"include": ["src/locales/[locale]/*.json"]
},
"markdown": {
"include": ["docs/[locale]/*.md"]
}
}
}
С помощью параллельной обработки эти 500 задач распределяются между рабочими процессами вместо последовательной обработки.
Целевой процессинг
Для крупных проектов вы можете обрабатывать определённые части вместо всего проекта сразу:
Обработка определённых языков:
npx lingo.dev@latest run --locale es --locale fr
Обработка определённых типов файлов:
npx lingo.dev@latest run --bucket json
Обработка определённых файлов:
npx lingo.dev@latest run --file components/header
Этот выборочный процессинг полезен для постепенных обновлений в процессе разработки.
Интеграция с CI/CD
Крупные проекты выигрывают от автоматизированных рабочих процессов перевода с использованием GitHub Actions или других систем CI/CD.
Пример рабочего процесса GitHub Actions:
name: Lingo.dev Localization
on:
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
localize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
Этот рабочий процесс обрабатывает переводы на выделенных ветках, сохраняя работу с переводами отдельно от разработки.
Рабочий процесс на основе веток
Для крупных проектов используйте выделенные ветки для работы с переводами:
Создание ветки для перевода:
git checkout main
git checkout -b localize/content-update
# Внесите изменения в контент
git push -u origin localize/content-update
Запуск перевода через GitHub Actions:
- Перейдите на вкладку Actions в репозитории
- Выберите рабочий процесс "Lingo.dev Localization"
- Запустите рабочий процесс на вашей ветке перевода
- Проверьте и объедините переведённый контент
Этот подход обеспечивает чёткое разделение между изменениями контента и процессом перевода.
Учет производительности
Системные ресурсы:
- Параллельная обработка использует больше ресурсов процессора и памяти
- Следите за производительностью системы при высоких настройках параллелизма
- Облачные CI/CD-раннеры эффективно обрабатывают параллельные задачи
Ограничения API:
- Высокий параллелизм может вызвать ограничения скорости
- Начните с настроек по умолчанию и корректируйте их на основе производительности
- Движок Lingo.dev автоматически обрабатывает ограничения скорости
Файловая система:
- Крупные проекты генерируют множество файлов перевода
- Используйте .gitignore для временных файлов, если это необходимо
- Зафиксируйте файл
i18n.lock
для отслеживания изменений контента
Организация проекта
Разделение на бакеты:
{
"buckets": {
"app": {
"include": ["src/locales/[locale].json"]
},
"marketing": {
"include": ["marketing/[locale]/*.json"]
},
"docs": {
"include": ["docs/[locale]/*.md"]
}
}
}
Разделение на бакеты позволяет целенаправленно обрабатывать разные области контента.
Структура файлов:
project/
src/locales/ # Контент приложения
marketing/ # Маркетинговый контент
docs/ # Документация
i18n.json # Конфигурация
i18n.lock # Отслеживание контента
Организованная структура делает управление крупными проектами удобным и позволяет избирательно обрабатывать контент.
Стратегии масштабирования
Инкрементальная обработка:
- Используйте lockfile для обработки только изменённого контента
- Обновляйте конкретные языки или бакеты по мере необходимости
- Интегрируйте с CI/CD для автоматических инкрементальных обновлений
Рабочие процессы команды:
- Используйте перевод на основе веток для совместной работы
- Отделяйте изменения контента от работы с переводами
- Проверяйте переводы перед слиянием в продакшн
Оптимизация ресурсов:
- Настраивайте параллельность обработки в зависимости от возможностей системы
- Используйте облачные раннеры для тяжёлых рабочих нагрузок
- Отслеживайте время обработки и оптимизируйте конфигурации бакетов