Große Projekte

Lingo.dev CLI bietet Leistungsoptimierungen und Workflow-Strategien für umfangreiche Lokalisierungsprojekte mit hunderttausenden von Übersetzungsschlüsseln, mehreren Sprachen und komplexen Inhaltsstrukturen.

Für Projekte mit umfangreichem Content bietet die CLI parallele Verarbeitung und CI/CD-Integration, um Übersetzungen effizient im großen Maßstab zu bewältigen.

Parallele Verarbeitung

Lingo.dev CLI verarbeitet große Projekte schneller durch parallele Worker, die mehrere Übersetzungsaufgaben gleichzeitig bearbeiten.

Parallele Verarbeitung aktivieren:

npx lingo.dev@latest run

Dies verteilt Übersetzungsaufgaben auf mehrere Worker und reduziert die Verarbeitungszeit für große Projekte erheblich.

Worker-Parallelität steuern:

npx lingo.dev@latest run --concurrency 16

Die Standard-Parallelität beträgt 10 Worker. Höhere Werte verarbeiten mehr Aufgaben gleichzeitig, können jedoch API-Ratenlimits erreichen.

Funktionsweise der parallelen Verarbeitung

Die CLI erstellt einen Worker-Pool, der Übersetzungsaufgaben parallel verarbeitet und gleichzeitig Dateibeschädigungen verhindert:

  1. Aufgabenverteilung — Unterteilt die Lokalisierung in einzelne Aufgaben pro Sprache und Datei
  2. Worker-Zuweisung — Weist Aufgaben verfügbaren Workern mittels Lastausgleich zu
  3. Race-Condition-Prävention — Verwendet Dateisystem-Sperren, um Konflikte zu vermeiden, wenn mehrere Worker auf dieselben Dateien zugreifen
  4. Fortschrittsverfolgung — Meldet Echtzeit-Fortschritte über alle Worker hinweg

Beispiel für große Projekte:

// Projekt mit 50 Dateien in 10 Sprachen = 500 Übersetzungsaufgaben
{
  "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"]
    }
  }
}

Mit paralleler Verarbeitung werden diese 500 Aufgaben auf Worker verteilt, anstatt sie sequentiell zu verarbeiten.

Gezielte Verarbeitung

Für große Projekte können Sie spezifische Teile anstatt alles auf einmal verarbeiten:

Verarbeitung bestimmter Sprachen:

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

Verarbeitung bestimmter Dateitypen:

npx lingo.dev@latest run --bucket json

Verarbeitung bestimmter Dateien:

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

Diese selektive Verarbeitung ist nützlich für inkrementelle Updates während der Entwicklung.

CI/CD-Integration

Große Projekte profitieren von automatisierten Übersetzungs-Workflows mit GitHub Actions oder anderen CI/CD-Systemen.

GitHub Actions Workflow:

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

Dieser Workflow verarbeitet Übersetzungen auf dedizierten Branches und hält die Übersetzungsarbeit getrennt von der Entwicklung.

Branch-basierter Workflow

Für große Projekte sollten dedizierte Branches für die Übersetzungsarbeit verwendet werden:

Übersetzungs-Branch erstellen:

git checkout main
git checkout -b localize/content-update

# Inhaltsänderungen vornehmen

git push -u origin localize/content-update

Übersetzung über GitHub Actions auslösen:

  1. Navigieren Sie zum Repository-Actions-Tab
  2. Wählen Sie den "Lingo.dev Localization"-Workflow
  3. Führen Sie den Workflow auf Ihrem Übersetzungs-Branch aus
  4. Überprüfen und mergen Sie die übersetzten Inhalte

Dieser Ansatz bietet eine klare Trennung zwischen Inhaltsänderungen und Übersetzungsverarbeitung.

Leistungsüberlegungen

Systemressourcen:

  • Parallele Verarbeitung nutzt mehr CPU und Arbeitsspeicher
  • Überwachen Sie die Systemleistung bei hohen Nebenläufigkeitseinstellungen
  • Cloud-CI/CD-Runner bewältigen parallele Workloads effizient

API-Ratenbegrenzungen:

  • Höhere Nebenläufigkeit kann Ratenbegrenzungen auslösen
  • Beginnen Sie mit Standardeinstellungen und passen Sie diese basierend auf der Leistung an
  • Die Lingo.dev Engine handhabt Ratenbegrenzungen automatisch

Dateisystem:

  • Große Projekte erzeugen viele Übersetzungsdateien
  • Verwenden Sie .gitignore für temporäre Dateien, falls erforderlich
  • Committen Sie die Datei i18n.lock für die Inhaltsverfolgung

Projektorganisation

Bucket-Trennung:

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

Separate Buckets ermöglichen eine gezielte Verarbeitung verschiedener Inhaltsbereiche.

Dateistruktur:

project/
  src/locales/           # Anwendungsinhalte
  marketing/             # Marketinginhalte
  docs/                  # Dokumentation
  i18n.json             # Konfiguration
  i18n.lock             # Inhalts-Tracking

Eine organisierte Struktur macht große Projekte handhabbar und ermöglicht selektive Verarbeitung.

Skalierungsstrategien

Inkrementelle Verarbeitung:

  • Verwendung der Lockdatei zur Verarbeitung nur geänderter Inhalte
  • Aktualisierung spezifischer Sprachen oder Buckets nach Bedarf
  • Kombination mit CI/CD für automatisierte inkrementelle Updates

Team-Workflows:

  • Verwendung von Branch-basierter Übersetzung für Zusammenarbeit
  • Trennung von Inhaltsänderungen und Übersetzungsarbeit
  • Überprüfung von Übersetzungen vor dem Zusammenführen in die Produktion

Ressourcenoptimierung:

  • Anpassung der Nebenläufigkeit basierend auf Systemkapazitäten
  • Verwendung von Cloud-Runnern für rechenintensive Verarbeitungsaufgaben
  • Überwachung der Verarbeitungszeiten und Optimierung der Bucket-Konfigurationen