Projets de grande envergure

La CLI Lingo.dev fournit des optimisations de performance et des stratégies de workflow pour les projets de localisation à grande échelle comportant des centaines de milliers de clés de traduction, plusieurs langues et des structures de contenu complexes.

Pour les projets avec un contenu étendu, la CLI offre un traitement parallèle et une intégration CI/CD pour gérer efficacement la traduction à grande échelle.

Traitement parallèle

La CLI Lingo.dev traite les projets de grande envergure plus rapidement en utilisant des workers parallèles qui gèrent plusieurs tâches de traduction simultanément.

Activer le traitement parallèle :

npx lingo.dev@latest run

Cela distribue les tâches de traduction sur plusieurs workers, réduisant considérablement le temps de traitement pour les projets de grande envergure.

Contrôler la concurrence des workers :

npx lingo.dev@latest run --concurrency 16

La concurrence par défaut est de 10 workers. Des valeurs plus élevées traitent plus de tâches simultanément mais peuvent atteindre les limites de débit de l'API.

Fonctionnement du traitement parallèle

La CLI crée un pool de workers qui traite les tâches de traduction de manière concurrente tout en prévenant la corruption des fichiers :

  1. Distribution des tâches — Décompose la localisation en tâches individuelles par locale et par fichier
  2. Allocation des workers — Attribue les tâches aux workers disponibles en utilisant l'équilibrage de charge
  3. Prévention des conditions de concurrence — Utilise des verrous de système de fichiers pour éviter les conflits lorsque plusieurs workers accèdent aux mêmes fichiers
  4. Suivi de la progression — Rapporte la progression en temps réel sur tous les workers

Exemple pour les projets de grande envergure :

// Project with 50 files across 10 languages = 500 translation tasks
{
  "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"]
    }
  }
}

Avec le traitement parallèle, ces 500 tâches sont distribuées entre les workers au lieu d'être traitées séquentiellement.

Traitement ciblé

Pour les projets de grande envergure, vous pouvez traiter des parties spécifiques au lieu de tout traiter en une seule fois :

Traiter des langues spécifiques :

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

Traiter des types de fichiers spécifiques :

npx lingo.dev@latest run --bucket json

Traiter des fichiers spécifiques :

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

Ce traitement sélectif est utile pour les mises à jour incrémentielles pendant le développement.

Intégration CI/CD

Les grands projets bénéficient de workflows de traduction automatisés utilisant GitHub Actions ou d'autres systèmes CI/CD.

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

Ce workflow traite les traductions sur des branches dédiées, en gardant le travail de traduction séparé du développement.

Workflow basé sur les branches

Pour les grands projets, utilisez des branches dédiées pour le travail de traduction :

Créer une branche de traduction :

git checkout main
git checkout -b localize/content-update
# Make content changes
git push -u origin localize/content-update

Déclencher la traduction via GitHub Actions :

  1. Accédez à l'onglet Actions du dépôt
  2. Sélectionnez le workflow « Lingo.dev Localization »
  3. Exécutez le workflow sur votre branche de traduction
  4. Examinez et fusionnez le contenu traduit

Cette approche fournit une séparation claire entre les modifications de contenu et le traitement de la traduction.

Considérations de performance

Ressources système :

  • Le traitement parallèle utilise plus de CPU et de mémoire
  • Surveillez les performances du système avec des paramètres de concurrence élevés
  • Les runners CI/CD cloud gèrent efficacement les charges de travail parallèles

Limites de débit API :

  • Une concurrence plus élevée peut déclencher une limitation de débit
  • Commencez avec les paramètres par défaut et ajustez en fonction des performances
  • Lingo.dev Engine gère automatiquement la limitation de débit

Système de fichiers :

  • Les grands projets génèrent de nombreux fichiers de traduction
  • Utilisez .gitignore pour les fichiers temporaires si nécessaire
  • Commitez le fichier i18n.lock pour le suivi du contenu

Organisation du projet

Séparation des buckets :

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

Des buckets séparés permettent un traitement ciblé de différentes zones de contenu.

Structure de fichiers :

project/
  src/locales/           # Application content
  marketing/             # Marketing content
  docs/                  # Documentation
  i18n.json             # Configuration
  i18n.lock             # Content tracking

Une structure organisée rend les grands projets gérables et permet un traitement sélectif.

Stratégies de mise à l'échelle

Traitement incrémental :

  • Utilisez le fichier de verrouillage pour traiter uniquement le contenu modifié
  • Mettez à jour des langues ou des buckets spécifiques selon les besoins
  • Combinez avec CI/CD pour des mises à jour incrémentielles automatisées

Flux de travail d'équipe :

  • Utilisez la traduction basée sur les branches pour la collaboration
  • Séparez les modifications de contenu du travail de traduction
  • Révisez les traductions avant de fusionner en production

Optimisation des ressources :

  • Ajustez la concurrence en fonction des capacités du système
  • Utilisez des exécuteurs cloud pour les charges de travail de traitement intensives
  • Surveillez les temps de traitement et optimisez les configurations de buckets