Крупные проекты

Обновлено: в прошлом квартале · 1 мин чтения

Устаревшее

Эта документация охватывает устаревший CLI (v0). Актуальная версия — CLI v1. Перейти к актуальной документации CLI

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

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

CLI распределяет задачи перевода между несколькими воркерами. По умолчанию используется 10 воркеров:

bash
npx lingo.dev@latest run

Для крупных проектов можно увеличить уровень параллелизма:

bash
npx lingo.dev@latest run --concurrency 20

Если в проекте 50 файлов и 10 языков (500 задач перевода), параллельная обработка выполняет их одновременно, а не по очереди. Подробнее об архитектуре воркеров см. в разделе Parallel Processing.

Точечная обработка#

Обрабатывайте отдельные части проекта, а не весь проект целиком:

bash
# Specific languages
npx lingo.dev@latest run --target-locale es --target-locale fr

# Specific file format
npx lingo.dev@latest run --bucket json

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

# Specific keys
npx lingo.dev@latest run --key welcome.title

Эти параметры можно комбинировать — --force --bucket json --target-locale es заново переводит весь JSON-контент только на испанский язык.

Интеграция с CI/CD#

Автоматизируйте перевод при каждом push с помощью GitHub Actions:

yaml
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 }}

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

Организация бакетов#

Разделяйте разные типы контента по отдельным бакетам для точечной обработки:

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}

Это позволяет обрабатывать документацию и контент приложения независимо: --bucket markdown переводит только документацию.

Что дальше#